Почему в 1С:УТ 10.3 обрезаются акцизные марки до 68 символов и как это исправить?

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

При работе с алкогольной продукцией в программе «1С:Управление торговлей 10.3» пользователи часто сталкиваются с критической проблемой: при запросе остатков по Регистру №3 ЕГАИС новые акцизные марки загружаются некорректно. Вместо положенных 150 символов система сохраняет только первые 68. Это делает невозможным дальнейшее списание продукции, проведение инвентаризации и корректное сопоставление данных с государственными системами. В данной статье мы подробно разберем причины возникновения этой ошибки и пошагово рассмотрим способы её устранения.

Причина проблемы: переход на поштучный учет (ЕГАИС 3.0)

Разберем ситуацию: исторически акцизные марки имели длину 68 символов. Именно этот стандарт был заложен в архитектуру ранних релизов УТ 10.3. Однако с введением поштучного учета в системе ЕГАИС формат марок изменился, и их длина увеличилась до 150 символов. Конфигурации, находящиеся на старых релизах или имеющие кастомизированные модули, продолжают использовать старое ограничение длины строки, что приводит к автоматическому отсечению «лишних» символов при записи данных в базу.

Проанализируем последствия: если марка обрезана, она становится невалидной. При попытке отправить акт списания или передать данные о продаже в УТМ (Универсальный транспортный модуль), система выдаст ошибку «Проверка штрихкода (неверная длина)», так как 68-символьный код не соответствует реальному 150-символьному коду в базе ЕГАИС.

Способ 1. Изменение длины реквизитов в метаданных

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

  1. Откроем дерево метаданных и найдем документ ОтчетЕГАИС.
  2. Перейдем в табличную часть АкцизныеМарки.
  3. Найдем реквизит КодАкцизнойМарки.
  4. В свойствах реквизита изменим длину строки с 68 на 150 (или более, рекомендуется 200 для запаса).
  5. Аналогичную операцию необходимо провести для регистра сведений НоменклатураЕГАИС (или связанных регистров, где хранятся штрихкоды упаковок и марок).

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

Способ 2. Программный поиск ограничений в коде

Выясним причину, по которой даже после изменения метаданных марки могут продолжать обрезаться. В старых модулях интеграции с ЕГАИС разработчики часто использовали жесткое ограничение через функцию Лев(). Нам нужно проверить программный код на наличие таких конструкций.

Рассмотрим пример того, как это может выглядеть в коде процедур загрузки данных из XML:


// Пример ошибочного кода в старых релизах
НоваяСтрока.КодАкцизнойМарки = Лев(ТекстыNode.Значение, 68); 
// Программа принудительно берет только 68 символов слева

Чтобы исправить это, воспользуемся глобальным поиском по конфигурации (Ctrl+Shift+F) по ключевому слову КодАкцизнойМарки. Нам нужно найти все места, где происходит присваивание значения этому реквизиту. Если мы видим ограничение длины, его необходимо удалить или увеличить до 150.

Проанализируем ситуацию с временными таблицами. Часто при парсинге ответа от УТМ данные сначала попадают во временную таблицу. Если в описании типов этой таблицы указано ОбъявлениеОписаниеТипов("Строка", 68), данные будут обрезаны еще до попадания в основной документ.

Способ 3. Обновление конфигурации

Посмотрим на рекомендации технических специалистов. Хотя релиз 10.3.60.3 уже содержал некоторые исправления, полноценная и стабильная поддержка 150-символьных марок и корректная работа Регистра №3 появилась в более поздних версиях — начиная с 10.3.64.x и выше.

Если ваша база находится на поддержке, самым правильным решением будет последовательное обновление до актуального релиза. Это позволит избежать «ручного» вмешательства в логику работы с XML-пакетами ЕГАИС, которая постоянно меняется со стороны регулятора.

Влияние на обработку «Корректировка остатков ЕГАИС»

Многие пользователи используют обработку КорректировкаОстатковЕГАИСУТ для выравнивания данных. Если в вашей базе уже накоплены «битые» (обрезанные) марки, эта обработка будет работать некорректно. Она не сможет сопоставить марку из документа ОтчетЕГАИС с остатками, которые фактически числятся в регистре №3 на сервере Росалкогольрегулирования.

В результате программа будет пытаться либо списать несуществующие марки, либо поставить на баланс дубли. Поэтому после исправления длины реквизитов обязательно нужно перезапросить остатки по Регистру №3, чтобы старые записи обновились корректными данными.

Почему отчет «Остатки в регистре №3» может быть пустым?

Иногда возникает ситуация, когда после всех исправлений отчет всё равно приходит пустым. Разберем основные причины:

  1. Продукция на Регистре №1: Если алкоголь числится на первом регистре (склад) и не был переведен в поштучный режим, марок в третьем регистре просто не будет.
  2. Старые партии: Для продукции, поступившей до введения поштучного учета, марки в системе ЕГАИС могли не фиксироваться поштучно.
  3. Очередь запросов в УТМ: Если вы отправили запрос и сразу пытаетесь открыть отчет, данные могут еще не успеть загрузиться. Проверьте статус обработки входящих тикетов в УТМ.

Подведем итог: исправление проблемы обрезания марок требует комплексного подхода — от изменения структуры таблиц в конфигураторе до ревизии программного кода, отвечающего за разбор XML-ответов от ЕГАИС. После внесения правок всегда выполняйте тестовый запрос остатков, чтобы убедиться, что поле КодАкцизнойМарки теперь содержит полную строку из 150 символов.

← На главную