Как отредактировать печатную форму больничного листа в 1С: Медицина. Поликлиника, если текст не попадает в ячейки?

Программист 1С v8.3 (Управляемые формы) Сфера услуг, туризм и социальный сектор
← На главную

При работе с бланками строгой отчетности, такими как листки нетрудоспособности, пользователи часто сталкиваются с технической проблемой: символы, выводимые на печать, не попадают в специально отведенные ячейки (квадратики) на бумажном бланке. Несмотря на регулировку масштаба и размеров листа, проблема может сохраняться из-за внутренних настроек макета или особенностей драйвера принтера. Разберем подробно, как найти нужную форму в конфигураторе и правильно ее отредактировать.

Метод 1. Поиск макета через замер производительности

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

  1. Запустим программу 1С в режиме Конфигуратор.
  2. В верхнем меню перейдем в раздел Отладка и выберем пункт Подключение. Убедимся, что наше клиентское приложение подключено.
  3. Перейдем в режим Предприятие и откроем документ «Листок нетрудоспособности», который необходимо распечатать.
  4. Вернемся в Конфигуратор и включим Замер производительности (кнопка с изображением секундомера на панели инструментов или через меню «Отладка»).
  5. В режиме Предприятие нажмем кнопку Печать. Дождемся формирования печатной формы на экране.
  6. Сразу после появления формы вернемся в Конфигуратор и выключим замер производительности.

Проанализируем полученную таблицу замера. Нам нужно найти строки, где время выполнения было наибольшим или где вызываются процедуры со словами Печать, СформироватьТабличныйДокумент или ПодготовитьМакет. Обычно вызов происходит в модуле менеджера документа. Кликнув дважды по строке в замере, мы попадем в код, где увидим конструкцию вида:


Макет = УправлениеПечатью.МакетПечатнойФормы("Документ.ЛистокНетрудоспособности.ПФ_MXL_Листок2011");

Здесь ПФ_MXL_Листок2011 и будет тем самым путем к макету, который мы искали. Теперь мы точно знаем, какой объект редактировать.

Метод 2. Поиск макета вручную в дереве конфигурации

Если мы предпочитаем стандартный поиск, проанализируем дерево метаданных. В специализированных медицинских решениях структура объектов стандартизирована. Выполним следующие шаги:

  1. Развернем ветку Документы.
  2. Найдем объект ЛистокНетрудоспособности (в некоторых редакциях он может называться МедицинскоеСвидетельство с соответствующим типом).
  3. Развернем подветку Макеты. Скорее всего, там находится макет с типом Табличный документ.
  4. Если в самом документе макета нет, проверим ветку Общие -> Общие макеты. Разработчики часто выносят формы федерального значения в общие объекты для использования в разных документах.

Метод 3. Редактирование макета и настройка сетки

Когда макет открыт, важно понимать, что «попадание в клетки» зависит от фиксированной ширины колонок. Бланк больничного листа — это сложная сетка. Проанализируем правила изменения макета:

Шрифты: Большинство бланков ФСС (СФР) рассчитаны на шрифт Courier New размером 10 или 12 пунктов. Этот шрифт является моноширинным (все буквы имеют одинаковую ширину), что критически важно для попадания в ячейки. Выясним, не заменен ли шрифт в макете на Arial или Tahoma. Если это так, вернем Courier New.

Смещение ячеек: Если текст «уезжает» системно (например, всегда на 2 мм вправо), не обязательно двигать каждую ячейку. Рассмотрим выделение всей области печати и использование инструментов Раздвинуть или Удалить для пустых строк и колонок по краям. Однако помним: добавление одной узкой колонки в начале может сдвинуть весь документ.

Свойство «Размещение текста»: Проверим свойства проблемных ячеек. Выделим ячейку, нажмем Alt + Enter и найдем параметр Размещение текста. Для больничных листов лучше использовать значение Переносить или Авто, но при этом следить, чтобы текст не выходил за границы ячейки-контейнера.

Метод 4. Настройка без изменения конфигурации (Пользовательские настройки)

Прежде чем вносить изменения в код, проверим, не предусмотрены ли в 1С: Поликлиника штатные средства корректировки. Выполним следующие действия:

  1. Перейдем в раздел Администрирование или Настройки медицинского учреждения.
  2. Найдем настройки печати бланков. В современных версиях часто присутствуют поля: Смещение по вертикали (мм) и Смещение по горизонтали (мм).
  3. Попробуем ввести значения (например, 2 или -2) и распечатать тестовый образец. Это программно сдвигает весь ТабличныйДокумент при выводе на печать, не затрагивая макет.

Важные рекомендации по работе с принтером

Зачастую причина кроется в настройках самого принтера, а не в 1С. Выясним, как это проверить:

При нажатии кнопки «Печать» в диалоговом окне настроек принтера (Windows) проверим параметры масштабирования. Должен быть выбран пункт Реальный размер (Actual size). Если выбрано «По размеру области печати» или «Вписать», драйвер принтера принудительно сжимает макет 1С (который и так имеет поля), чтобы он гарантированно вошел в технические поля принтера. Это приводит к тому, что сетка макета перестает совпадать с сеткой типографского бланка.

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

Также стоит помнить, что бумажные больничные листы в настоящее время практически полностью заменены на Электронные листки нетрудоспособности (ЭЛН). Если ваше учреждение до сих пор массово печатает бумажные бланки, убедитесь, что это действительно необходимо, так как требования к их заполнению крайне жесткие, и малейшее несовпадение может привести к отказу в выплатах со стороны СФР.

← На главную