Как восстановить акцизные марки из ЕГАИС и списать остатки при пустой базе 1С

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

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

В данной статье мы разберем, как восстановить данные о марках, используя стандартные запросы к УТМ, и как правильно организовать процесс массового списания, чтобы привести остатки в соответствие с фактическими. Для этой задачи есть программа автоматизации документооборота с ЕГАИС.

Метод 1. Запрос марок по идентификаторам справок (Регистр №3)

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

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

  1. Запрос остатков по Регистру №1. Первым делом мы отправляем запрос QueryRests. В ответ ЕГАИС присылает список всей продукции, которая числится за вашим FSRAR_ID, с указанием идентификаторов справок 2 (поле FB-xxxxxxxxxxxx).
  2. Идентификация поштучного товара. Важно понимать, что если товар числится на первом регистре, то марки к нему «привязаны» в виртуальном Регистре №3.
  3. Запрос марок (QueryRestBCode). Для каждой полученной справки необходимо отправить специальный запрос в УТМ — запрос марок по справке 2. Именно этот механизм позволяет выгрузить из системы ФСРАР все марки, которые числятся за данной партией на текущий момент.

Разберем пример логики обработки ответа от ЕГАИС на языке 1С. Предположим, мы уже получили XML с остатками и теперь итерируем по ним для создания запросов на марки:


Для Каждого СтрокаОстатков Из ТаблицаОстатковРегистра1 Цикл
    ИдентификаторСправки2 = СтрокаОстатков.Справка2;
    // Формируем запрос QueryRestBCode для каждой справки
    ЗапросКЕГАИС = СоздатьЗапросНаПолучениеМарок(ИдентификаторСправки2);
    ИнтеграцияЕГАИС.ОтправитьЗапросВУТМ(ЗапросКЕГАИС);
    
    // Помним про ограничение: запросы к УТМ имеют лимиты по времени
    // Рекомендуется делать паузу или использовать очередь заданий
КонецЦикла;

Важный нюанс: в системе ЕГАИС существуют жесткие ограничения на частоту запросов. Запрос остатков по регистру можно делать не чаще одного раза в час. Запросы на получение марок по справке 2 имеют более лояльные лимиты, однако при попытке отправить 7000 запросов одновременно УТМ может временно заблокировать обращения. Оптимально настроить регламентное задание, которое будет отправлять по 10-20 запросов каждые 10-15 минут.

Метод 2. Восстановление данных через историю ТТН

Если по каким-то причинам метод запроса по справкам 2 недоступен (например, данные в ЕГАИС рассинхронизированы), можно пойти путем восстановления входящих документов. Рассмотрим ситуацию: у вас есть FSRAR_ID поставщиков и примерные даты поставок.

Посмотрим на практический совет из обсуждения: обычно у розничной точки не более 3-5 основных поставщиков алкоголя. За 5 лет работы количество накладных может составить около 250-300 штук. Вы можете:

  1. Обратиться к поставщикам с просьбой предоставить список номеров ТТН ЕГАИС (идентификаторы TTN-xxxxxxxxxx).
  2. Используя функцию «Перезапрос ТТН» в УТМ, загрузить эти документы в пустую базу 1С.
  3. При загрузке ТТН система автоматически заполнит регистры сведений, в которых хранятся соответствия справок 2 и акцизных марок.

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

Метод 3. Использование отчетов о движении между регистрами

Если база пуста, а списать нужно «всё, что есть в ЕГАИС», можно воспользоваться отчетом «Движения по справке 2». Выясним причину, почему это удобно: данный отчет показывает все операции с конкретной партией. Если вы видите, что по справке был приход, но не было расхода, значит, остаток должен быть в наличии.

В 1С (например, в конфигурациях «Розница» или «Управление торговлей») для этого используются объекты Документ.ЗапросОстатковЕГАИС и Обработка.ПанельОбменаСЕГАИС. Мы можем программно создать акты списания на основании данных, полученных из отчетов об остатках.

Рассмотрим пример заполнения акта списания программно, если марки уже загружены в справочник ШтрихкодыУпаковокТоваров (при этом может быть полезно автоматическое исправление видов запасов в документах):


АктСписания = Документы.АктСписанияЕГАИС.СоздатьДокумент();
АктСписания.Дата = ТекущаяДата();
АктСписания.ОрганизацияЕГАИС = НашаОрганизацияЕГАИС;
АктСписания.ПричинаСписания = Перечисления.ПричиныСписанияЕГАИС.Недостача;

Для Каждого МаркаИзБазы Из ВосстановленныеМарки Цикл
    НоваяСтрока = АктСписания.Товары.Добавить();
    НоваяСтрока.Номенклатура = МаркаИзБазы.Номенклатура;
    НоваяСтрока.Количество = 1;
    НоваяСтрока.Справка2 = МаркаИзБазы.Справка2;
    
    // Добавляем марку в соответствующий регистр акта
    НоваяМарка = АктСписания.АкцизныеМарки.Добавить();
    НоваяМарка.НомерСтрокиТЧ = НоваяСтрока.НомерСтроки;
    НоваяМарка.АкцизнаяМарка = МаркаИзБазы.Ссылка;
КонецЦикла;

АктСписания.Записать();

Технические нюансы и ограничения

При массовой работе с марками и остатками необходимо учитывать следующие моменты:

Итоги

Восстановление акцизных марок в пустой базе 1С — задача трудоемкая, но выполнимая. Наиболее современным и быстрым способом является последовательный запрос остатков по Регистру №1 и последующий запрос марок по каждой Справке 2 через механизм QueryRestBCode. Это избавляет от необходимости искать старые ТТН и взаимодействовать с поставщиками. После того как марки загружены в локальные справочники 1С, процедура списания становится стандартной технической операцией.

Совместное использование инструментов 1С и прямых запросов к УТМ позволяет закрыть вопрос с остатками в течение нескольких дней, даже если история учета за последние 5 лет была полностью утеряна.

← На главную