${ЗОНА(1. Инструкция)
//
// Порядок формирования отчета 
// Выполнить:
// Отчеты - Отчетность по статистике - F7 (добавить) - Мониторинг (Минздрав) XML Штатное расписание
// Указать период (один месяц)
// После того как добавиться строка (таблица) отчета:
// - при необходимости, зайти в таблицу (Enter) и проверить данные
// - сформировать Excel-отчет (F5)
// - выполнить передачу в XML-файл (Alt + F9) перед этим Excel-отчет должен быть сфоримрован, для XML-файла данные берутся из Excel
// Для отчета по данной форме нужен XML-файл
//
//--------------------------------------------------------------------------------------------------------------------
//
//Настройки для формы: Настройка -> 5.  Настройки таблиц и форм печати -> >> Отчеты для медицины -> Настройки "Формы для заполнения"
//ДОЛЖНОСТИ:
//  "Как определять название должности"
//     1-брать название из справочника ФРМР(по умолчанию)
//     2-брать значение из к.ч.
//     (Название должности определяется по должности, указанной в к.ч. на конец месяца
//      Если в справочнике должностей для должности указана ссылка на должность из ФРМР, то напечатается название должности ФРМР
//      Если в справочнике должностей для должности НЕ указана ссылка на должность из ФРМР, то перед название должности из к.ч. будет добавлен префикс "Должность не из справочника ФРМР:"
//      Если в справочнике должностей для должности НЕ указана ссылка на должность из ФРМР, и в настройке "Как определять название должности" не стоит 1, напечатается название должности из к.ч. (префикс добавлен не будет))
//ПРОЧИЕ НАСТРОЙКИ:
//  "Код региона" - указанное значение подставится в первый столбец формы
//  "Полное наименование МО" - указанное значение подставится во второй столбец формы
//  "Как сортировать данные"
//     0-не сортировать
//     1-сортировать по фио
//     2-сортировать по СНИЛС
//     +4-основная должность печатается первой
//  "Как учитывать количество ставок для штатного расписания"
//     0-по факту: Значение берется из поля таблицы Stavka (вычисляется суммированием строк таблицы по ключевым полям)
//     1-по плану: Значение берется из Справочника "Должности" (поле таблицы Shtat)
//   "Дополнительные настройки печати" - 0 (нужно чтобы в этой настройке было 0 - печатаются столбцы таблицы помеченные + в колонке "Печать")
//
//--------------------------------------------------------------------------------------------------------------------
//
//Отделение/Кабинет и OID Отделение/Кабинет (необязательные поля)
//  В случае, если кроме значений "Подразделение" и "OID структурного подразделения" нужно указывать еще и "Отделение/Кабинет" и "OID Отделение/Кабинет"
//  Нужно сделать следующие настройки:
//  - В настройке изменяемой кадровой части (Настройка - Настройка кадровой части - Настройка изменяемой кадровой части) добавить поле
//    Название: Отделение (кабинет) (или ваш вариант)
//    Тип: T (большая латинская буква)
//    Длина: 5
//    Псевдоним: otd_kab
//  - В справочнике кадровой части (Справочники - Справочники кадровой части) нужно добавить справочник для добавленного поля кадровой части
//    Зайдите в справочники кадровой части
//    Нажмите F7, появится диалог "Выберите поле КЧ, для которого добавить справочник", выберите любое поле
//    В название справочника впишите название добавленного поля КЧ
//    Нажмите Ctrl+A+A, в таблице списка справочников появятся дополнительные столбцы.
//    В столбце "имя файла" впишите: otd_kab.tab
//    Ключевое поле: 0; Поле значения: 1
//    Выйдите с сохранением из списка справочников 
//  Добавленный справочник нужно откорректировать, убрать лишнее, добавить нужное. Для каждого значения Наименования "Отделение/Кабинет" указать Код и OID
//  В КЧ заполнять поле "Отделение/Кабинет" используюя справочника. (Стоя курсором на поле нажать Enter, затем F2)
//
//
$}ЗОНА(1. Инструкция)
//
&Format(N,2,0)=0;
&FPRINT(N,2,0)=1;
&FF(N,3,0)=1;
$BEG_SCRIPT

   var CurFile=CreateObject("CurPrnFile");
   CurFile.SetFlagBrowse(0);

   var CTabl = CreateObject("CurPrnTbl");
   var KeyValueRef = CTabl.GetKeyValueCollections(true);
   string commonPart = GetAmbaResourceWorkDir();
   string formPart = TrimN(KeyValueRef.GetValue("__AdditionalFiles/xls"));
   string fullXlsName = commonPart + formPart;

   int acc = access(to_string(fullXlsName),0);
   if ( acc || !strlen(formPart) ) FF = 0;

$END_SCRIPT
//
$ЕСЛИ(_EQ(FF-1))
   #FPRINT=ДВЕ_КНОПКИ(15,9,70,15,Режим печати отчета, Открыть сформированный , Пересоздать );
   $ЕСЛИ(_EQ(FPRINT-27))
      $ВЫХОД
   $КОНЕЦ_ЕСЛИ
$КОНЕЦ_ЕСЛИ
//
$BEG_SCRIPT

   int np = 3;
   var param[np];
   
   param[0] = atoi(Format);
   param[1] = atoi(FPRINT);
   param[2] = 3; // Штатное расписание

   var modules=GetArray("forms\\monitoringMed2020","forms\\monitoringMed_common","forms\\monitoringMedXml");
   ReLoadSMs(modules);
   PrintMonitoringMedXml(param,np);
   UnLoadSMs(modules);

$END_SCRIPT
$ВЫХОД