Как создать сегмент клиентов программно и заполнить схему компоновки данных

1. FlyBird 05.06.18 17:55 Сейчас в теме
Здравствуйте! Подскажите, пожалуйста, создаю элемент справочника "Сегменты партнеров" в УТ 11 программно. Как созданному элементу присвоить схему компоновки данных с определенным отбором?

Элемент = Справочники.СегментыПартнеров.СоздатьЭлемент();
Элемент.ДатаСоздания = ТекущаяДата();
Элемент.Наименование = "Группа контрагентов";
Элемент.СпособФормирования = Перечисления.СпособыФормированияСегментов.ФормироватьДинамически;
Элемент.ИмяШаблонаСКД = "ОсновнаяСхема";
Элемент.Записать();

Далее я по логике понимаю, что нужно заполнить Схему компоновки данных и потом поместить ее в реквизиты справочника : СхемаКомпоновкиДанных и ХранилищеНастроекКомпоновкиДанных с типом данных: ХранилищеЗначения, как это сделать? Отбор должен быть такой: 

	Группа = Справочники.СегментыПартнеров.НайтиПоНаименованию("Группа контрагентов");
	Поле = Новый ПолеКомпоновкиДанных("Партнер.[Группа (Общие)]"); 
    Строка = КомпоновщикНастроек.Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); 
	Строка.Использование = Истина; 
   	Строка.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; 
   	Строка.ЛевоеЗначение = Поле;
	Строка.ПравоеЗначение = Группа;
Показать
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user671616_nikeefn 08.06.18 15:40 Сейчас в теме
Я сделал так на клиенте...

Для Каждого Строка Из Объект.ТаблСкидок Цикл
		
		ФормаЗаписи = ПолучитьФорму("Справочник.СкидкиНаценки.Форма.ФормаЭлемента");
		
		  СтруктураСвойств = Новый Структура; // Структура содержит значения тех реквизитов, которые нужно заполнить на форме нового документа, но которых нет в документе-источнике
		  СтруктураСвойств.Вставить("Наименование",""+Строка.Поставщик + " - " +Строка.Соглашение+ ", " +Строка.Скидка+ "%, " +Строка.Группа+ "/" +Строка.Код1+ "/" +Строка.Код2+ "/" +Строка.Код3);
		  СтруктураСвойств.Вставить("ЗначениеСкидкиНаценки", Строка.Скидка);
		  СтруктураСвойств.Вставить("ВариантОтбораНоменклатуры", ПредопределенноеЗначение("Перечисление.ВариантыОтбораНоменклатурыДляРасчетаСкидокНаценок.ОтборКомпоновкиДанных"));
		  
  		  
		  
		 
		  ФормаЗаписи.Элементы.ОтборПредставление.Видимость = (ФормаЗаписи.Объект.ВариантОтбораНоменклатуры = ПредопределенноеЗначение("Перечисление.ВариантыОтбораНоменклатурыДляРасчетаСкидокНаценок.ОтборКомпоновкиДанных"));
		  
		ЭлементОтбора = ФормаЗаписи.КомпоновщикНастроекОтборПоНоменклатуре.Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
		ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Номенклатура");
		ЭлементОтбора.Использование = Истина;
		ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
		ЭлементОтбора.ПравоеЗначение = "цколыотаьб";
		
		 СтруктураСвойств.Вставить("КомпоновщикНастроекОтборПоНоменклатуре", ЭлементОтбора);
		
		
		
		ЗаполнитьЗначенияСвойств(ФормаЗаписи.Объект,СтруктураСвойств,"Наименование,ЗначениеСкидкиНаценки,ВариантОтбораНоменклатуры",);
		ФормаЗаписи.Открыть();


	КонецЦикла;
Показать
3. FlyBird 08.06.18 21:53 Сейчас в теме
(2)
ВариантОтбораНоменклатуры

поясните что значит ПредопределенноеЗначение("Перечисление.ВариантыОтбораНоменклатурыДляРасчетаСкидокНаценок.ОтборКомпоновкиДанных") ?
4. FlyBird 08.06.18 21:57 Сейчас в теме
(2)
ПредопределенноеЗначение

и у меня форма схемы компоновки данных вызывается отдельно, она не в справочнике, а общая форма - называется УпрощеннаяСхемаКомпоновкиДанных
5. FlyBird 08.06.18 22:17 Сейчас в теме
(2) вот вызов процедуры, которая открывает СКД:

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

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот