Как настроить контроль поступления товаров на основании заказа поставщику в 1С:Торговля и склад 7.7?

Программист 1С v7.7 Управленческий учет Торговля и дистрибуция
← На главную

При оформлении поступления товаров на основании предварительного заказа часто возникает необходимость строго ограничить количество принимаемой номенклатуры. В типовых решениях на платформе 1С:Предприятие 8 (например, в «1С:Управление торговлей») контроль непревышения объема заказа заложен на уровне статусов документов и механизмов распоряжений на поступление. Однако при переходе на конфигурацию «1С:Торговля и склад 7.7» (редакция 9.2) пользователи сталкиваются с тем, что документ поступления позволяет оприходовать любое количество товара, превышающее исходный заказ.

В этой статье разберем, как устроен типовой механизм работы с заказами поставщиков в «1С:Торговля и склад 7.7», почему типовые отчеты не показывают отрицательный остаток при пересортице и как доработать конфигурацию для реализации строгого контроля приемки.

Поведение типового механизма в «1С:Торговля и склад 7.7»

Проанализируем, как типовая конфигурация обрабатывает взаиморасчеты и товарные остатки по заказам:

  1. Учет заказов в регистре: учет заказанных и поступивших позиций ведется в регистре накопления ЗаказыЗаявки (с измерениями Договор, Номенклатура, ЗаявкаПокупателя, ЗаказПоставщику).
  2. Логика списания при проведении: при проведении документа ПоступлениеТМЦ, введенного на основании заказа или содержащего ссылку на заказ, программа анализирует текущий остаток по регистру с помощью метода СводныйОстаток().
  3. Обработка излишков: если в документе поступления указано больше товара, чем числится в заказе, типовой алгоритм закрывает остаток по регистру ЗаказыЗаявки ровно до нуля. Все количество сверх заказа приходуется на склад в регистр ОстаткиТМЦ как свободный остаток без привязки к заказу поставщика.
  4. Формирование отчетов: типовой отчет по исполнению заказов поставщиков выводит картину «Заказано — 10 шт., Поступило — 10 шт., Остаток — 0 шт.». Таким образом, переполученные позиции в отчетности по заказам не отображаются с отрицательным знаком, а излишек просто растворяется в общем складском остатке.

В типовой поставке ТиС 9.2 отсутствует функциональная опция или константа, запрещающая вводить и проводить поступление с превышением количества из заказа. Рассмотрим варианты доработки конфигурации для внедрения такого контроля.

Вариант 1. Жесткий запрет проведения при превышении остатка по заказу

Разберем наиболее надежный способ контроля — программную проверку остатков по регистру ЗаказыЗаявки непосредственно в процедуре ОбработкаПроведения() модуля документа ПоступлениеТМЦ.

Если в процессе проведения выясняется, что количество по строке накладной превышает невыполненный остаток по указанному заказу поставщика, проведение документа полностью отменяется с выводом информационного сообщения кладовщику или оператору.

Посмотрим на пример реализации данного алгоритма:


// В модуле документа ПоступлениеТМЦ внутри ОбработкаПроведения()
Если Выбран() = 1 Тогда
    РегЗаказы = СоздатьОбъект("Регистр.ЗаказыЗаявки");
    
    ВыбратьСтроки();
    Пока ПолучитьСтроку() = 1 Цикл
        Если ПустоеЗначение(ЗаказПоставщику) = 0 Тогда
            ОстатокПоЗаказу = РегЗаказы.СводныйОстаток(Договор, Номенклатура, , ЗаказПоставщику, "Количество");
            
            Если Количество > ОстатокПоЗаказу Тогда
                Сообщить("Ошибка проведения: по позиции '" + СокрЛП(Номенклатура.Наименование) + 
                         "' превышено количество по заказу! В документе: " + Количество + 
                         ", доступный остаток по заказу: " + ОстатокПоЗаказу, "!");
                СтатусВозврата(0);
                Возврат;
            КонецЕсли;
        КонецЕсли;
    КонецЦикла;
КонецЕсли;

При использовании данного способа кладовщик физически не сможет провести документ, содержащий лишние позиции, что исключает расхождения с контрактом или спецификацией.

Вариант 2. Разделение прав доступа на проведение с излишками

На практике часто возникают ситуации, когда поставка с расхождениями согласована руководством, а кладовщику требуется оформить приход по факту. В этом случае жесткий запрет можно заменить на проверку прав пользователя с помощью функции НазваниеНабораПрав().

Разберем, как организовать такую схему:

  1. Для рядовых пользователей (кладовщиков) проведение документа при обнаружении излишков блокируется с помощью СтатусВозврата(0).
  2. Для пользователей с повышенными привилегиями (менеджеры по закупкам, администраторы) документ проводится успешно, но в окно сообщений выдается предупреждение о факте перепоставки.

Если Количество > ОстатокПоЗаказу Тогда
    Если НазваниеНабораПрав() = "Кладовщик" Тогда
        Сообщить("У вас недостаточно прав для оприходования товара сверх заказа (" + 
                 СокрЛП(Номенклатура.Наименование) + "). Обратитесь к менеджеру.", "!");
        СтатусВозврата(0);
        Возврат;
    Иначе
        Сообщить("Внимание: позиция '" + СокрЛП(Номенклатура.Наименование) + 
                 "' оприходована сверх заказа на " + (Количество - ОстатокПоЗаказу) + " ед.", "i");
    КонецЕсли;
КонецЕсли;

Вариант 3. Интерактивный контроль при заполнении на основании

Чтобы кладовщик не вводил заведомо некорректные данные, полезно ограничить заполнение табличной части еще на этапе создания документа. Для этого переопределим процедуру ВводНаОсновании() в модуле формы документа ПоступлениеТМЦ.

Рассмотрим по шагам логику интерактивного ограничения:

  1. При создании поступления на основании ЗаказПоставщику анализируются актуальные остатки по регистру ЗаказыЗаявки на текущий момент времени.
  2. В табличную часть переносятся только те позиции, по которым еще числится непогашенный остаток, причем количество заполняется значением доступного остатка, а не исходным количеством заказа.
  3. Позиции с нулевым остатком в новый документ не добавляются вовсе.
  4. В процедуре ПриНачалеРедактированияСтроки() или ПриЗаписи() формы документа устанавливается проверка, запрещающая вручную увеличивать количество выше допустимого предела без снятия флага привязки к заказу.

Организационные и регламентные нюансы (223-ФЗ и 44-ФЗ)

При работе в рамках строгого контрактного учета (госзакупки, поставки по 44-ФЗ/223-ФЗ) приемка объемов сверх спецификации запрещена законодательно. Если поставщик привез партию большего объема, чем указано в заказе, на практике применяются следующие подходы:

  1. Корректировка первичных документов поставщиком: кладовщик принимает только разрешенный объем по заказу, составляет акт о расхождениях (например, по форме ТОРГ-2) и ожидает от поставщика исправленную накладную.
  2. Оформление возврата: если накладная поставщика уже подписана на полный объем, оформляется встречный документ ВозвратПоставщику на излишек, что позволяет скорректировать взаиморасчеты в учетной системе.
  3. Переход на современные конфигурации: если специфика предприятия требует развитого учета ордерных складов, партионного контроля поставок и гибкого контроля лимитов по договорам, целесообразно рассмотреть переход с устаревшей платформы 7.7 на современные конфигурации линейки 1С:Предприятие 8 («1С:Управление торговлей», «1С:Комплексная автоматизация» или «1С:ERP»).
← На главную