Разработка внешних печатных форм (ВПФ) — одна из самых частых задач при сопровождении конфигурации 1С:Зарплата и управление персоналом 3.1. На первый взгляд задача кажется тривиальной, однако разброс оценок от разных специалистов может составлять от 2 до 24 часов. В этой статье мы подробно разберем, из чего складывается время работы программиста, какие технические сложности могут возникнуть и как объективно оценить трудозатраты на создание качественного продукта.
Для того чтобы оценка была прозрачной, разделим процесс на логические блоки. Рассмотрим типичную ситуацию: необходимо создать печатную форму для документа «График отпусков», в которую нужно вывести данные о сотрудниках, периодах их отпуска и официальное название подразделения, хранящееся в дополнительных реквизитах.
Проанализируем, почему простая форма может занять больше времени, чем ожидалось. Одной из ключевых сложностей в ЗУП является работа с данными сотрудников. Разберем по шагам создание запроса для получения Дополнительных реквизитов подразделения.
В ЗУП 3.1 официальные наименования или другие специфические данные часто выносятся в «Дополнительные сведения и реквизиты». Для их получения в запросе нельзя просто обратиться к полю через точку. Нам потребуется соединение с таблицей ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения или использование программного интерфейса БСП.
Пример программного получения значения свойства, который может использоваться при выводе каждой строки макета:
ЗначениеСвойства = УправлениеСвойствами.ЗначениеСвойства(СсылкаНаОбъект, ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("ОфициальноеНазвание"));
Однако для оптимизации работы печатной формы рекомендуется собирать все данные одним запросом. Посмотрим, как может выглядеть фрагмент запроса с использованием временных таблиц для получения доп. реквизита:
ВЫБРАТЬ
СпрПодразделения.Ссылка КАК Подразделение,
ДопРеквизиты.Значение КАК ОфициальноеНазвание
ИЗ
Справочник.ПодразделенияОрганизаций КАК СпрПодразделения
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ПодразделенияОрганизаций.ДополнительныеРеквизиты КАК ДопРеквизиты
ПО СпрПодразделения.Ссылка = ДопРеквизиты.Ссылка
ГДЕ
ДопРеквизиты.Свойство = &СвойствоОфициальноеНазвание
Типичная проблема, на которой «спотыкаются» начинающие разработчики, — это группировка данных в печатной форме. Например, если у одного сотрудника в графике указано несколько периодов отпуска, заказчик часто хочет видеть ФИО один раз в объединенной ячейке слева, а периоды — списком справа.
Разберем, почему это занимает время. В 1С ТабличныйДокумент не умеет автоматически объединять ячейки при выводе строк. Программисту приходится использовать методы Область.Присоединить() или вручную вычислять индексы строк для метода Область.Объединить(). Проанализируем алгоритм:
Область(НомерПервойСтроки, НомерКолонки, НомерПоследнейСтроки, НомерКолонки).Объединить().Этот процесс требует тщательной отладки, чтобы границы ячеек и рамки таблицы не «поплыли» при печати.
Рассмотрим различные сценарии оценки, которые обсуждались экспертами сообщества:
Вариант 1: «Минимальный» (2–4 часа)
Подходит для опытного разработчика, у которого есть готовая библиотека шаблонов («рыб») для ВПФ. В это время входит написание запроса, набросок простого макета без сложной группировки и базовая регистрация в системе. Это время «чистого кодинга» без учета согласований.
Вариант 2: «Стандартный под ключ» (6–8 часов)
Это наиболее реалистичная оценка для качественной работы. Сюда закладывается:
- 1 час: Создание структуры ВПФ по стандартам БСП.
- 2 часа: Написание и отладка запроса (включая работу с доп. реквизитами).
- 3 часа: Верстка макета, настройка областей, объединение ячеек, проверка переносов строк.
- 1-2 часа: Тестирование, исправление мелких замечаний заказчика, установка в рабочую базу.
Вариант 3: «Сложный/Неопределенный» (12–24 часа)
Такая оценка возникает, если ТЗ представлено в виде «сделайте как на картинке», а данные в базе не подготовлены. Например, если нужно вычислять остатки отпусков на лету или склонять ФИО в разные падежи с использованием функций ФизическиеЛица.ФИОФизЛица(). Также время растет, если исполнитель тратит время на обучение (изучение структуры регистров ЗУП в процессе работы).
Выясним причины, по которым работа может затянуться. Если программист выставляет счет на 12 часов, но при этом в печатной форме не реализовано объединение строк или запрос работает медленно, это повод для детального технического аудита.
Рекомендации для постановки задачи:
Важно помнить, что работа через Библиотеку стандартных подсистем (БСП) — это обязательное требование для современных конфигураций. Использование устаревших методов может привести к тому, что печатная форма перестанет работать после первого же обновления программы. Поэтому качественная ВПФ не может стоить «слишком дешево», но и 12 часов для формы среднего уровня — это часто избыточная оценка, включающая в себя риски или низкую квалификацию исполнителя.