В практике автоматизации розничной торговли алкоголем нередко возникает критическая ситуация: организация длительное время вела учет «на коленке» или вовсе без учетной программы, отправляя данные в ЕГАИС через сторонние сервисы или напрямую через УТМ. Когда приходит время подтверждать лицензию или проводить глобальную инвентаризацию, выясняется, что в учетной системе (например, 1С) данных нет, а в облаке ЕГАИС числятся тысячи «виртуальных» бутылок — для решения этой проблемы есть готовое решение для сверки остатков и запроса марок ЕГАИС. Основная сложность здесь заключается в том, что для списания крепкого алкоголя в современном поштучном режиме (Регистр №3) необходимо знать конкретные коды акцизных марок, которых нет в локальной базе.
В данной статье мы разберем, как восстановить данные о марках, используя стандартные запросы к УТМ, и как правильно организовать процесс массового списания, чтобы привести остатки в соответствие с фактическими. Для этой задачи есть программа автоматизации документооборота с ЕГАИС.
Проанализируем наиболее эффективный способ получения марок, не требующий поиска первичных документов пятилетней давности. Поскольку весь крепкий алкоголь сейчас учитывается поштучно, марки привязаны к партиям (Справкам 2). Наша задача — получить список этих справок, а затем запросить марки по каждой из них — в этом поможет готовая обработка для обмена с ЕГАИС и работы с марками.
Рассмотрим пошаговый алгоритм действий:
QueryRests. В ответ ЕГАИС присылает список всей продукции, которая числится за вашим FSRAR_ID, с указанием идентификаторов справок 2 (поле FB-xxxxxxxxxxxx).Разберем пример логики обработки ответа от ЕГАИС на языке 1С. Предположим, мы уже получили XML с остатками и теперь итерируем по ним для создания запросов на марки:
Для Каждого СтрокаОстатков Из ТаблицаОстатковРегистра1 Цикл
ИдентификаторСправки2 = СтрокаОстатков.Справка2;
// Формируем запрос QueryRestBCode для каждой справки
ЗапросКЕГАИС = СоздатьЗапросНаПолучениеМарок(ИдентификаторСправки2);
ИнтеграцияЕГАИС.ОтправитьЗапросВУТМ(ЗапросКЕГАИС);
// Помним про ограничение: запросы к УТМ имеют лимиты по времени
// Рекомендуется делать паузу или использовать очередь заданий
КонецЦикла;
Важный нюанс: в системе ЕГАИС существуют жесткие ограничения на частоту запросов. Запрос остатков по регистру можно делать не чаще одного раза в час. Запросы на получение марок по справке 2 имеют более лояльные лимиты, однако при попытке отправить 7000 запросов одновременно УТМ может временно заблокировать обращения. Оптимально настроить регламентное задание, которое будет отправлять по 10-20 запросов каждые 10-15 минут.
Если по каким-то причинам метод запроса по справкам 2 недоступен (например, данные в ЕГАИС рассинхронизированы), можно пойти путем восстановления входящих документов. Рассмотрим ситуацию: у вас есть FSRAR_ID поставщиков и примерные даты поставок.
Посмотрим на практический совет из обсуждения: обычно у розничной точки не более 3-5 основных поставщиков алкоголя. За 5 лет работы количество накладных может составить около 250-300 штук. Вы можете:
TTN-xxxxxxxxxx).Проанализируем преимущество этого метода: вы получаете не только марки, но и полную историю приходов, что поможет восстановить управленческий учет (включая выгрузку УПД с кодами маркировки) и правильно заполнить реквизиты партий для дальнейшего списания.
Если база пуста, а списать нужно «всё, что есть в ЕГАИС», можно воспользоваться отчетом «Движения по справке 2». Выясним причину, почему это удобно: данный отчет показывает все операции с конкретной партией. Если вы видите, что по справке был приход, но не было расхода, значит, остаток должен быть в наличии.
В 1С (например, в конфигурациях «Розница» или «Управление торговлей») для этого используются объекты Документ.ЗапросОстатковЕГАИС и Обработка.ПанельОбменаСЕГАИС. Мы можем программно создать акты списания на основании данных, полученных из отчетов об остатках.
Рассмотрим пример заполнения акта списания программно, если марки уже загружены в справочник ШтрихкодыУпаковокТоваров (при этом может быть полезно автоматическое исправление видов запасов в документах):
АктСписания = Документы.АктСписанияЕГАИС.СоздатьДокумент();
АктСписания.Дата = ТекущаяДата();
АктСписания.ОрганизацияЕГАИС = НашаОрганизацияЕГАИС;
АктСписания.ПричинаСписания = Перечисления.ПричиныСписанияЕГАИС.Недостача;
Для Каждого МаркаИзБазы Из ВосстановленныеМарки Цикл
НоваяСтрока = АктСписания.Товары.Добавить();
НоваяСтрока.Номенклатура = МаркаИзБазы.Номенклатура;
НоваяСтрока.Количество = 1;
НоваяСтрока.Справка2 = МаркаИзБазы.Справка2;
// Добавляем марку в соответствующий регистр акта
НоваяМарка = АктСписания.АкцизныеМарки.Добавить();
НоваяМарка.НомерСтрокиТЧ = НоваяСтрока.НомерСтроки;
НоваяМарка.АкцизнаяМарка = МаркаИзБазы.Ссылка;
КонецЦикла;
АктСписания.Записать();
При массовой работе с марками и остатками необходимо учитывать следующие моменты:
V4. Поштучный учет корректно работает только в актуальных версиях протокола, при этом важен контроль заполнения полей маркированного товара.service.egais.ru.QueryBarcode.Восстановление акцизных марок в пустой базе 1С — задача трудоемкая, но выполнимая. Наиболее современным и быстрым способом является последовательный запрос остатков по Регистру №1 и последующий запрос марок по каждой Справке 2 через механизм QueryRestBCode. Это избавляет от необходимости искать старые ТТН и взаимодействовать с поставщиками. После того как марки загружены в локальные справочники 1С, процедура списания становится стандартной технической операцией.
Совместное использование инструментов 1С и прямых запросов к УТМ позволяет закрыть вопрос с остатками в течение нескольких дней, даже если история учета за последние 5 лет была полностью утеряна.