Встречается ситуация, когда на момент оформления документа Заказ поставщику в 1С:ERP договор с контрагентом еще не согласован или не подписан. Менеджеры или закупщики создают заказ, чтобы зафиксировать потребность, а договор появляется позже, уже в документе Приобретение товаров и услуг, который кладовщик создает на основании этого заказа.
Это порождает проблему: система формирует объект расчетов на основании заказа, и эта аналитика "тянется" по всей цепочке документов. Возникает идея — а что если отключить формирование движений по регистрам взаиморасчетов в Заказе поставщику и формировать объект расчетов только в момент поступления? Проанализируем, почему это плохая идея и какие существуют безопасные и корректные альтернативы.
Прежде чем вносить кардинальные изменения в типовую конфигурацию, разберем, какую роль выполняет Объект расчетов и почему его последовательность так важна. Объект расчетов — это сквозная аналитика, которая как невидимая нить связывает всю цепочку хозяйственных операций с поставщиком.
Эта цепочка может выглядеть так:
Заказ поставщику (создается первый объект расчетов).Заявка на расходование ДС (ссылается на объект расчетов из заказа).Списание безналичных ДС (оплата аванса, которая также привязывается к этому объекту расчетов).Приобретение товаров и услуг (поступление товара, которое должно зачесть аванс по тому же объекту расчетов).Если вы "выпилите" движения из Заказа поставщику и заставите Приобретение товаров и услуг создавать свой собственный объект расчетов (например, на основании договора), вы разорвете эту логическую цепь. Это приведет к серьезным последствиям:
Ведомость расчетов с поставщиками или Карточка расчетов, не смогут построить корректную цепочку. У вас будет "висеть" аванс по одному объекту расчетов (заказу) и долг по другому (поступлению или договору). Система не поймет, что это части одной и той же сделки.Объект расчетов. Придется выполнять зачеты вручную с помощью документа Корректировка задолженности, что усложняет учет и повышает риск ошибок.Акт сверки взаиморасчетов также опирается на объекты расчетов для сопоставления операций. При их расхождении сверка с поставщиком превратится в сложную задачу по ручному сопоставлению данных.Вывод: изменять базовый механизм формирования объектов расчетов — крайне рискованный путь, который нарушит целостность данных в системе. Гораздо правильнее адаптировать бизнес-процессы или использовать менее инвазивные доработки.
Рассмотрим несколько рабочих и безопасных способов, как наладить учет в ситуации, когда договор появляется не сразу.
Это самый простой и надежный с точки зрения доработки вариант. Идея заключается в том, чтобы не ломать систему, а заставить пользователей работать в ней правильно. Вы стимулируете менеджеров своевременно вносить информацию в исходный документ.
Как реализовать:
ОбработкаПроведения для документа Приобретение товаров и услуг.Заказа поставщику, то необходимо проверить, заполнен ли реквизит Договор в самом заказе.Пример кода в модуле подписки на событие:
Процедура ОбработкаПроведенияПриобретенияТоваровУслуг(Источник, Отказ, РежимПроведения) Экспорт
// Проверяем, что документ проводится не в режиме отмены проведения
Если РежимПроведения = РежимПроведенияДокумента.Оперативный
Или РежимПроведения = РежимПроведенияДокумента.Неоперативный Тогда
// Проверяем, что есть документ-основание и это Заказ поставщику
Если ЗначениеЗаполнено(Источник.ДокументОснование)
И ТипЗнч(Источник.ДокументОснование) = Тип("ДокументСсылка.ЗаказПоставщику") Тогда
// Получаем объект заказа-основания
ЗаказОснование = Источник.ДокументОснование.ПолучитьОбъект();
// Проверяем, заполнен ли договор в заказе
Если НЕ ЗначениеЗаполнено(ЗаказОснование.Договор) Тогда
// Выводим сообщение пользователю и отменяем проведение
Сообщение = Новый СообщениеПользователю();
Сообщение.Текст = "Проведение документа невозможно! В заказе-основании №"
+ ЗаказОснование.Номер
+ " от " + Формат(ЗаказОснование.Дата, "ДФ=dd.MM.yyyy")
+ " не указан договор. Пожалуйста, укажите договор в заказе и повторите попытку.";
Сообщение.Сообщить();
Отказ = Истина;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Такая доработка заставит кладовщика обратиться к менеджеру, чтобы тот указал договор в заказе, после чего вся дальнейшая цепочка документов будет формироваться корректно.
Этот метод не требует программирования и основан на изменении бизнес-процесса. Его суть — в создании временного, служебного договора, который будет использоваться на начальном этапе.
Как организовать процесс:
Договоры контрагентов создайте для поставщика специальный договор с наименованием, например, "Рамочный договор" или "Договор на согласовании".Заказа поставщику, когда основного договора еще нет, указывают этот "рамочный" договор.Объект расчетов, по нему можно проводить авансовые платежи.Заказ поставщику и меняет "рамочный" договор на основной.Приобретение товаров и услуг и последующих документах также указывается этот "рамочный" договор. Это не нарушает учет, так как вся цепочка операций будет связана одним объектом расчетов, а аналитика по конкретным договорам будет доступна в отчетах. При необходимости можно будет сделать корректировку задолженности для переноса расчетов на основной договор.Можно даже автоматизировать создание такого технического договора при проведении заказа, если договор не указан, как было предложено в обсуждении.
Если Заказ поставщику по факту используется не как финансовый документ, а как внутренняя заявка на закупку, то логично использовать для этого более подходящий инструмент, который не делает движений по регистрам взаиморасчетов.
Схема процесса:
Заказ поставщику, а другой документ. Это может быть типовой документ (например, в некоторых конфигурациях есть "Заявка на закупку") или специально созданный в расширении документ "Потребность в МТО". Этот документ не делает никаких движений по регистрам, его цель — просто сигнализировать о потребности.Заказ поставщику, в котором уже заполнены все необходимые реквизиты, включая Договор.Этот подход наиболее методологически верный, так как он разделяет внутренние процессы компании (управление потребностями) и внешние финансовые обязательства (заказы и расчеты с поставщиками).
Еще один организационный метод, который можно усилить небольшой доработкой. В документе Заказ поставщику есть статусы, которые можно использовать для управления жизненным циклом заказа.
Пример настройки процесса:
Приобретение товаров и услуг можно только на основании заказа со статусом "К поступлению".Договор.Этот способ направляет пользователей и не позволяет им нарушать установленный порядок работы, обеспечивая полноту данных на каждом этапе.