При организации обмена данными между конфигурациями «Управление торговлей 10.3» и «Бухгалтерия предприятия 2.0» специалисты часто сталкиваются с ситуацией, когда документы Реализация товаров и услуг успешно загружаются, но остаются в состоянии «не проведен». При попытке провести их вручную в информационной базе приемнике (БП 2.0) система выдает предупреждение: «Для номенклатуры "..." по счету ГТД определен остаток 0 ед.».
В этой статье мы подробно разберем, почему программное проведение при обмене блокируется, в то время как ручное проведение может срабатывать (хотя и с предупреждением), и какие стратегии исправления ситуации существуют — от изменения настроек учета до корректировки программного кода и правил обмена.
Разберем ситуацию: когда вы нажимаете кнопку «ОК» в документе БП 2.0 вручную, система выводит предупреждение, но часто все равно записывает проведенный документ, если в настройках разрешены отрицательные остатки. Однако при автоматическом обмене используется программный метод Записать(РежимЗаписиДокумента.Проведение). В типовых правилах обмена встроен механизм проверки: если в процессе проведения возникли любые сообщения об ошибках или нехватке запасов, система устанавливает флаг Отказ = Истина. Это делается для того, чтобы не допустить рассинхронизации данных и появления «битых» остатков, которые потом крайне сложно выверять.
Ключевая проблема здесь кроется в забалансовом учете. В БП 2.0 учет импортных товаров ведется на специальном забалансовом счете ГТД. Проверка остатков по этому счету зачастую жестко прописана в коде и срабатывает даже тогда, когда общий контроль остатков по счету 41 отключен.
Проанализируем одну из самых распространенных причин — нарушение хронологии. Для корректного списания по счету ГТД крайне важно, чтобы документ поступления (приход на счет ГТД) был зафиксирован в системе строго раньше документа реализации.
Выясним, разрешено ли в вашей базе БП 2.0 списание при отсутствии остатков. Хотя это и не рекомендуется для правильного налогового учета, иногда это единственный способ оперативно запустить обмен.
Перейдем в меню: Предприятие — Настройка параметров учета — Запасы. Убедимся, установлена ли галочка «Разрешить списание запасов при отсутствии остатков по данным учета». Если она снята, то любая нехватка на счетах (включая забалансовый счет ГТД) приведет к отказу в проведении при обмене.
В УТ 10.3 номера ГТД хранятся в справочнике СерииНоменклатуры. Рассмотрим, как эти данные попадают в БП 2.0:
Номер ГТД в документе реализации в БП 2.0. Если оно заполнено значением, которого нет в остатках на счете ГТД (например, из-за опечатки в УТ или если поступление этого ГТД еще не было выгружено в БП), проведение не состоится.Если вы уверены, что контроль ГТД вам не требуется, и вы готовы пойти на изменение типового кода (учитывая риски при проверках налоговой), можно локализовать процедуру, отвечающую за проверку.
Проанализируем общий модуль УправлениеЗапасами. Именно в нем находится функция, которая выполняет списание по счету ГТД. Конкретная точка отказа обычно находится здесь:
Процедура ПроведениеДокументаСписанияПоСчетуГТД(СтруктураШапкиДокумента, ТаблицаПоТоварам, НаименованиеДокумента) Экспорт
// ... здесь идет запрос к остаткам счета ГТД ...
// Если остатка недостаточно, выводится сообщение и может устанавливаться Отказ
КонецПроцедуры
Рассмотрим вариант обхода. Вместо удаления кода лучше добавить условие, которое будет пропускать проверку только в режиме загрузки данных:
Если Объект.ОбменДанными.Загрузка Тогда
Возврат; // Пропускаем проверку при обмене
КонецЕсли;
Самый правильный путь с точки зрения поддержки конфигурации — не править код БП 2.0, а настроить Правила обмена данными в конфигурации «Конвертация данных».
В правилах для документа РеализацияТоваровУслуг в обработчике «После загрузки» можно прописать попытку проведения документа с игнорированием ошибок. Это позволит документу «пытаться» провестись, не прерывая весь процесс загрузки пакета данных.
Пример кода для обработчика в правилах обмена:
Попытка
Объект.Записать(РежимЗаписиДокумента.Проведение);
Исключение
Сообщить("Документ " + Объект + " не проведен: " + ОписаниеОшибки());
Объект.Записать(РежимЗаписиДокумента.Запись);
КонецПопытки;
Необходимо помнить, что забалансовый счет ГТД напрямую влияет на формирование книги покупок и книги продаж. Если вы проигнорируете отсутствие остатков и проведете документ «в минус» по ГТД, при выгрузке отчетности по НДС возникнут разрывы. Налоговые органы могут выявить несоответствие номеров ГТД в цепочке поставок. Поэтому самым надежным решением всегда остается выверка приходных документов: убедитесь, что все поступления из УТ 10.3 в БП 2.0 приходят вовремя и с корректно заполненными номерами ГТД в сериях.
Подведем итог: если вы столкнулись с этой проблемой, сначала проверьте настройки параметров учета и хронологию документов. Если данные в порядке, но ошибка сохраняется из-за специфики учета ГТД в БП 2.0, используйте модификацию правил обмена или (в крайнем случае) вмешательство в общий модуль УправлениеЗапасами.