В конфигурации 1С:Управление торговлей (редакция 11.3) пользователи и разработчики нередко сталкиваются с ситуацией, когда в документе РеализацияТоваровУслуг выполняется ручная корректировка видов запасов для указания конкретного номера ГТД, однако после нажатия кнопки проведения все ручные правки сбрасываются, а номер ГТД очищается или перезаполняется автоматически. Разберем механизм работы видов запасов, выясним причины такого поведения платформы и рассмотрим практические способы решения проблемы.
Для понимания источника ошибки проанализируем внутреннюю архитектуру учета запасов в типовых решениях 1С:
ВидыЗапасов является служебной и расчетной. Перед проведением документа алгоритм типовой конфигурации сверяет строки табличной части Товары и скрытой табличной части ВидыЗапасов. Проверка выполняется по ключевым полям связи (ИдентификаторСтроки, СвязьПоСтрокеТабличнойЧасти), а также по реквизитам ЗаказКлиента, Цена, Сумма и количеству. Если при возврате данных из формы ручного редактирования реквизиты заказа или цен очищаются, система считает ручную разбивку некорректной, сбрасывает флаг ручной корректировки и заново рассчитывает виды запасов по алгоритму ФИФО.ТоварыОрганизаций. Если на момент проведения по выбранной комбинации (организация, номенклатура, склад, ГТД, страна) остаток отсутствует или равен нулю, алгоритм автоподбора отбрасывает указанный номер ГТД.Если проблема вызвана типовой ошибкой запроса подбора видов запасов, проанализируем и скорректируем код конфигурации или переопределим функцию через расширение конфигурации.
Откроем общий модуль ЗапасыСервер и найдем функцию ЗапросДанныеЗаполненияВидовЗапасов. В тексте запроса обратим внимание на условие отбора по остаткам:
// В типовом коде релиза 11.3.4:
// ГДЕ
// Остатки.КоличествоОстаток <> 0
// Корректировка: комментируем данное условие для корректного сопоставления
// | И Остатки.КоличествоОстаток <> 0
После отключения данной строки запрос перестает отсекать строки с нулевыми расчетными остатками при проверке соответствия ручных видов запасов строкам документа, благодаря чему флаг ручной корректировки сохраняется и номер ГТД не очищается при проведении.
Разберем ситуацию, когда программная ошибка отсутствует, но номер ГТД сбрасывается из-за отсутствия фактического остатка по регистрам учета:
КорректировкаВидовЗапасов для переноса остатка с другого номера ГТД.Если специфика бизнеса требует жесткого ручного контроля номеров ГТД непосредственно пользователями в строках документа, рассмотрим переход на учет по сериям:
Товары (или в форме выбора серий), что полностью исключает зависимость от расчетных механизмов табличной части ВидыЗапасов.Ошибки связки табличных частей и потери реквизитов ЗаказКлиента и Цена при межконтекстном взаимодействии формы ручной корректировки были устранены в последующих обновлениях конфигурации. Рекомендуется выполнить обновление до стабильных версий веток 11.4 или 11.5, где механизм видов запасов и контроля развернутого сальдо по ГТД был существенно оптимизирован.