Не сохраняется ГТД при ручной корректировке видов запасов в 1С:УТ 11: причины и способы решения

Пользователь 1С v8.3 (Управляемые формы) 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

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

Выясняем причины: почему программа очищает ручной ввод ГТД?

Для того чтобы эффективно решить проблему, нам необходимо проанализировать механизмы, заложенные разработчиками в логику проведения документов в 1С. Выделим четыре основные причины автоматического сброса видов запасов:

  1. Влияние контроля остатков организаций. Это наиболее частая причина «штатного» поведения системы. Если в программе включена опция контроля остатков товаров организаций, при проведении документа система проверяет физическое наличие товара с указанным номером ГТД на остатках конкретной организации на момент проведения. Если программа обнаруживает нехватку (даже минимальную) или отсутствие остатка по выбранному ГТД, она автоматически заменяет его на первый подходящий по методу FIFO/FEFO или вовсе очищает поле.
  2. Программная ошибка синхронизации табличных частей. В ряде релизов (особенно в ветке 11.3 и ранних версиях 11.4) присутствует технический баг синхронизации табличной части Товары и служебной таблицы Виды запасов. При ручном изменении видов запасов из таблицы неявно очищаются некоторые технические параметры (такие как привязка к заказам или аналитика учета). При попытке проведения система видит несоответствие между основной ТЧ и ТЧ видов запасов, признает ручной ввод некорректным и инициирует принудительное перезаполнение. За эту проверку отвечает модуль ЗапасыСервер и функция ЗапросДанныеЗаполненияВидовЗапасов.
  3. Особенности учета по сериям. Если для номенклатуры настроена политика учета серий, в которой серии идентифицируют номера ГТД, то ручная корректировка непосредственно в таблице видов запасов блокируется логикой программы. В данном сценарии ГТД жестко связан с конкретной серией, выбранной в основной табличной части Товары.
  4. Специфика документов возврата. В документах возвратов товаров от клиентов виды запасов жестко наследуются от исходного документа реализации (поскольку возврат — это приходная операция). Изменение видов запасов вручную здесь не предусмотрено стандартной логикой, так как оно должно соответствовать исходному расходу.

Способ 1. Проверка остатков и временное отключение контроля

Перед тем как приступать к программным изменениям, давайте проверим остатки товаров организации в разрезе номеров ГТД. Для этого выполним следующие шаги:

  1. Откроем документ Реализация товаров и услуг.
  2. В подменю Отчеты выберем отчет Остатки товаров организаций.
  3. Проанализируем наличие свободного остатка по нужному номеру ГТД. Если остатка действительно нет, система не позволит провести документ с этим номером при включенном контроле.

Если нам критически важно провести документ с ГТД «в минус» (например, когда поступление еще не заведено в базу, а продажу нужно оформить прямо сейчас), временно отключим контроль остатков организаций:

  1. Перейдем в раздел НСИ и администрирование -> Финансовый результат и контроллинг.
  2. В группе настроек Учет товаров снимем флаг Контролировать остатки товаров организаций.
  3. Проведем документ с нужным ГТД вручную. После проведения документа настройку контроля остатков следует вернуть в исходное состояние во избежание пересортицы.

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

Способ 2. Использование внешней обработки «Загрузка данных из табличного документа»

Если система упорно не хочет сохранять введенный ГТД при интерактивном редактировании, мы можем применить проверенный административный обходной путь (так называемый «костыль»), который работает без изменения конфигурации. Для этого нам понадобится стандартная обработка ЗагрузкаДанныхИзТабличногоДокумента (ее можно скачать с официального диска ИТС или аналогичных ресурсов).

Рассмотрим алгоритм действий по шагам:

  1. Откроем нужный документ реализации и распроведем его.
  2. Перейдем в форму редактирования видов запасов (кнопка Еще -> Открыть виды запасов в табличной части товаров или соответствующая команда в зависимости от релиза).
  3. Установим признак Указать виды запасов вручную (это зафиксирует режим ручного ввода в документе).
  4. Запустим внешнюю обработку ЗагрузкаДанныхИзТабличногоДокумента.
  5. Настроим загрузку в табличную часть Виды запасов нашего документа. Нам потребуется сопоставить ключевые поля: номенклатура, количество, организация и номер ГТД.
  6. Заполним таблицу данными (можно скопировать их из Excel) и выполним загрузку в документ.
  7. Проведем документ. При таком способе загрузки программа сохраняет указанные вручную номера ГТД без принудительной очистки.

Способ 3. Программное решение через расширение (для разработчиков)

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

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


&ПередЗаписью
Процедура Расш_ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
    // Проверим, открыт ли режим ручной корректировки видов запасов в документе
    Если ЭтотОбъект.ДополнительныеСвойства.Свойство("ПерезаполнитьВидыЗапасов") Тогда
        // Если пользователь взвел флаг ручной корректировки, запрещаем перезаполнение на сервере
        Если ЭтотОбъект.ВидыЗапасовУказаныВручную Тогда
            ЭтотОбъект.ДополнительныеСвойства.Вставить("ПерезаполнитьВидыЗапасов", Ложь);
        КонецЕсли;
    КонецЕсли;
КонецПроцедуры

Данный код принудительно сообщает платформе, что перезаполнять ТЧ Виды запасов по алгоритмам FIFO не требуется, поскольку пользователь явно зафиксировал свой выбор. Это решает проблему кардинально для всех новых документов.

Способ 4. Корректировка серий номенклатуры

Если в вашей организации используется учет по сериям, и именно в сериях настроена идентификация номеров ГТД, то изменять ГТД в «Видах запасов» бесполезно. Давайте разберем правильный порядок действий в таком случае:

  1. Перейдем на вкладку Товары в документе продажи.
  2. Найдем колонку Серия для проблемного товара.
  3. Выберем или создадим серию, внутри которой прописан корректный номер ГТД.
  4. После выбора правильной серии система автоматически переформирует виды запасов и заполнит ГТД без необходимости ручного вмешательства.

Используя предложенные методики, мы сможем гарантированно добиться сохранения корректных данных по номерам ГТД в учете и избежать ошибок при последующем закрытии месяца и расчете себестоимости.

← На главную