При оформлении результатов инвентаризации по форме ИНВ-3 (Инвентаризационная опись товарно-материальных ценностей) пользователи часто сталкиваются с тем, что в полях для подписей материально ответственных лиц (МОЛ) фамилия, имя и отчество выводятся в сокращенном виде, например, «Иванов И.И.». Однако внутренние регламенты организации, требования аудиторов или наличие однофамильцев в штате могут диктовать необходимость вывода ФИО полностью: «Иванов Иван Иванович».
В этой статье мы подробно разберем, почему программа 1С по умолчанию сокращает данные, где именно хранятся эти настройки и как изменить печатную форму, чтобы добиться желаемого результата.
Прежде чем приступать к правкам, проанализируем техническую логику системы. В большинстве современных конфигураций 1С (таких как Бухгалтерия предприятия 3.0, ERP или ЗУП) за формирование строкового представления человека отвечает специальный программный механизм. Даже если в справочнике ФизическиеЛица вы указали ФИО полностью, при выводе на печать программа обращается к общему модулю, который принудительно обрезает строку.
Обычно это происходит в процедуре формирования данных для печати в модуле менеджера документа. Используется стандартная функция, например, ФизическиеЛицаКлиентСервер.ФамилияИнициалыФизЛица(). Этот алгоритм берет полную строку и преобразует ее в формат «Фамилия + первая буква Имени + первая буква Отчества». Таким образом, простое изменение наименования в справочнике не решит проблему, так как код программы все равно выполнит сокращение перед выводом в макет.
Первым делом нам необходимо убедиться, что в базе данных информация о сотруднике заполнена корректно. Рассмотрим, как 1С хранит эти сведения. Важно понимать, что система берет данные не только из основного поля справочника, но и из специального периодического регистра сведений.
Физические лица.ФИОФизическихЛиц. Здесь должны быть четко разделены поля: «Фамилия», «Имя» и «Отчество».Если в регистре все три поля заполнены полностью, а в печатной форме все равно выводятся инициалы — значит, ограничение зашито на программном уровне в коде формирования печатной формы ИНВ-3.
Самый правильный и безопасный метод изменения логики печати — создание внешней печатной формы (ВПФ). Это позволит нам не снимать конфигурацию с поддержки и избежать проблем при будущих обновлениях программы. Рассмотрим этот процесс по шагам:
Проанализируем программный код в модуле менеджера документа ИнвентаризацияТоваров. Там вызывается функция, подготавливающая структуру данных для макета. Нам нужно найти место, где переменной, отвечающей за МОЛ, присваивается значение.
Пример стандартного кода, который делает сокращение:
// В типовом коде часто встречается подобная конструкция:
ДанныеПечати.МОЛФИО = ФизическиеЛицаКлиентСервер.ФамилияИнициалыФизЛица(Выборка.МОЛ);
Для того чтобы вывести полное имя, в нашей внешней печатной форме мы должны заменить эту функцию на получение полного представления. Нам поможет функция ФизическиеЛица.Просклонять() или прямое обращение к функции получения полного ФИО:
// Заменяем на получение полного ФИО
ДанныеПечати.МОЛФИО = ФизическиеЛица.ФИОФизЛица(Выборка.МОЛ, ДатаДокумента);
После создания внешней обработки ее необходимо подключить через раздел Администрирование — Печатные формы, отчеты и обработки — Дополнительные отчеты и обработки. Теперь в меню печати документа появится новый пункт «ИНВ-3 (полное ФИО)».
Рассмотрим ситуацию, когда вы хотите попробовать решить проблему без программирования. В платформе 1С 8.3 существует возможность редактирования макетов пользователем. Пройдем по пути: Администрирование — Печатные формы, отчеты и обработки — Макеты печатных форм. Найдем в списке макет «Инвентаризационная опись товаров (ИНВ-3)».
Важное ограничение: здесь вы можете изменить только визуальную часть: увеличить шрифт, сделать текст жирным или расширить границы ячейки. Однако, если программа передает в параметр ФИО уже сокращенную строку «Иванов И.И.», никакое расширение ячейки не заставит программу «дописать» туда полное имя. Этот способ поможет только в том случае, если полное имя обрезалось из-за узкой колонки макета, а не программным алгоритмом.
Если вы не хотите использовать внешнюю печатную форму, а предпочитаете изменить стандартную кнопку печати, разберем вариант с использованием Расширения конфигурации. Это более современный подход, чем прямое редактирование типовой конфигурации.
Создадим расширение и добавим в него модуль менеджера документа ИнвентаризацияТоваровНаСкладе. Перехватим процедуру печати и изменим алгоритм формирования текста для МОЛ. Проанализируем пример кода для расширения:
&Вместо("СформироватьДанныеДляПечатиИНВ3")
Процедура Расш_СформироватьДанныеДляПечатиИНВ3(Параметры)
// Вызываем оригинальную логику или полностью заменяем ее
// В месте формирования ФИО используем:
ПолноеИмя = ФизическиеЛица.ФИОФизЛица(Объект.МатериальноОтветственноеЛицо, Объект.Дата);
// Подставляем ПолноеИмя в область макета
КонецПроцедуры
Этот метод требует навыков программирования на языке 1С, но он гарантирует, что при нажатии на стандартную кнопку печати бухгалтер всегда будет получать форму с развернутыми фамилиями.
Мы выяснили, что сокращение ФИО в печатной форме ИНВ-3 — это не ошибка, а стандартное поведение типовых конфигураций 1С. Для того чтобы фамилия материально ответственного лица писалась полностью, мы рекомендуем:
ФамилияИнициалыФизЛица() на ФИОФизЛица().Такой комплексный подход позволит вам соответствовать любым внутренним требованиям к оформлению документов и избежать претензий со стороны проверяющих органов.