При оформлении поступления товаров на основании предварительного заказа часто возникает необходимость строго ограничить количество принимаемой номенклатуры. В типовых решениях на платформе 1С:Предприятие 8 (например, в «1С:Управление торговлей») контроль непревышения объема заказа заложен на уровне статусов документов и механизмов распоряжений на поступление. Однако при переходе на конфигурацию «1С:Торговля и склад 7.7» (редакция 9.2) пользователи сталкиваются с тем, что документ поступления позволяет оприходовать любое количество товара, превышающее исходный заказ.
В этой статье разберем, как устроен типовой механизм работы с заказами поставщиков в «1С:Торговля и склад 7.7», почему типовые отчеты не показывают отрицательный остаток при пересортице и как доработать конфигурацию для реализации строгого контроля приемки.
Проанализируем, как типовая конфигурация обрабатывает взаиморасчеты и товарные остатки по заказам:
ЗаказыЗаявки (с измерениями Договор, Номенклатура, ЗаявкаПокупателя, ЗаказПоставщику).ПоступлениеТМЦ, введенного на основании заказа или содержащего ссылку на заказ, программа анализирует текущий остаток по регистру с помощью метода СводныйОстаток().ЗаказыЗаявки ровно до нуля. Все количество сверх заказа приходуется на склад в регистр ОстаткиТМЦ как свободный остаток без привязки к заказу поставщика.В типовой поставке ТиС 9.2 отсутствует функциональная опция или константа, запрещающая вводить и проводить поступление с превышением количества из заказа. Рассмотрим варианты доработки конфигурации для внедрения такого контроля.
Разберем наиболее надежный способ контроля — программную проверку остатков по регистру ЗаказыЗаявки непосредственно в процедуре ОбработкаПроведения() модуля документа ПоступлениеТМЦ.
Если в процессе проведения выясняется, что количество по строке накладной превышает невыполненный остаток по указанному заказу поставщика, проведение документа полностью отменяется с выводом информационного сообщения кладовщику или оператору.
Посмотрим на пример реализации данного алгоритма:
// В модуле документа ПоступлениеТМЦ внутри ОбработкаПроведения()
Если Выбран() = 1 Тогда
РегЗаказы = СоздатьОбъект("Регистр.ЗаказыЗаявки");
ВыбратьСтроки();
Пока ПолучитьСтроку() = 1 Цикл
Если ПустоеЗначение(ЗаказПоставщику) = 0 Тогда
ОстатокПоЗаказу = РегЗаказы.СводныйОстаток(Договор, Номенклатура, , ЗаказПоставщику, "Количество");
Если Количество > ОстатокПоЗаказу Тогда
Сообщить("Ошибка проведения: по позиции '" + СокрЛП(Номенклатура.Наименование) +
"' превышено количество по заказу! В документе: " + Количество +
", доступный остаток по заказу: " + ОстатокПоЗаказу, "!");
СтатусВозврата(0);
Возврат;
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЕсли;
При использовании данного способа кладовщик физически не сможет провести документ, содержащий лишние позиции, что исключает расхождения с контрактом или спецификацией.
На практике часто возникают ситуации, когда поставка с расхождениями согласована руководством, а кладовщику требуется оформить приход по факту. В этом случае жесткий запрет можно заменить на проверку прав пользователя с помощью функции НазваниеНабораПрав().
Разберем, как организовать такую схему:
СтатусВозврата(0).
Если Количество > ОстатокПоЗаказу Тогда
Если НазваниеНабораПрав() = "Кладовщик" Тогда
Сообщить("У вас недостаточно прав для оприходования товара сверх заказа (" +
СокрЛП(Номенклатура.Наименование) + "). Обратитесь к менеджеру.", "!");
СтатусВозврата(0);
Возврат;
Иначе
Сообщить("Внимание: позиция '" + СокрЛП(Номенклатура.Наименование) +
"' оприходована сверх заказа на " + (Количество - ОстатокПоЗаказу) + " ед.", "i");
КонецЕсли;
КонецЕсли;
Чтобы кладовщик не вводил заведомо некорректные данные, полезно ограничить заполнение табличной части еще на этапе создания документа. Для этого переопределим процедуру ВводНаОсновании() в модуле формы документа ПоступлениеТМЦ.
Рассмотрим по шагам логику интерактивного ограничения:
ЗаказПоставщику анализируются актуальные остатки по регистру ЗаказыЗаявки на текущий момент времени.ПриНачалеРедактированияСтроки() или ПриЗаписи() формы документа устанавливается проверка, запрещающая вручную увеличивать количество выше допустимого предела без снятия флага привязки к заказу.При работе в рамках строгого контрактного учета (госзакупки, поставки по 44-ФЗ/223-ФЗ) приемка объемов сверх спецификации запрещена законодательно. Если поставщик привез партию большего объема, чем указано в заказе, на практике применяются следующие подходы:
ВозвратПоставщику на излишек, что позволяет скорректировать взаиморасчеты в учетной системе.