Почему зависает окно «Сохранение результатов проверки» в 1С:Розница при работе с ЕГАИС и как это исправить?

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

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

Причина 1: Специфика файлового режима и очереди фоновых заданий

Разберем фундаментальную особенность файлового варианта работы базы данных 1С. В отличие от клиент-серверного варианта, где фоновые задания могут выполняться параллельно на сервере приложений, в файловой базе фоновые задания выполняются последовательно. Это означает, что в один момент времени может работать только одно фоновое задание.

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

Рассмотрим порядок действий для диагностики этой причины:

  1. Откройте форму «Обслуживание» в разделе «Администрирование».
  2. Перейдите по ссылке «Регламентные и фоновые задания».
  3. Посмотрите список выполняющихся заданий. Если вы видите активное задание, которое «висит» уже долгое время, именно оно может блокировать сохранение результатов проверки.

Причина 2: Архитектурные особенности обработки данных (Дерево значений)

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

Посмотрим на пример: если в ТТН содержится большое количество позиций (более 50-100 марок), дерево значений становится «тяжелым». Платформа 1С начинает активно использовать файл подкачки, если оперативной памяти на компьютере недостаточно (менее 8 Гб). Это замедляет процесс в десятки раз, создавая полную иллюзию зависания системы. В сообщениях пользователей часто упоминается, что увеличение объема оперативной памяти до 6-8 Гб полностью решает проблему, так как 1С перестает «свопиться» на жесткий диск.

Причина 3: Программный баг асинхронных вызовов в релизе 2.3.5

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

Чтобы убедиться, что это ваш случай, после «зависания» и принудительного завершения работы 1С (через диспетчер задач), снова откройте ту же ТТН. Если вы увидите, что марки уже стоят в статусе «Проверено» или «В наличии», значит, само сохранение прошло успешно, а зависло именно визуальное окно ожидания из-за программной ошибки в коде формы.

Причина 4: Конфликт с политиками учета серий и блокировками

Разберем ситуацию, когда в журнале регистрации фиксируются изменения объектов Справочник.Номенклатура и Справочник.ПолитикиУчетаСерий в момент зависания. Это критический момент: если для алкогольной продукции включен учет по сериям, но настройки выполнены некорректно, фоновое задание может попасть в состояние «мертвой блокировки» (deadlock).

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


// Внутри фонового задания происходит попытка записи
НачатьТранзакцию();
Попытка
    ОбъектНоменклатура.Записать(); // Здесь может возникнуть ожидание блокировки
    // ... логика сохранения марок ...
    ЗафиксироватьТранзакцию();
Исключение
    ОтменитьТранзакцию();
КонецПопытки;

Рекомендации по решению проблемы

Для устранения данной проблемы мы рекомендуем выполнить комплекс действий, направленных как на оптимизацию работы операционной системы, так и на настройку самой платформы 1С.

  1. Обновление платформы и конфигурации. Это самый важный шаг. Описанные проблемы с асинхронными вызовами и утечками памяти были исправлены в последующих патчах и релизах. Рекомендуется использовать платформу версии не ниже 8.3.17.xxxx и обновить «Розницу» до актуальной версии ветки 2.3.
  2. Очистка кэша и принудительный сброс блокировок. В файловом режиме недостаточно просто перезапустить программу. Необходимо зайти в каталог базы данных и при закрытой 1С удалить файлы с расширениями *.lcl и *.lck. Эти файлы отвечают за блокировки сеансов и заданий. Их удаление «разморозит» очередь фоновых задач.
  3. Увеличение оперативной памяти. Для комфортной работы с ЕГАИС в современных конфигурациях 1С крайне желательно иметь не менее 8 Гб ОЗУ. Это исключит задержки при обработке тяжелых структур ДеревоЗначений.
  4. Настройка антивируса. Проанализируем влияние защитного ПО: антивирусы часто блокируют запись во временные папки (папка Temp в профиле пользователя), куда 1С выгружает данные фоновых заданий. Добавьте папку с базой данных и папки временных файлов пользователя в исключения антивируса.
  5. Отключение фоновой проверки марок (если применимо). В некоторых подрелизах в настройках интеграции с ЕГАИС можно временно отключить опцию «Использовать фоновую проверку марок». В этом случае проверка будет проходить синхронно, и вы будете видеть прогресс непосредственно в основном окне, что поможет избежать зависания очереди заданий.

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

← На главную