Как изменить макет табличной формы и параметры шаблона в 1С Медицина.Поликлиника для печати медицинских документов?

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

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

Основы работы с шаблонами медицинских документов (ШМД)

Для начала, давайте вспомним, что 1С Медицина.Поликлиника предлагает нам Редактор ШМД – мощный инструмент для создания и модификации форм медицинских документов. Этот редактор позволяет нам работать с различными элементами, такими как текстовые поля, списки выбора, числовые поля, даты, флажки и, конечно же, таблицы, без необходимости глубокого погружения в программирование на начальном этапе.

Каждый элемент, который мы добавляем в форму, обладает собственным набором свойств. Эти свойства определяют, как элемент будет отображаться и вести себя. Мы можем изменять их, настраивать видимость, доступность или даже цвет элементов, опираясь на заданные условия. Это достигается за счет использования раздела «Условия» в свойствах элемента формы. Все введенные элементы можно структурировать, отображая их в заданных секциях медицинского документа.

Изменение макета табличной формы и параметров печати

Основной вопрос часто заключается в том, как изменить формат табличной формы, которая выходит на печать, если стандартный вывод нас не устраивает. Например, когда созданный макет не соответствует желаемому формату А4 или имеет некорректные отступы.

Настройка формата печати через Предварительный просмотр

Первое, что мы можем сделать для изменения формата печати, это воспользоваться встроенными возможностями 1С:Предприятия. Когда мы находимся в окне 1С:Предприятие, обратите внимание на пункт меню «Файл» - «Предварительный просмотр». Здесь нам предоставляется возможность:

  1. Изменить размер шрифта, чтобы текст лучше умещался или был более читаемым.
  2. Убрать колонтитулы, если они не нужны и занимают лишнее место. Эти настройки могут быть сохранены навсегда для данного документа.

Этот метод позволяет быстро адаптировать вывод документа без изменения самого макета в редакторе ШМД, хотя и не дает полной гибкости в редактировании структуры.

Работа с макетами табличного документа

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

Если в макете используются надстрочные и подстрочные тексты, и мы хотим исключить их из печати, нам поможет правильное именование областей. Зададим имя области следующим образом: "Имя_Области_" (с подчеркиванием в конце). Это позволяет системе исключить надстрочный текст, а все остальное форматирование выполняется непосредственно средствами визуализатора.

Для более продвинутых сценариев, когда нам нужен полный контроль над тем, что выводится на печать, мы можем использовать программное заполнение макетов. Это означает, что печатные формы переделываются таким образом, что строки в макете становятся параметрами. Затем эти параметры заполняются программно и передаются в макет. Такой подход позволяет нам не выводить на печать незаполненные параметры, делая документ более компактным и информативным.


// Пример концептуального кода для программного заполнения макета
// Предполагаем, что у нас есть МакетПечатнойФормы и Область с параметрами
Макет = ПолучитьМакет("МойМакетШМД");
ОбластьШапки = Макет.ПолучитьОбласть("Шапка");

// Заполнение параметров в области
ОбластьШапки.Параметры.ИмяПациента = Пациент.Наименование;
ОбластьШапки.Параметры.ДатаДокумента = ТекущаяДата();

// Вывод области на табличный документ
ТабличныйДокумент.Вывести(ОбластьШапки);

// Далее заполняем и выводим другие области

В этом случае, если параметр ИмяПациента не был бы заполнен, его можно было бы пропустить при выводе, или задать условие на его видимость.

Интеграция календарей и калькуляторов

Вопрос вывода календаря или калькулятора в ШМД — это задача, которая требует дополнительного рассмотрения.

Работа с датами и календарями

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

Хотя прямой информации о встраивании интерактивного календаря непосредственно в ШМД не было найдено в явном виде, функционал работы с датами и числовыми полями предусмотрен в редакторе ШМД. Если нам нужна более сложная логика, например, вычисление сроков или отображение календаря для выбора диапазона дат, может потребоваться использование обработок-ШМД или даже Веб-ШМД.

Встраивание калькуляторов

Что касается встраивания калькулятора, то здесь также возможны несколько подходов. Простые вычисления могут быть реализованы через формулы в свойствах числовых полей в редакторе ШМД. Для более сложных интерактивных калькуляторов, которые реагируют на действия пользователя, вероятно, потребуется использовать Веб-ШМД, так как они позволяют применять HTML, XML и JavaScript, открывая широкие возможности для реализации интерактивных элементов.

Использование «Визуализатора» и «Веб-ШМД»

Мы видим, что в 1С:Медицина.Поликлиника предусмотрены два предопределенных визуализатора: XLST-визуализатор и Табличный визуализатор. При тестировании медицинского документа мы можем выбрать, какой визуализатор будет использоваться. Это позволяет нам проверить, как документ будет выглядеть в разных представлениях.

Для задач, где возможностей стандартных обработок-ШМД недостаточно, например, для создания графического редактора или сложного интерактивного интерфейса, мы обращаемся к Веб-ШМД. Они основаны на элементе управления «ПолеHTMLДокумента» и позволяют нам:

  1. Получать и отображать данные.
  2. Использовать динамическое поле подбора готовых фраз.
  3. Сохранять и загружать документы.

Именно в контексте Веб-ШМД упоминается метод ИзменитьXDTO. Этот метод предоставляет расширенные возможности для работы с данными и структурой документа в веб-среде, позволяя нам более гибко манипулировать данными и их представлением.

Получение данных пациента в ШМД

Часто в ШМД нам необходимо получить данные конкретного пациента, для которого формируется документ. Подсистема «Электронные медицинские карты» предоставляет оптимизированный механизм для выборки сведений о состоянии здоровья пациента в ШМД. Это очень удобно, так как позволяет нам автоматически отображать ранее сохраненные медицинские документы, анамнезы или другие данные пациента сразу при открытии ШМД.

Для получения данных пациента в ШМД используются параметры. Например, одним из ключевых параметров является "СсылкаМК", которая содержит ссылку на медицинскую карту пациента. Мы можем использовать этот параметр в своих ШМД или обработках-ШМД для доступа к полной информации о пациенте.


// Пример получения пациента из Сменного задания через параметры ШМД
// В контексте ШМД (например, в модуле обработки-ШМД)
// Параметры доступны через Параметры.Свойство
// Если ШМД вызывается из сменного задания, параметры могут содержать ссылку на задание
// или напрямую на пациента/МК.

// Допустим, параметр "СсылкаПациента" передается в ШМД
Если Параметры.Свойство("СсылкаПациента") Тогда
    СсылкаПациента = Параметры.СсылкаПациента;
    ПациентОбъект = СсылкаПациента.ПолучитьОбъект();
    Если ПациентОбъект <> Неопределено Тогда
        // Теперь мы можем использовать данные ПациентОбъект
        Сообщить("Получен пациент: " + ПациентОбъект.Наименование);
        // Заполняем поля ШМД данными пациента
        // ...
    КонецЕсли;
КонецЕсли;

// Если используется СсылкаМК (Медицинская карта)
Если Параметры.Свойство("СсылкаМК") Тогда
    СсылкаМК = Параметры.СсылкаМК;
    МедицинскаяКартаОбъект = СсылкаМК.ПолучитьОбъект();
    Если МедицинскаяКартаОбъект <> Неопределено Тогда
        // Через медицинскую карту можно получить пациента
        ПациентОбъект = МедицинскаяКартаОбъект.Пациент.ПолучитьОбъект();
        Если ПациентОбъект <> Неопределено Тогда
            Сообщить("Пациент из МК: " + ПациентОбъект.Наименование);
        КонецЕсли;
    КонецЕсли;
КонецЕсли;

Изменение шапки и подвала медицинского документа

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

Редактор форм и свойства элементов

Мы можем изменить настройки формы, включая перемещение элементов в шапку или подвал документа, используя стандартную команду «Все действия» → «Изменить форму» в 1С:Предприятии. Здесь мы можем регулировать видимость элементов, менять их расположение и заголовки.

Добавление текста и изображений в макеты

Для добавления статического текста, логотипов или другой информации в шапку и подвал, мы можем напрямую редактировать макеты печатных форм. Если нам нужно, чтобы информация была динамической, например, выводилась только для врачей с определенной квалификацией, мы используем параметры в макете. Эти параметры будут заполняться программно, как мы уже рассматривали ранее. Например, можно передавать булево значение ЯвляетсяКМН, и если оно Истина, то выводить соответствующий текст.


// Пример заполнения шапки с учетом квалификации
// В модуле обработки-ШМД или там, где формируется табличный документ
Макет = ПолучитьМакет("МойМакетШапки");
ОбластьШапки = Макет.ПолучитьОбласть("Шапка");

// Предположим, у нас есть данные о враче
Врач = Пользователи.НайтиПоИмени("ТекущийПользователь"); // Или получаем врача по другому ключу

Если Врач.ДополнительныеСвойства.Свойство("КандидатМедНаук") И Врач.ДополнительныеСвойства.КандидатМедНаук Тогда
    ОбластьШапки.Параметры.ТекстКвалификации = "Врач, кандидат медицинских наук";
Иначе
    ОбластьШапки.Параметры.ТекстКвалификации = "Врач"; // Или пусто, если не нужно
КонецЕсли;

ОбластьШапки.Параметры.ФИОВрача = Врач.Наименование;
ТабличныйДокумент.Вывести(ОбластьШапки);

Этот подход позволяет нам гибко управлять содержимым шапки и подвала, адаптируя их под конкретные условия и данные.

Важные моменты при работе с ШМД

  1. Статус документа: Всегда помните, что медицинский документ в статусе «Готов» недоступен для изменений. Для редактирования его необходимо перевести в статус «Не готов», что может сделать только сотрудник, подписавший документ.
  2. Понятность для пользователей: Мы должны стремиться к тому, чтобы ШМД были интуитивно понятны медицинским работникам и максимально ускоряли процесс формирования документов.
  3. Доработки и обучение: Не всегда стандартных механизмов достаточно. Возможны индивидуальные доработки и обучение пользователей для адаптации системы под конкретные задачи и потребности клиники.

Таким образом, для эффективной работы с шаблонами медицинских документов в 1С Медицина.Поликлиника мы используем комбинацию встроенного Редактора ШМД, настроек печати, программного заполнения макетов и, при необходимости, мощных инструментов Веб-ШМД для реализации сложной интерактивности. Это позволяет нам создавать гибкие и функциональные медицинские документы, отвечающие всем требованиям.

← На главную