Как настроить печать полного ФИО кассира в чеках 1С:Бухгалтерия 3.0

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

В процессе работы с контрольно-кассовой техникой (ККТ) в программе «1С:Бухгалтерия 3.0» (БП 3.0) пользователи часто сталкиваются с тем, что в фискальном чеке ФИО кассира печатается в сокращенном формате (например, «Иванов И.И.»), в то время как внутренние стандарты организации или требования локальных налоговых органов могут диктовать необходимость вывода полного имени («Иванов Иван Иванович»). В этой статье мы подробно разберем, как устроена логика вывода данных кассира, где искать настройки в программе и как внести изменения в код, если стандартные методы не помогают.

Анализ источников данных для чека

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

  1. Текущий пользователь системы: Программа в первую очередь обращается к данным пользователя, под которым произведен вход. В карточке пользователя (раздел «Администрирование» — «Настройки пользователей и прав») должно быть заполнено поле Физическое лицо. Именно из справочника ФизическиеЛица подтягиваются ФИО.
  2. Регистр сведений «Ответственные лица организаций»: Если данные в карточке пользователя не помогли или логика документа предполагает иное, система может обратиться к этому регистру. Здесь проверяется запись с типом «Кассир» для конкретной организации.
  3. Настройки торгового оборудования: В некоторых случаях ФИО кассира может быть «зашито» в память самого кассового аппарата (в таблицу кассиров драйвера ККТ). Если в настройках драйвера (например, АТОЛ или Штрих-М) установлен приоритет данных из ККТ, то изменения в 1С не принесут результата.

Проанализируем ситуацию, описанную на форуме: автор проверил и справочник физических лиц, и регистр ответственных лиц, убедившись, что там указаны полные данные. Однако чек продолжал выходить с сокращениями. Это означает, что проблема кроется в программных механизмах формирования текста для чека, которые принудительно обрезают ФИО до инициалов.

Проверка настроек драйвера ККТ

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

Зайдите в раздел «Администрирование» — «Подключаемое оборудование». Откройте настройки вашей ККТ и нажмите кнопку «Настроить». В открывшемся окне (параметры драйвера) найдите раздел, отвечающий за печать реквизитов. Убедитесь, что флажок «Использовать ФИО кассира из таблиц ККТ» снят. Если он установлен, касса будет игнорировать данные из 1С и печатать то, что сохранено в её собственной памяти под номером текущего оператора.

Программное решение проблемы через расширение

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

Нам необходимо найти место в коде, где формируются данные для передачи в «Библиотеку подключаемого оборудования» (БПО). Обычно это происходит в общих модулях, связанных с менеджером оборудования. Рассмотрим пример изменения логики в модуле МенеджерОборудованияВызовСервера (название может незначительно меняться в зависимости от версии БПО).

Разберем по шагам создание расширения:

  1. Создайте новое расширение в конфигураторе.
  2. Найдите общий модуль, отвечающий за подготовку данных чека (часто это МенеджерОборудованияВызовСервера).
  3. Найдите процедуру или функцию, которая заполняет структуру ДанныеЧека, в частности поле Кассир.
  4. Добавьте эту процедуру в расширение с аннотацией &Вместо или &После.

Посмотрим на пример кода, который решает проблему. Если в типовом коде используется логическая переменная фиократко = истина, нам нужно принудительно установить её в значение Ложь. Проанализируем пример модификации:


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

В данном примере мы используем функцию ФамилияИмяОтчествоФизЛица, которая, в отличие от стандартной ФамилияИнициалыФизЛица, возвращает строку без сокращений. Это гарантирует, что в тег 1021 («Кассир») попадет полная информация.

Работа с форматом фискальных данных (ФФД)

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

Альтернативный способ (без расширения)

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

Также стоит проверить настройку «Выводить ФИО полностью», которая в некоторых релизах «1С:Бухгалтерии» может присутствовать в настройках параметров учета или настройках печати документов. Однако для кассовых чеков (фискальных данных) чаще всего требуется именно программное вмешательство, так как формат чека жестко регламентирован БПО.

Резюме

Для решения задачи по выводу полного ФИО кассира в 1С:БП 3.0 мы рекомендуем следующий алгоритм действий:

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

Такой комплексный подход позволит вам добиться желаемого результата, сохранив стабильность системы и соответствие требованиям ФНС.

← На главную