..тем не менее дети все также тянут ручки к троиловым шашкам, а некоторые — и к атомным бомбам… Ну что же, дадим им поиграться… Реализуем в рамках типовой ТиС погашение платежей долгов клиентов не по принципу ФИФО, а по принципу привязки к «документам-основаниям»… Для этого надо внести небольшие коррективы в глобальный модуль в процедуру глДвижениеДолгов
.. в глобальном модуле смотрим процедуру глДвижениеДолгов()
от начала процедуры примерно 80-я строка
ВремВзаим.ВыгрузитьИтоги(ТаблИтогов,1,1); ТаблИтогов.Сортировать("+КредДокумент",1); // погашаем долги по ФИФО
в этом участке кода формируется простой список погашаемых долгов(документов), отсортированный по хронологии документов-долгов.
Сразу за этим кодом вставляем вот такой код:
//НАЧАЛО вот здесь вставляем код, который делает что-надо
Если глЕстьРеквизитШапки("ДокОснование", Конт.Вид()) <> 0 Тогда
//проверяем есть ли реквизит "ДокОснование"
Если Конт.ДокОснование.Выбран() <> 0 Тогда //проверяем указано ли основание поз = 0; Если ТаблИтогов.НайтиЗначение(Конт.ДокОснование,поз,"КредДокумент") > 0 Тогда
//по документу-основанию есть непогашенный долг
Если поз > 1 Тогда //основание где-то в глубине, стоит в общей очереди
ТаблИтогов.СдвинутьСтроку(1-поз,поз); КонецЕсли; //сдвиг основания вверх КонецЕсли; КонецЕсли; //выбрано основание
КонецЕсли; //по реквизиту шапки //КОНЕЦ вот здесь вставляем код, который делает что-надо
Вышеприведенный код приведен для частного случая — когда кредитный документ образует всего одну запись о долге (например, долг за товары). В общем случае, когда кредитный документ может образовывать несколько долгов (долг за товары, долг за услуги) — требуется творческая переработка данного кода 😉
…куда пойдет оставшаяся сумма платежа, если документ-основание по какой-либо причине уже оплачен частично — лично меня (при реализации вышеприведенного кода) как в пословице: «проблемы индейцев шерифа не волнуют»…
…В развитие выше приведенного кода можно предложить много чего интересного: например, если документ-основание уже оплачен частично — 100 руб накладная, 100 руб платеж, а по какой-то причине 20 руб по накладной уже получилось оплачено — СТОРНИРУЕМ 20 руб. ранее проведенной оплаты — бухгалтер же у нас супермозг — велел 100 рублей на накладную повесить — погашаем накладную на 100 руб, освободившиеся 20 руб. — или болтаются предоплатой (???) или идут в оплату следующих(???) неоплаченных накладных… о том как это показать по бухучету (сторнирование, перевод «освободившейся» оплаты в предоплату и т.д. и все действия по НДС, связанные с этим) — проблемы индейцев шерифа не волнуют…
Реализуем также другую хотелку: чтобы долги погашались не по ФИФО, не по документу основанию, а по хронологии дат оплат, указанных в качестве планируемых/ожидаемых в документах(долгах). Делаем так: в процедуре глДвижениеДолгов() строки кода
ВремВзаим.ВыгрузитьИтоги(ТаблИтогов,1,1); ТаблИтогов.Сортировать("+КредДокумент",1); // погашаем долги по ФИФО
заменяем на такое:
ВремВзаим.ВыгрузитьИтоги(ТаблИтогов,1,1); ТаблИтогов.НоваяКолонка("ДатаОплаты","Дата"); ТаблИтогов.ВыбратьСтроки(); Пока ТаблИтогов.ПолучитьСтроку()=1 Цикл
ТаблИтогов.ДатаОплаты = ТаблИтогов.КредДокумент.ДатаОплаты; //тут маленькая "засада" -разбираться самим
КонецЦикла; ТаблИтогов.Сортировать("+ДатаОплаты,+КредДокумент",1);
..
Все… Желаю успехов в труде и заработной плате!
ДА! Понравилось/пригодилось? Оставь благодарственный коммент автору и плюсани рейтинг…
Однако улыбнуло 🙂
Автору респект, чувствуется что накипело, да и как то знакомо всё… Плюсуем!
Автор, чего вам хотелось больше — написать про бухгалтеров или поделиться полезной информацией?
p.s. Лампочку капс лок лучше тушить. Уважайте читателя.
У меня работает точно такой же механизм уже год.
Клиент доволен, т.к. он получил то, что хотел.
Все нестыковки математически обоснованы и всегда можно объяснить почему система поступила именно так.
Да, ес-но нестыковки есть. Частичная оплата/возвраты/Оплата сразу нескольких накладных и т.п.
Здесь не уследишь.
Но даже если сбивается механизм долг-оплата, то при последующей работе он «выравнивается» и 1С снова начинает гасить те долги, на основании которых выпысываются кассовые приходники.
В любом ином случае (если клиент например платит больше чем долг по накладной), оплачивается долг по ФИФО.
Т.о. работает тот же стандартный механизм 1С.
Т.е. ЭТО не хуже. ничего мы не сломали.
А если все-таки клиент работает правильно и правильно заводятся накладные, то картина по долгам выстраивается идеальная.
К каждой накладной — свой приходник.
Еще раз повторяю, что мой клиент доволен именно таким механизмом.
Если все делать правильно — все красиво. Если нет — работает старый функционал.
ЗЫ: А кричать действительно не стоит. Клиент всегда прав. Любой каприз за ваши деньги. Можем из шкуры и семь шапок сшить 😉
для (4):
> Все нестыковки математически обоснованы и всегда можно объяснить почему система поступила именно так.
принципиально не вижу, где в описанном алгоритме оплаты по документам-основаниям «именно так поступает система» — там ведь именно на правильность РУЧНЫХ ДЕЙСТВИЙ бухгалтера все завязано… + «но даже если сбивается механизм долг-оплата, то при последующей работе он «выравнивается» — о чем выше я и писал: повторяю еще раз: буЛГахтера !!!_ПРОСТО НЕСПОСОБНЫ __ЦЕЛЕНАПРАВЛЕННО И АККУРАТНО__ ВЫПОЛНЯТЬ ВСЕ __ТРЕБУЕМЫЕ__ ДЕЙСТВИЯ ПРИ ВЕДЕНИИ ВЗАИМОРАСЧЕТОВ ПО ПРИНЦИПУ ПОГАШЕНИЯ «ДОКУМЕНТОВ-ОСНОВАНИЙ» — что и подтверждают ваши слова, которые вообщем-то и показывают, что если есть «нарушение» в распределении оплат — то «ну и фиг с ним»… не надо себя обманывать… Тем не менее, конечно, если клиент хочет — то он и получит…
..
Простая система ФИФО точно так же как и у вас — дает точную раскладку по документам-основаниям, если ВЕСТИ УЧЕТ, а не просто тупо вбивать в прогу… Практически везде более ранние документы оплачиваются клиентом РАНЬШЕ, если это не так, то в подавляющем (я подчеркиваю — в подавляющем!) колве случаев — ЭТО СОВЕРШЕННО ДРУГАЯ КРЕДИТНАЯ ЛИНИЯ, которая в рамках методики типовой ТиС (да и по упр.учету) должна быть в ПРОГЕ соответсвенно показана ДРУГИМ КРЕДИТНЫМ НАПРАВЛЕНИЕМ, т.е. «договором», например? отгружаем клиенту с отсрочкой платежа 10 дней, а вот тут отгрузка дефицитного товара, который оплачивается по факту (или с отсрочкой 3 дня) — РЕБЯТА, ЭТО ДРУГОЙ «ДОГОВОР» — это совершенно иные договоренности взаимоотношений — ну так и показывать его следует отдельной кредитной линией, и оплачивать (регистрировать оплату) ИМЕННО ПО ЭТОЙ КРЕДИТНОЙ ЛИНИИ… при таком подходе — не надо ничего корячить в типовых алгоритмах, все разложится именно так как юзер предполагает… НО! это требует дисциплины учета — а на это способны немногие… так что проще нафигячить всяких алгоритмов-хотелок, которые, тем более, все равно не дают ожидаемого результата (система поступила именно так, даже если сбивается механизм долг-оплата — почему он должен сбиться — ХОТЬ ТРЕСНИТЕ, НЕ ПОНИМАЮ!!!).
за капслоки — сорри, но это специально, чтобы все-таки понять — в чем причина, что типовая ФИФО не устраивает?
ИМХО для бухгалтеров, которые думают что умеют считать лучше чем компьютер, надо разрабатывать систему отчетов для разбора ситуаций, а не урезать функционал программы.
Что несомненно: 1С сделала существенный просчет в «методике» использования привязок оплат и документов-оснований — нигде явно и недвусмысленно не объяснив логику и методику использования в этом случае, т.е. тут самое вопиющее нарушение принципа «висивиг» — что вижу, то и получаю… — юзер видит привязанный док-основание и совершенно справедливо считает что именно этот док «погашается»…
для (3): даже не знаю… ценность приведенного сабжа сомнительна ;-), но раз кому-то нужно — пусть будет…
Вдогонку: вся проблема в том, что бухгалтер говорит: «Хочу!», разработчик делает и говорит: «пжлста, работает при вот таких условиях, вы должны делать то-то и то-то», бух говорит: «ОК!» и НЕ ДЕЛАЕТ! тихо отпихивая от себя мысль «надо работать» и лелея и выращивая в себе беса «прога ВСЕ СДЕЛАЕТ САМА, ОНА — ТЕЛЕПАТ»
для (6): а вот это не очевидно… внятных юзеров, которым такие отчеты помогут — единицы. остальные «тупые обезьянки», как бы они себя громко не называли…
поэтому в ряде случаев нужно сильно урезать функционал, уменьшая универсальность и давая возможность идти только по одной тропинке.. ибо обезъяна с гранатой — страшное дело…
Сколько с такой ситуацией сталкивался, разнос по документам нужен прежде всего отделу продаж.
Бухам все равно в какой последовательности и как приходят оплаты.
У них другие задачи.
(7) можете пальцем показать, где 1С «явно и недвусмысленно» что-либо объясняла?
Сразу извиняюсь, если вопрос ламерский, но у меня вылетает ошибка:
Если ТаблИтогов.НайтиЗначение(Конт.ДокОснование,поз,КредДокумент<<?>>) > 0
{Глобальный модуль(9999)}: Переменная не определена (КредДокумент)
ТиС 9.2
А не надо тупо копипастить.. изучать надо.. конспектировать…
😉
Поправил в коде, надо ..поз,»КредДокумент»)
Я завтра попробую, скажу результат. А автору респект, однозначно…
Грамотно!
Спасибо за потраченное на сие писание время.
(16) Завтра уже близится к финишу! где результат?
(17) Где деньги, Зин? 😉
Угу, по всем пунхтам согласен с Че, у меня в конфе такая же логика, + за потраченное время
«Пока ТаблИтогов.ПолучитьСтроку()=1 Цикл
ТаблИтогов.ДатаОплаты = ТаблИтогов.КредДокумент.ДатаОплаты; //тут маленькая «засада» -разбираться самим
КонецЦикла;»
—
Пока ТаблИтогов.ПолучитьСтроку()=1 Цикл
Если Метаданные.Документ(ТаблИтогов.КредДокумент.Вид()).РеквизитШапки(«ДатаОплаты»).Выбран()=1 Тогда
ТаблИтогов.реквОплаты=ТаблИтогов.КредДокумент.ДатаОплаты;
КонецЕсли;
КонецЦикла;
(20) я обычно ели неизвестна дата оплаты — ставлю датудок…
о! во второй главе упомянута реализация моей хотелки, а я не вкурсе и «+» моего нет почему-то…
Для моей ситуации самый простой и безболезненный способ. Автор даже отказался от вознаграждения
(0)
http://infostart.ru/profile/1767/projects/1149/image.php?img=694
http://infostart.ru/profile/1767/projects/1149/image.php?img=865
1.Никогда не думал что скажу это, но «не все бухи идиоты» — поэтому если хотят закрывать таким образом то это их право.
2.Не стоит ограничивать данную тему рамками «документа-основания» — вообще-то это называется «подокументная оплата», следовательно пользователю надо дать возможность полностью управлять оплатой а в статье приведен лишь частный случай, советую посмотреть:
так же советую посмотреть
http://infostart.ru/profile/1767/projects/1149/image.php?img=697
(приведена возможность закрывать авансы — реализацией, как закрывать определяется константой «Автоматически, По Документу-Основанию или Контролируемо пользователем»)
А что помешало поместить ЭТО в блог? не ты ли первый минусуешь всех, кто в программы кидает вопросы, размышления и разные сомнительные технологии?
Имхо, методика через чур слабовата. Чаще всего оплата приходит по частям или кучей. Боюсь, оно не сработает. Намного эффективнее использовать забалансовый счет. Реквизит основания в документе, на мой взгляд, не то, что плохо, оно даже вредно в контексте вопроса. ЧАсто поставленный вопрос решается простым и мудрым отчетом по типу моего «Кто нам должен» и «Кому мы должны»
(25) Читайте, блин, внимательно! какие забалансовые счета — обсуждение ведется в контексте ТиСа! Как приходит оплата — частями или кучей (как в штатном алгоритме так и в этом сабже) — абсолютно до лампочки… сработает нормально…
> ЧАсто поставленный вопрос решается простым и мудрым отчетом по типу моего «Кто нам должен» и «Кому мы должны»
НУ ТАК ПРО ТО И РЕЧЬ!
..соответсвенно вас сабж — не к месту — поставьте кто-нить ему -1 за этот коммент! 😉
данный сабж написан не от того чтобы навредить, а потому как КОМУ-ТО ИМЕННО ТАК И ХОЧЕТСЯ!!!
(24) голый трындеж! в блог имеет смысл размещать безпредметные обсуждения и идеи. Здесь — четкий код, бери и вставляй — чем ряд юзеров и воспользовался — поэтому в программах…
(23)
п.1 — полностью согласен. в сабже про то и речь.
но при этом давайте не забывать: на этом все по данным докам в ОБЩЕМ СЛУЧАЕ — не заканчивается!!!
п.2 — полностью согласен (особливо про частный случай), но если он «управляет» — что делает юзер (у вас в прогах?) если по доку от клиента пришла переплата — куда относит переплату?
куда относит излишек долга если по оплаченному доку прошел возврат? и т.д.
возможно я слабо акцентировал, так что еще раз: в целом по разноске оплат бухи сработают в целом ок, но очень большое сомнение, что при подокументной оплате кроме этих действий они смогут выполнить все остальные необходимые… хотя возможно и смогут… мой опыт не сильно большой но все же показывает.. что вся эта подокументная оплата — в большинстве случаев — фикция, так как при возвратах, взаимозачетах, возвратах денег и прочих… — вся эта подокументная оплата оч.быстро «сьезжает» и никто не отслеживает это… главное указать ВИЗУАЛЬНО… все остальное — фигня…
(26) за мой коммент я ожидаю, как минимум, +200, потому, как все-таки считаю использование реквизита-основания в сабже дурным тоном. ТиС так ТиС. Что мешает все завязать в регистЕр? И то, что здесь речь идет о ТиС — странно, если везде говорится о бухах и главбухах…
(28) мдя… повторюсь еще раз: именно на регистрах и сделана типовая схема учета взаиморасчетов. что вы еще хотите на регистрах сделать? и что в них запоминать? четко указываемую схему какой платеж какой док погашает? — чем это будет отличаться от схемы «документа-основания» — только тем, что сейчас док-основание СЛУЖИТ ДЛЯ ОБЛЕГЧЕНИЯ ЗАПОЛНЕНИЯ ДОКУМЕНТА ПЛАТЕЖА (а юзвери видя, привязку считают что платеж ПОГАШАЕТ ДОК-ОСНОВАНИЕ — что в корне неверно… вот эту «неверность», а вернее попытку ее нивелирования и реализует описанный сабж…), а предлагаемая вами схема будет являться четким указанием что погашать…? ну так это и описано в сабже, и в том числе в примерах, скриншотируемых в (23)…
…
…можете предложить автоматическую схему, которая при минимуме усилий со стороны буха/юзверя вела корректные взаиморасчеты с клиентом при всяческих телодвижениях…?
Ну, не знаю. Мож все и нормально.
О чем спор? Описаны полезняшки, которые кому-то очень помогают.
ИМХО: бухи должны закрыть так, чтобы платить меньше налогов — это их головная боль, другой вопрос если не они разносят оплату.
(32)
> ИМХО: бухи должны закрыть так, чтобы платить меньше налогов
Diamond, ты вроде неплохие программы пишешь. Может расскажешь нам, методику ухода от оплаты налогов (кстати, каких?) при «хитром» ведении взаиморасчетов?
(33) poppy, ты мну иногда так удивляешь! Никогда не сталкивалась со сдачей НДС? Типичный случай. Приходит бухша на подпись к директору с декларацией. Он смотрит и говорит: «Уууу! Много как. Сократи, пожалуйста, тысяч на 300». И она все пересчитывает и сокращает ВПОЛНЕ ЗАКОННО. Методика известна даже любому сопровожденцу более-менее продвинутому: играем с датами поставок, партиями, созваниваемся с поставщиками, согласовываем все, выписываем доки задним числом, даже корректируем закупочные цены. Более продвинутые методы — раскидываем по видам деятельности, фирмам, точкам.
Фирма А — оптовые продажи (НДС)
Фирма В — розница (вмененка)
Фирма А покупает кепку за 80 руб, продает всем по 200 руб, но фирме В по 180 руб, за то, что те в доках проводят 81 руб. Фирме В пофиг, посколько покупать, потому что они на вмененке. А фирма А, имея прибыль 100 руб, НДС платит только с 1 руб.
(34)
НДС уже давно расчитывается по-отгрузке. Оплатами можно только увеличить НДС. Ты об этом?
НДС зависит от цены реализации и цены закупки. Чем меньше между ними разница, тем меньше НДС. Для того и создают подставные фирмы.
Еще примерчЕг: 10 фирм на вмененке покупают товар и сливают в фирму, которая торгует с НДС. Причем, сливают так, чтобы для последней продажная цена на товар очень мало отличалась от закупочной. Понятно, что хозяин у всех 11 фирм один (регистрируются на сватов, бабушек, их котов…)
(37) > Чем меньше между ними разница, тем меньше НДС.
…а вот фиг! что-то там было в последнее время типа если к возмещению НДС = 100 тыс, а к уплате =90 тыс, то нифига ты не 10 тыс платишь.. а 90 .. и ждешь когда тебе 100 возместят… (возможно я что-то не так понял…)
Все так. Я это и имею в виду. Чем плохо возмещение?
(39) жлобством государства
(40) Да ладно! Всем ООО возмещают. У меня даже знакомый — предприниматель на НДС, все время ставит к возмещению тысяч 200-300 в конце года, хотя приписывает туда абсолютно все: от покупки кофеварки до интернет. Всегда государство возмещает.
(41) ну значит, вам повезло.. если в конце года тысяч 200-300… а если ежемесячно лимона на полтора-два… правда сейчас поквартально — но от этого не шибко легче…
(за скобками продолжение беседы — строго по задекларированному в (0) и способу решения задекларированного).
Братюня, там ещё бедулька. Поместить в начало ТЗ погашаемый кред.документ — это полумера. Потому что «размазывание» оплаты по ФИФО может зацепить кред.документы, которые тоже должны погашаться по ФИФО. Т.е. (0) надо бы дополнить удалением из таблицы строк, в которых есть кред.документы, имеющие подчиненные проведенные оплаты.
А кроме того, перенос на погашение по ФИФО излишка оплаты выбранного в оплате кред.документа несколько сомнителен. Если уж менеджер/бухгалтер берет на себя определение кредитного документа для оплаты, то дополнительно он должен быть проинформирован о том, что такой алгоритм работоспособен (без косяков) только в том случае, когда оплата соответствует задолженности (ну и дать ему возможность видеть подобный косяк — желательно красным жирным шрифтом). А оплату, которую компетентный работник принял решение привязать к конкретному кред.документу — тупо привязывать целиком, и пусть потом только попробует рассказать, что не понял ответственности принятого им решения, что не увидел красных жирных букв, и что программа работает плохо. Т.е. при реализации такой хотелки — не двигать выбранный к погашению кред.документ вверх, а удалять из таблицы все кроме этого кред.документа, а про излишек оплаты — орать жирно-красно и рекомендовать разделить оплату (ни в коем случае не авто-разделение, это решение ответственного работника о привязке — и осуществление сопутствующих работ также в его компетенции).
(0) а не проще глДвижениеДолгов поправить так:
//вставка+
//будем списывать по основанию документ Строка Выписки (расход), если он есть…
Если (Конт.Вид() = «СтрокаВыпискиРасход») Тогда
Если (Конт.ДокОснование.Выбран()=1 ) Тогда
ВремВзаим.УстановитьЗначениеФильтра(«КредДокумент»,Конт.ДокОснование,1);
КонецЕсли;
КонецЕсли;
//вставка-
// ************************** окончена установка фильтров ************
// установим общие для всех движений измерения
РегВзаим.Фирма = Фирма;
РегВзаим.Договор = Договор;
РегВзаим.КодОперации = КодОперации; // если меняем — восстановить обратно!
// ************************** установили ***
(43) и такой подход имеет место быть… если руководство НАМЕРЕНО бить лопатой по лицу, а не пускать на самотек…
(44) и так тоже можно, просто это чуть менее чем универсально.. 😉
публикация-летучий голландец? 🙂 дата свежая, а камменты старые. плюсов 49, а видно только один. мистика
Долго «втыкал», потом увидел: ТиС, семёрка… Бр-р, чур меня.
В УПП в принципе это реализовано (взаиморасчеты по заказам/счетам), но у нас бухгалтерия наоборот от этого хочет уходить, т.к. проблем много с авансами, перекидыванием долгов между счетами и т.д..
Когда-то давно на рошлой работе во франче просили в ТиС подобное сделать, я им объяснил примерно как в статье и отстали.
Сто раз уже так делал. Задача выгодная – занимает пол часа, берёшь минимум 8.
Клиент который просит оплату строго по кред.документам готов к сопутствующим сложностям и бить лопатой по лицу буЛГахтеров.
p.s. кстати делаю как написано (44), остаток, если что, на аванс
Удивлен.
Удивлен таким количеством именитых людей в такой теме…
Вообще лучше сразу все правильно подвязывать или списывать как поступают платежи
Сильно не пинайте !
Для данного случая можно сделать таблицу значений на форме документа прихода денег из 4х колонок: Пометка, КредДок, СуммаДок, СуммаСпиасния (как-то так). Туда по нажатию кнопки выгружать кредитные доки. Ну и галочками отмечать, какие кредитные доки закрывать данным приходом, а также вводить сумму списания по документам. Сразу убьём 2х зайцев: если денег пришло точно по кредитному документу, то просто его отметим. Если денег пришло больше — отметим, кредитный док, который нужно полностью списать и на который поместить остаток. В принципе и Пометка, не нужна: там где есть сумма — те доки и списываем.
(52) не пинаю.
1. в таком варианте: не взлетит: ТЗ на форме недоступна при программном проведении документа — она вообще отсутсвует как класс).
2.все ваши «расчеты» какие доки отметить — накрываются медным тазиком при малейшем изменении истории кредитных документов задним числом.
Вообщем, примерно по такому пути пошли на *-ых бухгалтериях.: в табличной части документа отмечают ся доки, на которые разносятся оплаты. И наплевать что там будет потом. То есть все опирается на «что пользователь сказал — так и делаем». Речь в публикации как раз о том, что пользователь в осноновном говорит «наобум».