Переход на новый формат фискальных данных ФФД 1.2 часто сопровождается техническими сложностями, особенно в связке 1С:Управление нашей фирмой (УНФ) и оборудования АТОЛ. Типичная ситуация: вы обновили прошивку кассы, установили свежий релиз программы и актуальные драйверы, но при попытке начать работу система выдает критическую ошибку: "В данной транзакции уже происходили ошибки!". При этом на самой кассе (железке) смена может успешно открыться, а в программе документ КассоваяСмена остается не проведенным. Проанализируем причины этой проблемы и разберем пошаговый алгоритм ее решения.
Для начала разберем природу этого сообщения. В платформе 1С:Предприятие 8.3 ошибка В данной транзакции уже происходили ошибки! является вторичной. Она означает, что внутри одной транзакции (процесса записи данных в базу) произошел какой-то сбой, который не был корректно обработан, и система попыталась продолжить выполнение кода или выполнить повторную запись. Поскольку первая ошибка "сломала" транзакцию, любые последующие действия в ее рамках блокируются платформой.
В контексте открытия смены в УНФ процесс выглядит так:
КассоваяСмена в информационной базе.Первое, на что стоит обратить внимание — это версия драйвера. Для работы с ФФД 1.2 необходимо использовать драйверы АТОЛ версии 10.9.x и выше. Разберем, как правильно проверить интеграцию:
Перейдем в раздел Администрирование — Подключаемое оборудование. Найдем нашу кассу и откроем ее карточку. Проверим, что выбран обработчик драйвера АТОЛ:ККТ с передачей данных в ОФД (54-ФЗ) 10.x. Нажмем кнопку "Настроить" и убедимся, что версия установленной компоненты соответствует требованиям. Рекомендуется использовать проверенную версию, например 10.9.1.0 или 10.9.2.6. Если версия ниже, необходимо скачать актуальный драйвер с сайта производителя или из раздела обновлений 1С.
Проанализируем текст ошибки из стека, который предоставил автор темы. Строка НСтр("ru='Фискальное устройство не выбрано.'") в модуле управления устройством прямо намекает на то, что программа "теряет" связь с идентификатором оборудования именно в момент проведения документа в базе.
В 1С каждое устройство жестко привязано к Рабочему месту (справочник РабочиеМеста). Если вы обновляли платформу или переименовывали компьютер, идентификатор мог измениться. Выполним следующие действия:
Без подключения и создать смену. Если ошибка повторится, значит проблема точно не в "железе", а в заполнении реквизитов документа КассоваяСмена в базе данных.Поскольку при неудачной попытке в 1С кассовый аппарат успевает распечатать чек открытия, возникает ситуация рассинхрона: на кассе смена открыта, а в 1С документа нет. Рассмотрим, как это исправить:
Чтобы "подружить" 1С и кассу, нам нужно создать документ КассоваяСмена вручную или заставить систему считать, что смена уже открыта. Однако в УНФ документ создается автоматически. Если система не дает открыть смену стандартно, выполните "Технологическое обнуление" или просто закройте смену через Тест драйвера АТОЛ (утилита вне 1С), чтобы привести оба состояния к значению "Закрыта". Только после этого пробуйте повторное открытие из интерфейса 1С.
Для программиста самый надежный способ — проанализировать ситуацию в отладчике. Рассмотрим, где именно нужно поставить точку останова. Исходя из стека ошибки, нас интересует общий модуль КассовыеСменыВызовСервера, процедура записи объекта:
// Модуль: КассовыеСменыВызовСервера
// Процедура: НоваяКассоваяСмена
КассоваяСменаОбъект = Документы.КассоваяСмена.СоздатьДокумент();
// ... заполнение реквизитов ...
Попытка
КассоваяСменаОбъект.Записать(РежимЗаписиДокумента.Проведение);
Исключение
// Именно здесь происходит "замалчивание" реальной ошибки
ТекстОшибки = ИнформацияОбОшибке().Описание;
ЗаписатьВЛог(ТекстОшибки);
КонецПопытки;
Поставим точку останова на строке КассоваяСменаОбъект.Записать. В момент остановки внимательно проверим заполнение всех реквизитов объекта КассоваяСменаОбъект:
Часто под ФФД 1.2 система требует заполнения новых полей, связанных с проверкой кодов маркировки (даже если вы ими не торгуете), и если в коде конфигурации есть старые проверки или неактуальные обработчики, запись документа обрывается.
Если конфигурация УНФ версии 1.6.27.167 используется без установленных исправлений, крайне рекомендуется проверить раздел Обслуживание — Обновление программы — Установленные исправления (патчи). 1С оперативно выпускала патчи для БПО под ФФД 1.2, исправляющие именно ошибки записи кассовых смен.
Также не забудем про стандартную процедуру — очистку кэша пользователя. Иногда старые метаданные форм мешают корректной передаче параметров между клиентом и сервером в процедурах НачатьПодключениеОборудования.
Проанализировав ситуацию, можно сделать вывод: ошибка открытия смены в 1С при работающей кассе — это результат отказа в записи документа внутри 1С. Основные пути решения: актуализация драйвера до 10.9.x, пересоздание настройки Рабочего места и проверка документа КассоваяСмена на наличие пустых обязательных реквизитов через отладку. Помните, что для ФФД 1.2 критически важно, чтобы и драйвер, и прошивка ККТ, и релиз 1С находились в "одной весовой категории" по дате выпуска.