При оформлении документов продажи или списания в программе 1С:Управление торговлей (редакция 11), а также в смежных решениях 1С:ERP и 1С:Комплексная автоматизация 2, пользователи часто сталкиваются с необходимостью ручной корректировки видов запасов. Это требуется, когда автоматическая система распределения партий выбирает не тот номер ГТД (Государственной таможенной декларации), который фактически должен быть списан. Однако при попытке ручного указания нужного номера ГТД в форме «Виды запасов» система при проведении документа сбрасывает или очищает внесенные изменения. Давайте подробно разберем, почему так происходит, и рассмотрим рабочие способы решения этой проблемы.
Для того чтобы эффективно решить проблему, нам необходимо проанализировать механизмы, заложенные разработчиками в логику проведения документов в 1С. Выделим четыре основные причины автоматического сброса видов запасов:
Товары и служебной таблицы Виды запасов. При ручном изменении видов запасов из таблицы неявно очищаются некоторые технические параметры (такие как привязка к заказам или аналитика учета). При попытке проведения система видит несоответствие между основной ТЧ и ТЧ видов запасов, признает ручной ввод некорректным и инициирует принудительное перезаполнение. За эту проверку отвечает модуль ЗапасыСервер и функция ЗапросДанныеЗаполненияВидовЗапасов.Товары.Перед тем как приступать к программным изменениям, давайте проверим остатки товаров организации в разрезе номеров ГТД. Для этого выполним следующие шаги:
Реализация товаров и услуг.Если нам критически важно провести документ с ГТД «в минус» (например, когда поступление еще не заведено в базу, а продажу нужно оформить прямо сейчас), временно отключим контроль остатков организаций:
Важное замечание: Отключение контроля остатков в персональных настройках пользователя («на время сеанса») часто не решает проблему, поскольку проведение документов в современных конфигурациях может выполняться в фоновом режиме на сервере, где настройки текущего пользователя не применяются. Поэтому изменять параметр контроля необходимо именно глобально.
Если система упорно не хочет сохранять введенный ГТД при интерактивном редактировании, мы можем применить проверенный административный обходной путь (так называемый «костыль»), который работает без изменения конфигурации. Для этого нам понадобится стандартная обработка ЗагрузкаДанныхИзТабличногоДокумента (ее можно скачать с официального диска ИТС или аналогичных ресурсов).
Рассмотрим алгоритм действий по шагам:
ЗагрузкаДанныхИзТабличногоДокумента.Виды запасов нашего документа. Нам потребуется сопоставить ключевые поля: номенклатура, количество, организация и номер ГТД.Если ручные корректировки требуются регулярно и пользователи тратят слишком много времени на обходные пути, мы можем применить программное решение. Напишем небольшое расширение конфигурации, которое будет блокировать автоматическое перезаполнение видов запасов принудительно.
Для этого перехватим процедуру ПередЗаписью документа продажи. Проанализируем пример кода, который предотвращает сброс ручных настроек:
&ПередЗаписью
Процедура Расш_ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
// Проверим, открыт ли режим ручной корректировки видов запасов в документе
Если ЭтотОбъект.ДополнительныеСвойства.Свойство("ПерезаполнитьВидыЗапасов") Тогда
// Если пользователь взвел флаг ручной корректировки, запрещаем перезаполнение на сервере
Если ЭтотОбъект.ВидыЗапасовУказаныВручную Тогда
ЭтотОбъект.ДополнительныеСвойства.Вставить("ПерезаполнитьВидыЗапасов", Ложь);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Данный код принудительно сообщает платформе, что перезаполнять ТЧ Виды запасов по алгоритмам FIFO не требуется, поскольку пользователь явно зафиксировал свой выбор. Это решает проблему кардинально для всех новых документов.
Если в вашей организации используется учет по сериям, и именно в сериях настроена идентификация номеров ГТД, то изменять ГТД в «Видах запасов» бесполезно. Давайте разберем правильный порядок действий в таком случае:
Товары в документе продажи.Используя предложенные методики, мы сможем гарантированно добиться сохранения корректных данных по номерам ГТД в учете и избежать ошибок при последующем закрытии месяца и расчете себестоимости.