Зарплата и управление персоналом, редакция 2.5 / Модуль менеджера
файл#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ПереопределяемаяНастройкаДополненияВыгрузки
// Предназначена для настройки вариантов интерактивной настройки выгрузки по сценарию узла.
// Для настройки необходимо установить значения свойств параметров в необходимые значения.
//
// Используется для контроля режимов работы помощника интерактивного обмена данными.
//
// Параметры:
// Получатель - ПланОбменаСсылка - Узел, для которого производится настройка
// Параметры - Структура - Параметры для изменения. Содержит поля:
//
// ВариантБезДополнения - Структура - настройки типового варианта "Не добавлять".
// Содержит поля:
// Использование - Булево - флаг разрешения использования варианта. По умолчанию Истина.
// Порядок - Число - порядок размещения варианта на форме помощника, сверху вниз. По умолчанию 1.
// Заголовок - Строка - позволяет переопределить название типового варианта.
// Пояснение - Строка - позволяет переопределить текст пояснения варианта для пользователя.
//
// ВариантВсеДокументы - Структура - настройки типового варианта "Добавить все документы за период".
// Содержит поля:
// Использование - Булево - флаг разрешения использования варианта. По умолчанию Истина.
// Порядок - Число - порядок размещения варианта на форме помощника, сверху вниз. По умолчанию 2.
// Заголовок - Строка - позволяет переопределить название типового варианта.
// Пояснение - Строка - позволяет переопределить текст пояснения варианта для пользователя.
//
// ВариантПроизвольныйОтбор - Структура - настройки типового варианта "Добавить данные с произвольным отбором".
// Содержит поля:
// Использование - Булево - флаг разрешения использования варианта. По умолчанию Истина.
// Порядок - Число - порядок размещения варианта на форме помощника, сверху вниз. По умолчанию 3.
// Заголовок - Строка - позволяет переопределить название типового варианта.
// Пояснение - Строка - позволяет переопределить текст пояснения варианта для пользователя.
//
// ВариантДополнительно - Структура - настройки дополнительного варианта по сценарию узла.
// Содержит поля:
// Использование - Булево - флаг разрешения использования варианта. По умолчанию Ложь.
// Порядок - Число - порядок размещения варианта на форме помощника, сверху
// вниз. По умолчанию 4.
// Заголовок - Строка - название варианта для отображения на форме.
// ИмяФормыОтбора - Строка - Имя формы, вызываемой для редактирования настроек.
// ЗаголовокКомандыФормы - Строка - Заголовок для отрисовки на форме команды открытия формы настроек.
// ИспользоватьПериодОтбора - Булево - флаг того, что необходим общий отбор по периоду. По
// умолчанию Ложь.
// ПериодОтбора - СтандартныйПериод - значение периода общего отбора, предлагаемого по умолчанию.
//
// Отбор - ТаблицаЗначений - содержит строки с описанием подробных отборов по сценарию узла.
// Содержит колонки:
// ПолноеИмяМетаданных - Строка - полное имя метаданных регистрируемого объекта, отбор
// которого описывает строка. Например
// "Документ._ДемоПоступлениеТоваров". Можно использовать
// специальные значения "ВсеДокументы" и "ВсеСправочники"
// для отбора соответственно всех документов и всех
// справочников, регистрирующихся на узле Получатель.
// ВыборПериода - Булево - флаг того, что данная строка описывает отбор с общим периодом.
// Период - СтандартныйПериод - значение периода общего отбора для метаданных строки,
// предлагаемого по умолчанию.
// Отбор - ОтборКомпоновкиДанных - отбор по умолчанию. Поля отбора формируются в
// соответствии с общим правилами формирования полей
// компоновки. Например, для указания отбора по реквизиту
// документа "Организация", необходимо использовать поле "Ссылка.Организация".
//
//
// Если для всех вариантов флаги разрешения использования установлены в Ложь, то страница дополнения выгрузки в помощнике
// интерактивного обмена данными будет пропущена и дополнительная регистрация объектов производится не будет.
// Например, инициализация вида:
//
// Параметры.ВариантВсеДокументы.Использование = Ложь;
// Параметры.ВариантБезДополнения.Использование = Ложь;
// Параметры.ВариантПроизвольныйОтбор.Использование = Ложь;
// Параметры.ВариантДополнительно.Использование = Ложь;
//
// Приведет к тому, что шаг дополнения выгрузки будет полностью пропущен.
//
Процедура НастроитьИнтерактивнуюВыгрузку(Получатель, Параметры) Экспорт
РеквизитыУзлаОбмена = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Получатель, "РежимВыгрузкиДокументов, РежимВыгрузкиСправочников");
Если РеквизитыУзлаОбмена.РежимВыгрузкиДокументов = Перечисления.РежимыВыгрузкиОбъектовОбмена.НеВыгружать
И РеквизитыУзлаОбмена.РежимВыгрузкиСправочников = Перечисления.РежимыВыгрузкиОбъектовОбмена.НеВыгружать Тогда
Параметры.ВариантВсеДокументы.Использование = Ложь;
Параметры.ВариантБезДополнения.Использование = Ложь;
Параметры.ВариантПроизвольныйОтбор.Использование = Ложь;
Параметры.ВариантДополнительно.Использование = Ложь;
Иначе
// Отключаем вариант "ВариантВсеДокументы"
Параметры.ВариантВсеДокументы.Использование = Ложь;
// Настраиваем вариант "Без дополнения"
Параметры.ВариантБезДополнения.Использование = Истина;
Параметры.ВариантБезДополнения.Порядок = 3;
Параметры.ВариантБезДополнения.Заголовок = НСтр("ru = 'Не добавлять документы к отправке'")
+ Символы.ПС
+ НСтр("ru='Отправлять только нормативно-справочную информацию, измененную с момента последней отправки'");
// Настраиваем вариант "Произвольный отбор"
Параметры.ВариантПроизвольныйОтбор.Использование = Истина;
Параметры.ВариантПроизвольныйОтбор.Порядок = 2;
ПравилаОтправкиДокументовПолучателя = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Получатель, "ПравилаОтправкиДокументов");
Если ПравилаОтправкиДокументовПолучателя = "НеСинхронизировать" Тогда
Параметры.ВариантПроизвольныйОтбор.Заголовок = НСтр("ru = 'Добавить справочники'");
Иначе
Параметры.ВариантПроизвольныйОтбор.Заголовок = НСтр("ru = 'Добавить произвольные справочники и документы'");
КонецЕсли;
Если Не ПравилаОтправкиДокументовПолучателя = "НеСинхронизировать" Тогда
// Вычисляем и устанавливаем параметры сценария
ПараметрыПоУмолчанию = ПараметрыВыгрузкиПоУмолчанию(Получатель);
// Настраиваем вариант "Дополнительно" по сценарию узла
Параметры.ВариантДополнительно.Использование = Истина;
Параметры.ВариантДополнительно.Порядок = 1;
Параметры.ВариантДополнительно.Заголовок = НСтр("ru='Отправить все документы'");
Параметры.ВариантДополнительно.ИмяФормыОтбора = "ОбщаяФорма.НастройкаВыгрузки";
Параметры.ВариантДополнительно.ЗаголовокКомандыФормы = НСтр("ru='Выбрать организации для отбора'");
Параметры.ВариантДополнительно.ИспользоватьПериодОтбора = Истина;
Параметры.ВариантДополнительно.ПериодОтбора = ПараметрыПоУмолчанию.Период;
// Добавляем строка настройки отбора
СтрокаОтбора = Параметры.ВариантДополнительно.Отбор.Добавить();
СтрокаОтбора.ПолноеИмяМетаданных = "ВсеДокументы";
СтрокаОтбора.ВыборПериода = Истина;
СтрокаОтбора.Период = ПараметрыПоУмолчанию.Период;
СтрокаОтбора.Отбор = ПараметрыПоУмолчанию.Отбор;
Иначе
Параметры.ВариантДополнительно.Использование = Ложь;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
// Расчет параметров выгрузки по умолчанию.
//
// Параметры:
// Получатель - ПланОбменаСсылка - Узел, для которого производится настройка.
//
// Возвращаемое значение - Структура - содержит поля:
// ПредставлениеОтбора - Строка - текстовое описание отбора по умолчанию ;
// Период - СтандартныйПериод - значение периода общего отбора по умолчанию;
// Отбор - ОтборКомпоновкиДанных - отбор.
//
Функция ПараметрыВыгрузкиПоУмолчанию(Получатель)
Результат = Новый Структура;
// Период по умолчанию
Результат.Вставить("Период", Новый СтандартныйПериод);
Результат.Период.Вариант = ВариантСтандартногоПериода.ПрошлыйМесяц;
// Отбор по умолчанию и его представление
КомпоновщикОтбора = Новый КомпоновщикНастроекКомпоновкиДанных;
Результат.Вставить("Отбор", КомпоновщикОтбора.Настройки.Отбор);
// Общее представление, период не включаем, так как в этом сценарии поле периода будет редактироваться отдельно.
Результат.Вставить( "ПредставлениеОтбора",
СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru='Будут отправлены все документы за %1'"),
НРег(Строка(Результат.Период.Вариант))));
Возврат Результат;
КонецФункции
// Возвращает представление отбора для варианта дополнения выгрузки по сценарию узла.
// См. описание "ВариантДополнительно" в процедуре "НастроитьИнтерактивнуюВыгрузку".
//
// Параметры:
// Получатель - ПланОбменаСсылка - Узел, для которого определяется представление отбора
// Параметры - Структура - Характеристики отбора. Содержит поля:
// ИспользоватьПериодОтбора - Булево - флаг того, что необходимо использовать общий отбор по периоду.
// ПериодОтбора - СтандартныйПериод - значение периода общего отбора.
// Отбор - ТаблицаЗначений - содержит строки с описанием подробных отборов по сценарию узла.
// Содержит колонки:
// ПолноеИмяМетаданных - Строка - полное имя метаданных регистрируемого объекта, отбор
// которого описывает строка. Например
// "Документ._ДемоПоступлениеТоваров". Могут быть
// использованы специальные значения "ВсеДокументы" и
// "ВсеСправочники" для отбора соответственно всех
// документов и всех справочников, регистрирующихся на
// узле Получатель.
// ВыборПериода - Булево - флаг того, что данная строка описывает отбор с общим периодом.
// Период - СтандартныйПериод - значение периода общего отбора для метаданных строки.
// Отбор - ОтборКомпоновкиДанных - поля отбора. Поля отбора формируются в соответствии с
// общим правилами формирования полей компоновки.
// Например, для указания отбора по реквизиту документа
// "Организация", будет использовано поле "Ссылка.Организация".
//
// Возвращаемое значение:
// Строка - описание отбора.
//
Функция ПредставлениеОтбораИнтерактивнойВыгрузки(Получатель, Параметры) Экспорт
Если Параметры.ИспользоватьПериодОтбора Тогда
Если ЗначениеЗаполнено(Параметры.ПериодОтбора) Тогда
ОписаниеПериода = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru='за период: %1'"), НРег(Параметры.ПериодОтбора));
Иначе
ДатаНачалаВыгрузки = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Получатель, "ДатаНачалаВыгрузкиДокументов");
Если ЗначениеЗаполнено(ДатаНачалаВыгрузки) Тогда
ОписаниеПериода = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru='начиная с даты начала отправки документов: %1'"), Формат(ДатаНачалаВыгрузки, "ДЛФ=DD"));
Иначе
ОписаниеПериода = НСтр("ru='за весь период учета'");
КонецЕсли;
КонецЕсли;
Иначе
ОписаниеПериода = "";
КонецЕсли;
СписокОрганизаций = ОрганизацииОтбораИнтерактивнойВыгрузки(Параметры.Отбор);
Если СписокОрганизаций.Количество()=0 Тогда
ОписаниеОтбораОрганизации = НСтр("ru='по всем организациям'");
Иначе
ОписаниеОтбораОрганизации = "";
Для Каждого Элемент Из СписокОрганизаций Цикл
ОписаниеОтбораОрганизации = ОписаниеОтбораОрганизации+ ", " + Элемент.Представление;
КонецЦикла;
ОписаниеОтбораОрганизации = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru='с отбором по организациям: %1'"), СокрЛП(Сред(ОписаниеОтбораОрганизации, 2)));
КонецЕсли;
Возврат СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru='Будут отправлены все документы %1,
|%2'"),
ОписаниеПериода, ОписаниеОтбораОрганизации);
КонецФункции
// Возвращает список организаций по таблице отбора (см "ПредставлениеОтбораИнтерактивнойВыгрузки")
// Также используется из демонстрационной формы "НастройкаВыгрузки" этого плана обмена.
//
// Параметры:
// ТаблицаОтбора - ТаблицаЗначений - содержит строки с описанием подробных отборов по сценарию узла. Содержит колонки:
// ПолноеИмяМетаданных - Строка;
// ВыборПериода - Булево;
// Период - СтандартныйПериод;
// Отбор - ОтборКомпоновкиДанных.
//
// Возвращаемое значение:
// СписокЗначений - значение - ссылка на организацию, представление - наименование.
//
Функция ОрганизацииОтбораИнтерактивнойВыгрузки(Знач ТаблицаОтбора)
Результат = Новый СписокЗначений;
Если ТаблицаОтбора.Количество()=0 Или ТаблицаОтбора[0].Отбор.Элементы.Количество()=0 Тогда
// Нет данных отбора
Возврат Результат;
КонецЕсли;
// Мы знаем состав отбора, так как помещали туда сами - или из "НастроитьИнтерактивнуюВыгрузку",
// или как результат редактирования в форме.
СтрокаДанных = ТаблицаОтбора[0].Отбор.Элементы[0];
Отобранные = СтрокаДанных.ПравоеЗначение;
ТипКоллекции = ТипЗнч(Отобранные);
Если ТипКоллекции=Тип("СписокЗначений") Тогда
Для Каждого Элемент Из Отобранные Цикл
ДобавитьСписокОрганизаций(Результат, Элемент.Значение);
КонецЦикла;
ИначеЕсли ТипКоллекции=Тип("Массив") Тогда
ДобавитьСписокОрганизаций(Результат, Отобранные);
ИначеЕсли ТипКоллекции=Тип("СправочникСсылка.Организации") Тогда
Если Результат.НайтиПоЗначению(Отобранные)=Неопределено Тогда
Результат.Добавить(Отобранные, Отобранные.Наименование);
КонецЕсли;
КонецЕсли;
Возврат Результат;
КонецФункции
// Добавляет в список организаций коллекцию
//
// Параметры:
// Список - СписокЗначений - дополняемый список;
// Организации - коллекция организаций.
//
Процедура ДобавитьСписокОрганизаций(Список, Знач Организации)
Для Каждого Организация Из Организации Цикл
Если ТипЗнч(Организация)=Тип("Массив") Тогда
ДобавитьСписокОрганизаций(Список, Организация);
Продолжить;
КонецЕсли;
Если Список.НайтиПоЗначению(Организация)=Неопределено Тогда
Список.Добавить(Организация, Организация.Наименование);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
#КонецОбласти
#Область Прочее
// Заполняет настройки, влияющие на использование плана обмена.
//
// Параметры:
// Настройки - Структура - настройки плана обмена по умолчанию, см. ОбменДаннымиСервер.НастройкиПланаОбменаПоУмолчанию,
// описание возвращаемого значения функции.
//
Процедура ПриПолученииНастроек(Настройки) Экспорт
Настройки.ИмяКонфигурацииИсточника = "УправлениеПредприятием";
Настройки.ПредупреждатьОНесоответствииВерсийПравилОбмена = Ложь;
Настройки.ПланОбменаИспользуетсяВМоделиСервиса = Ложь;
Настройки.Алгоритмы.ПриПолученииОписанияВариантаНастройки = Истина;
Настройки.Алгоритмы.НастроитьИнтерактивнуюВыгрузку = Истина;
Настройки.Алгоритмы.ПредставлениеОтбораИнтерактивнойВыгрузки = Истина;
КонецПроцедуры
// Заполняет набор параметров, определяющих вариант настройки обмена.
//
// Параметры:
// ОписаниеВарианта - Структура - набор варианта настройки по умолчанию,
// см. ОбменДаннымиСервер.ОписаниеВариантаНастройкиОбменаПоУмолчанию,
// описание возвращаемого значения.
// ИдентификаторНастройки - Строка - идентификатор варианта настройки обмена.
// ПараметрыКонтекста - Структура - см. ОбменДаннымиСервер.ПараметрыКонтекстаПолученияОписанияВариантаНастройки,
// описание возвращаемого значения функции.
//
Процедура ПриПолученииОписанияВариантаНастройки(ОписаниеВарианта, ИдентификаторНастройки, ПараметрыКонтекста) Экспорт
КраткаяИнформацияПоОбмену = НСтр("ru = 'Данная настройка позволит синхронизировать данные между программами ""1С:ERP Управление предприятием, редакция 2"",
|и ""Зарплата и Управление Персоналом, редакция 2.5"". В синхронизации участвуют документы и нормативно-справочная информация.'");
ПодробнаяИнформацияПоОбмену = "ПланОбмена.ОбменУправлениеПредприятиемЗарплатаИУправлениеПерсоналом25.Форма.ПодробнаяИнформация";
ОписаниеВарианта.ПутьКФайлуКомплектаПравилНаПользовательскомСайте = "https://users.v8.1c.ru/distribution/project/HRM";
ОписаниеВарианта.ПутьКФайлуКомплектаПравилВКаталогеШаблонов = "\1c\hrm";
ОписаниеВарианта.ИмяФайлаНастроекДляПриемника = НСтр("ru = 'Настройки обмена ERP-ЗУП'");
ОписаниеВарианта.ИспользоватьПомощникСозданияОбменаДанными = Истина;
ОписаниеВарианта.ИспользуемыеТранспортыСообщенийОбмена = ИспользуемыеТранспортыСообщенийОбмена();
ОписаниеВарианта.КраткаяИнформацияПоОбмену = КраткаяИнформацияПоОбмену;
ОписаниеВарианта.ПодробнаяИнформацияПоОбмену = ПодробнаяИнформацияПоОбмену;
ОписаниеВарианта.ИмяКонфигурацииКорреспондента = НСтр("ru = 'ЗарплатаИУправлениеПерсоналом'");
КонецПроцедуры
// Возвращает массив используемых транспортов сообщений для этого плана обмена
//
// 1. Например, если план обмена поддерживает только два транспорта сообщений FILE и FTP,
// то тело функции следует определить следующим образом:
//
// Результат = Новый Массив;
// Результат.Добавить(Перечисления.ВидыТранспортаСообщенийОбмена.FILE);
// Результат.Добавить(Перечисления.ВидыТранспортаСообщенийОбмена.FTP);
// Возврат Результат;
//
// 2. Например, если план обмена поддерживает все транспорты сообщений, определенных в конфигурации,
// то тело функции следует определить следующим образом:
//
// Возврат ОбменДаннымиСервер.ВсеТранспортыСообщенийОбменаКонфигурации();
//
// Возвращаемое значение:
// Массив - массив содержит значения перечисления ВидыТранспортаСообщенийОбмена.
//
Функция ИспользуемыеТранспортыСообщенийОбмена()
Результат = Новый Массив;
Результат.Добавить(Перечисления.ВидыТранспортаСообщенийОбмена.FILE);
Результат.Добавить(Перечисления.ВидыТранспортаСообщенийОбмена.FTP);
Результат.Добавить(Перечисления.ВидыТранспортаСообщенийОбмена.COM);
Возврат Результат;
КонецФункции
#КонецОбласти
#КонецЕсли