ИнтерактивноеИзменениеВыгрузкиРеквизитПоНастройкам (БСП)

Автор: 1С
ОбщийМодуль.ОбменДаннымиСервер
БСП

Интерактивное изменение выгрузки реквизит по настройкам. Заполняет реквизит формы по данным структуры настроек.

// Заполняет реквизит формы по данным структуры настроек.
//
// Параметры:
//     Форма                       - ФормаКлиентскогоПриложения - форма для установки реквизита.
//     НастройкиДополненияВыгрузки - Структура        - исходные настройки.
//     ИмяРеквизитаДополнения      - Строка           - имя реквизита формы для создания или заполнения.
//
Процедура ИнтерактивноеИзменениеВыгрузкиРеквизитПоНастройкам(Форма, Знач НастройкиДополненияВыгрузки, Знач ИмяРеквизитаДополнения="ДополнениеВыгрузки") Экспорт
	
	УстановитьПривилегированныйРежим(Истина);
	
	ПараметрыСценарияДополнения = НастройкиДополненияВыгрузки.ПараметрыСценарияДополнения;
	
	// Разбираемся с реквизитами
	РеквизитДополнения = Неопределено;
	Для Каждого Реквизит Из Форма.ПолучитьРеквизиты() Цикл
		Если Реквизит.Имя=ИмяРеквизитаДополнения Тогда
			РеквизитДополнения = Реквизит;
			Прервать;
		КонецЕсли;
	КонецЦикла;
	
	// Проверяем и добавляем реквизит.
	Добавляемые = Новый Массив;
	Если РеквизитДополнения=Неопределено Тогда
		РеквизитДополнения = Новый РеквизитФормы(ИмяРеквизитаДополнения, 
			Новый ОписаниеТипов("ОбработкаОбъект.ИнтерактивноеИзменениеВыгрузки"));
			
		Добавляемые.Добавить(РеквизитДополнения);
		Форма.ИзменитьРеквизиты(Добавляемые);
	КонецЕсли;
	
	// Проверяем и добавляем колонки общей дополнительной регистрации.
	ПутьРеквизитаТаблицы = РеквизитДополнения.Имя + ".ДополнительнаяРегистрация";
	Если Форма.ПолучитьРеквизиты(ПутьРеквизитаТаблицы).Количество()=0 Тогда
		Добавляемые.Очистить();
		Колонки = НастройкиДополненияВыгрузки.ДополнительнаяРегистрация.Колонки;
		Для Каждого Колонка Из Колонки Цикл
			Добавляемые.Добавить(Новый РеквизитФормы(Колонка.Имя, Колонка.ТипЗначения, ПутьРеквизитаТаблицы));
		КонецЦикла;
		Форма.ИзменитьРеквизиты(Добавляемые);
	КонецЕсли;
	
	// Проверяем и добавляем колонки дополнительной регистрации сценария узла.
	ПутьРеквизитаТаблицы = РеквизитДополнения.Имя + ".ДополнительнаяРегистрацияСценарияУзла";
	Если Форма.ПолучитьРеквизиты(ПутьРеквизитаТаблицы).Количество()=0 Тогда
		Добавляемые.Очистить();
		Колонки = ПараметрыСценарияДополнения.ВариантДополнительно.Отбор.Колонки;
		Для Каждого Колонка Из Колонки Цикл
			Добавляемые.Добавить(Новый РеквизитФормы(Колонка.Имя, Колонка.ТипЗначения, ПутьРеквизитаТаблицы));
		КонецЦикла;
		Форма.ИзменитьРеквизиты(Добавляемые);
	КонецЕсли;
	
	// Добавляем данные
	ЗначениеРеквизита = Форма[ИмяРеквизитаДополнения];
	
	// Обрабатываем таблицы значений.
	ЗначениеВДанныеФормы(ПараметрыСценарияДополнения.ВариантДополнительно.Отбор,
		ЗначениеРеквизита.ДополнительнаяРегистрацияСценарияУзла);
	
	ПараметрыСценарияДополнения.ВариантДополнительно.Отбор =ТаблицаВМассивСтруктур(
		ПараметрыСценарияДополнения.ВариантДополнительно.Отбор);
	
	ЗначениеРеквизита.ПараметрыСценарияДополнения = ПараметрыСценарияДополнения;
	
	ЗначениеРеквизита.УзелИнформационнойБазы = НастройкиДополненияВыгрузки.УзелИнформационнойБазы;

	ЗначениеРеквизита.ВариантВыгрузки                 = НастройкиДополненияВыгрузки.ВариантВыгрузки;
	ЗначениеРеквизита.ПериодОтбораВсехДокументов      = НастройкиДополненияВыгрузки.ПериодОтбораВсехДокументов;
	
	Данные = ПолучитьИзВременногоХранилища(НастройкиДополненияВыгрузки.АдресКомпоновщикаВсехДокументов);
	УдалитьИзВременногоХранилища(НастройкиДополненияВыгрузки.АдресКомпоновщикаВсехДокументов);
	ЗначениеРеквизита.АдресКомпоновщикаВсехДокументов = ПоместитьВоВременноеХранилище(Данные, Форма.УникальныйИдентификатор);
	
	ЗначениеРеквизита.ПериодОтбораСценарияУзла = ПараметрыСценарияДополнения.ВариантДополнительно.ПериодОтбора;
	
	Если ПараметрыСценарияДополнения.ВариантДополнительно.Использование Тогда
		ЗначениеРеквизита.ПредставлениеОтбораСценарияУзла = ПредставлениеДополненияВыгрузкиПоСценариюУзла(ЗначениеРеквизита);
	КонецЕсли;
	
	УстановитьПривилегированныйРежим(Ложь);
	
КонецПроцедуры

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

Рекомендации

Похожие публикации

ИнтерактивноеИзменениеВыгрузкиСохранитьНастройки (БСП)

ИнтерактивноеИзменениеВыгрузкиЗарегистрироватьДополнительныеДанные (БСП)

ИнтерактивноеИзменениеВыгрузкиВосстановитьНастройки (БСП)

ИнтерактивноеИзменениеВыгрузки_СформироватьТабличныйДокументПользователя (БСП)

ИнтерактивноеИзменениеВыгрузки_СформироватьДеревоЗначений (БСП)

ИнтерактивноеИзменениеВыгрузкиОчисткаДетально (БСП)

ИнтерактивноеИзменениеВыгрузки (БСП)

ИнтерактивноеИзменениеВыгрузкиОчисткаОбщегоОтбора (БСП)

ИнтерактивноеИзменениеВыгрузкиФильтрВарианта (БСП)

Обновлятор-1С: групповое (пакетное) обновление и обслуживание всех баз за один раз