Почему в 1С:УНФ не открывается смена при переходе на ФФД 1.2 и как исправить ошибку транзакции?

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

Переход на новый формат фискальных данных ФФД 1.2 часто сопровождается техническими сложностями, особенно в связке 1С:Управление нашей фирмой (УНФ) и оборудования АТОЛ. Типичная ситуация: вы обновили прошивку кассы, установили свежий релиз программы и актуальные драйверы, но при попытке начать работу система выдает критическую ошибку: "В данной транзакции уже происходили ошибки!". При этом на самой кассе (железке) смена может успешно открыться, а в программе документ КассоваяСмена остается не проведенным. Проанализируем причины этой проблемы и разберем пошаговый алгоритм ее решения.

Выясним причину ошибки «В данной транзакции уже происходили ошибки»

Для начала разберем природу этого сообщения. В платформе 1С:Предприятие 8.3 ошибка В данной транзакции уже происходили ошибки! является вторичной. Она означает, что внутри одной транзакции (процесса записи данных в базу) произошел какой-то сбой, который не был корректно обработан, и система попыталась продолжить выполнение кода или выполнить повторную запись. Поскольку первая ошибка "сломала" транзакцию, любые последующие действия в ее рамках блокируются платформой.

В контексте открытия смены в УНФ процесс выглядит так:

  1. Программа инициирует команду к драйверу ККТ.
  2. Драйвер отправляет команду на фискальное устройство.
  3. Касса печатает отчет об открытии смены.
  4. Драйвер возвращает ответ "Успешно".
  5. 1С пытается создать и провести документ КассоваяСмена в информационной базе.
  6. На этапе записи документа происходит сбой (например, не заполнено обязательное поле или сработала проверка контроля остатков/прав).
  7. Транзакция откатывается, но из-за специфики кода БПО (Библиотеки подключаемого оборудования) мы видим лишь финальное сообщение о "битой" транзакции.

Шаг 1. Проверка соответствия драйвера и версии ФФД

Первое, на что стоит обратить внимание — это версия драйвера. Для работы с ФФД 1.2 необходимо использовать драйверы АТОЛ версии 10.9.x и выше. Разберем, как правильно проверить интеграцию:

Перейдем в раздел Администрирование — Подключаемое оборудование. Найдем нашу кассу и откроем ее карточку. Проверим, что выбран обработчик драйвера АТОЛ:ККТ с передачей данных в ОФД (54-ФЗ) 10.x. Нажмем кнопку "Настроить" и убедимся, что версия установленной компоненты соответствует требованиям. Рекомендуется использовать проверенную версию, например 10.9.1.0 или 10.9.2.6. Если версия ниже, необходимо скачать актуальный драйвер с сайта производителя или из раздела обновлений 1С.

Шаг 2. Проверка привязки оборудования к рабочему месту

Проанализируем текст ошибки из стека, который предоставил автор темы. Строка НСтр("ru='Фискальное устройство не выбрано.'") в модуле управления устройством прямо намекает на то, что программа "теряет" связь с идентификатором оборудования именно в момент проведения документа в базе.

В 1С каждое устройство жестко привязано к Рабочему месту (справочник РабочиеМеста). Если вы обновляли платформу или переименовывали компьютер, идентификатор мог измениться. Выполним следующие действия:

  1. В справочнике Кассы ККМ (раздел Компания — Все справочники) найдем нашу кассу.
  2. Убедимся, что в поле "Оборудование" выбрано именно то устройство, которое настроено для текущего компьютера.
  3. Попробуем временно переключить кассу в режим Без подключения и создать смену. Если ошибка повторится, значит проблема точно не в "железе", а в заполнении реквизитов документа КассоваяСмена в базе данных.

Шаг 3. Устранение рассинхронизации («Смена уже открыта на ККТ»)

Поскольку при неудачной попытке в 1С кассовый аппарат успевает распечатать чек открытия, возникает ситуация рассинхрона: на кассе смена открыта, а в 1С документа нет. Рассмотрим, как это исправить:

Чтобы "подружить" 1С и кассу, нам нужно создать документ КассоваяСмена вручную или заставить систему считать, что смена уже открыта. Однако в УНФ документ создается автоматически. Если система не дает открыть смену стандартно, выполните "Технологическое обнуление" или просто закройте смену через Тест драйвера АТОЛ (утилита вне 1С), чтобы привести оба состояния к значению "Закрыта". Только после этого пробуйте повторное открытие из интерфейса 1С.

Шаг 4. Анализ кода через точку останова

Для программиста самый надежный способ — проанализировать ситуацию в отладчике. Рассмотрим, где именно нужно поставить точку останова. Исходя из стека ошибки, нас интересует общий модуль КассовыеСменыВызовСервера, процедура записи объекта:


// Модуль: КассовыеСменыВызовСервера
// Процедура: НоваяКассоваяСмена

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

Поставим точку останова на строке КассоваяСменаОбъект.Записать. В момент остановки внимательно проверим заполнение всех реквизитов объекта КассоваяСменаОбъект:

Часто под ФФД 1.2 система требует заполнения новых полей, связанных с проверкой кодов маркировки (даже если вы ими не торгуете), и если в коде конфигурации есть старые проверки или неактуальные обработчики, запись документа обрывается.

Шаг 5. Применение патчей и очистка кэша

Если конфигурация УНФ версии 1.6.27.167 используется без установленных исправлений, крайне рекомендуется проверить раздел Обслуживание — Обновление программы — Установленные исправления (патчи). 1С оперативно выпускала патчи для БПО под ФФД 1.2, исправляющие именно ошибки записи кассовых смен.

Также не забудем про стандартную процедуру — очистку кэша пользователя. Иногда старые метаданные форм мешают корректной передаче параметров между клиентом и сервером в процедурах НачатьПодключениеОборудования.

Итоги

Проанализировав ситуацию, можно сделать вывод: ошибка открытия смены в 1С при работающей кассе — это результат отказа в записи документа внутри 1С. Основные пути решения: актуализация драйвера до 10.9.x, пересоздание настройки Рабочего места и проверка документа КассоваяСмена на наличие пустых обязательных реквизитов через отладку. Помните, что для ФФД 1.2 критически важно, чтобы и драйвер, и прошивка ККТ, и релиз 1С находились в "одной весовой категории" по дате выпуска.

← На главную