Как настроить вывод ФИО кассира в чеке ККМ в 1С:Управление торговлей 10.3

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

При работе с торговым оборудованием в конфигурации Управление торговлей 10.3 пользователи часто сталкиваются с ситуацией, когда в напечатанном чеке вместо реального имени сотрудника значится «Системный администратор». Это происходит даже в тех случаях, когда в настройках пользователя 1С всё заполнено корректно. В данной статье мы подробно разберем, почему возникает эта ошибка и как программно обеспечить передачу правильных данных в кассовый аппарат, особенно при использовании драйверов АТОЛ 10.х.

Почему в чеке печатается Системный администратор

Разберем природу проблемы. Кассовый аппарат (ККТ) — это самостоятельное устройство со своей внутренней памятью и таблицами. Если 1С в момент пробития чека не передает конкретное значение в тег 1021 (Кассир), драйвер кассы подставляет значение «по умолчанию» из собственной таблицы пользователей. В драйверах АТОЛ под индексом 30 обычно записан «Системный администратор», который и попадает в чек.

Для корректного вывода данных в соответствии с требованиями ФФД 1.05 и выше, программа должна передать структуру параметров, содержащую ФИО и, крайне желательно, ИНН кассира (тег 1203).

Шаг 1. Проверка стандартных настроек пользователя

Прежде чем приступать к правке кода, проанализируем базовые настройки в интерфейсе программы. Рассмотрим, что должно быть заполнено:

  1. Перейдем в справочник Пользователи.
  2. Убедимся, что в поле Полное имя указано корректное ФИО кассира.
  3. Проверим наличие привязки к справочнику Физические лица. В карточке физлица должны быть заполнены ФИО и ИНН.
  4. В настройках дополнительных прав пользователя (или в основных настройках) проверим, установлен ли Основной ответственный.

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

Шаг 2. Анализ функции формирования параметров фискализации

Выясним причину потери данных в программном коде. В УТ 10.3 за формирование данных для чека отвечает ряд функций в модулях документов ЧекККМ и общих модулях. Проанализируем цепочку вызовов. Как правило, данные «теряются» в структуре ПараметрыОперацииФискализацииЧека, где поле Кассир инициализируется как Неопределено.

Рассмотрим процедуру ПодготовитьДанныеДляФискализацииЧека. В идеале она должна содержать строку инициализации ответственного:

ОбщиеПараметры.Кассир = ЧекККМ.Ответственный.Наименование;

Однако во многих релизах эта привязка отсутствует или работает некорректно для ККТ (онлайн-касс), работающих через универсальный механизм менеджера оборудования.

Шаг 3. Программное исправление в модуле

Разберем конкретное решение, которое помогло многим разработчикам. Нам необходимо найти функцию, которая подготавливает структуру параметров для драйвера. Обычно это ПараметрыФискализацииЧека в модуле документа или специализированном общем модуле.

Нам нужно принудительно добавить заполнение поля кассира из данных документа (шапки чека). Рассмотрим пример изменения кода:


Функция ПараметрыФискализацииЧека(ДанныеДокумента, СуммаПредоплатыКорректировка = Неопределено, ЭтоВозврат = Ложь, ФормироватьСтрокиОплаты = Истина) Экспорт
    // ... существующий код формирования структуры ...

    // Получаем сведения об организации для чека
    СведенияОЮрФизЛице = ФормированиеПечатныхФорм.СведенияОЮрФизЛице(Шапка.Организация, Шапка.Дата);

    // Параметры для формирования чека
    ПараметрыФискализацииЧека.Организация = Шапка.Организация;
    ПараметрыФискализацииЧека.ОрганизацияНазвание = СведенияОЮрФизЛице.ПолноеНаименование;
    ПараметрыФискализацииЧека.ОрганизацияИНН = СведенияОЮрФизЛице.ИНН;

    // Вставляем ФИО кассира из ответственного в документе
    ПараметрыФискализацииЧека.Вставить("Кассир", СокрЛП(Шапка.Ответственный.Наименование));
    
    // Если требуется передача ИНН кассира (тег 1203)
    Если ЗначениеЗаполнено(Шапка.Ответственный.ФизЛицо) Тогда
        ПараметрыФискализацииЧека.Вставить("КассирИНН", Шапка.Ответственный.ФизЛицо.ИНН);
    КонецЕсли;

    // ... продолжение кода ...
КонецФункции

Важный момент: если ваша версия обработки обслуживания ККТ или сама конфигурация использует структуру ОбщиеПараметры, убедитесь, что имя ключа соответствует ожидаемому драйвером (именно "Кассир", а не "Оператор" или иное).

Шаг 4. Особенности работы с драйвером АТОЛ 10

Проанализируем ситуацию, если правка кода в 1С выполнена, но в чеке всё равно «Администратор». При использовании драйверов 10-й версии АТОЛ существует нюанс: если в ККТ не передается ИНН кассира, драйвер может игнорировать текстовое поле с ФИО. Поэтому крайне важно передавать оба параметра в структуре:

Также проверим версию обработки обслуживания (обычно это ATOL_KKT_10.epf или встроенный макет драйвера). В старых версиях обработок может отсутствовать код, который извлекает значение Кассир из структуры параметров и передает его в объект драйвера методом setParam(1021, ...). В таком случае потребуется модификация самой обработки обслуживания.

Резюме и проверка

Для решения проблемы мы выполнили следующие действия:

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

После внесения этих изменений при печати чека 1С будет «перекрывать» встроенные таблицы кассового аппарата актуальными данными из документа Чек ККМ, и в печатной форме появится корректное ФИО сотрудника.

← На главную