Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
23 июн 2024, 14:58

Программное заполнение настроек сегмента

Автор Kamor, 09 июл 2018, 09:53

0 Пользователей и 1 гость просматривают эту тему.

Kamor

Добрый день!
Программа УТ 11.4. Необходимо программно создать и заполнить настройки в Сегменте клиентов, подскажите как вызвать и заполнить настройки.
Заполняются они в общем модуле "УпрощеннаяНастройкаСхемыКомпоновкиДанных".

temrmal

Цитата: Kamor от 09 июл 2018, 09:53
Добрый день!
Программа УТ 11.4. Необходимо программно создать и заполнить настройки в Сегменте клиентов, подскажите как вызвать и заполнить настройки.
Заполняются они в общем модуле "УпрощеннаяНастройкаСхемыКомпоновкиДанных".

Прямо с нуля код выложить?
Напишите что не получается и что пробовали сделать?

Kamor

сам сегмент создал, не получается заполнить его настройки(где указывается отбор). Пока даже нет идей как  заполнить данные настройки и сохранить их.

Kamor

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

СГ = Справочники.СегментыПартнеров.НайтиПоНаименованию("Название партнера");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| СегментыПартнеров.СхемаКомпоновкиДанных КАК СхемаКомпоновкиДанных,
| СегментыПартнеров.ХранилищеНастроекКомпоновкиДанных КАК ХранилищеНастроекКомпоновкиДанных,
| СегментыПартнеров.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных,
| СегментыПартнеров.Представление КАК Представление,
| СегментыПартнеров.Описание КАК Описание,
| СегментыПартнеров.Наименование КАК Наименование,
| СегментыПартнеров.Ссылка КАК Ссылка
|ИЗ
| Справочник.СегментыПартнеров КАК СегментыПартнеров
|ГДЕ
| СегментыПартнеров.Ссылка = &Ссылка";
Запрос.УстановитьПараметр("Ссылка",СГ );
РезультатЗапроса = Запрос.Выполнить();

ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        ссылка = ВыборкаДетальныеЗаписи.ссылка;
сегмент = ссылка.получитьобъект();
тест = сегмент.ХранилищеНастроекКомпоновкиДанных.Получить();
тест.Отбор.Элементы[1].Элементы[1].правоезначение = "Тест";
тест.Отбор.Элементы[1].Элементы[0].правоезначение = "Тест";
сегмент.записать();
КонецЦикла;


Добавлено: 08 авг 2018, 11:20


В итоге создал вручную 1 сегмент и копированием сделал его для всех партнеров. Код конечно некрасивый и можно сократить)

Запрос2 = Новый Запрос;
Запрос2.Текст =
"ВЫБРАТЬ
| Партнеры.Наименование КАК Наименование,
| Партнеры.Ссылка КАК Ссылка
|ИЗ
| Справочник.Партнеры КАК Партнеры";

РезультатЗапроса2 = Запрос2.Выполнить();

ВыборкаДетальныеЗаписи2 = РезультатЗапроса2.Выбрать();

Пока ВыборкаДетальныеЗаписи2.Следующий() Цикл

//Находим созданный сегмент и копируем его
СГ1 = Справочники.СегментыПартнеров.НайтиПоНаименованию("Парнер для копирования");
Пар1 = справочники.Партнеры.НайтиПоНаименованию("Патнер");//здесь пытался понять как копируется скд
сегмент1 = СГ1.ПолучитьОбъект();//ссылка1.получитьобъект();
тест1 = сегмент1.ХранилищеНастроекКомпоновкиДанных.Получить();
тест1.Отбор.Элементы[1].Элементы[1].правоезначение = Пар1;
тест1.Отбор.Элементы[1].Элементы[1].использование = истина;
ХЗ  = новый ХранилищеЗначения(ТЕСТ1);
сегмент1.ХранилищеНастроекКомпоновкиДанных  = ХЗ;
НовыйСегмент = СГ1.Скопировать();//Ссылка1.скопировать();

//Записываем скопированный сегмент
Ссылка =  НовыйСегмент.ссылка;
НовыйСегмент.записать();
НовыйСегмент = НовыйСегмент.Ссылка.получитьОбъект();
Партнер = ВыборкаДетальныеЗаписи2.ссылка;
ХЗ = ХЗ.Получить();
ХЗ.Отбор.Элементы[1].Элементы[0].правоезначение = Партнер;
ХЗ.Отбор.Элементы[1].Элементы[0].использование = истина;
ХЗ.Отбор.Элементы[1].Элементы[1].правоезначение = Партнер;
ХЗ.Отбор.Элементы[1].Элементы[1].использование = истина;
НовыйСегмент.наименование = ВыборкаДетальныеЗаписи2.наименование;
получитьХЗ = НовыйСегмент.ХранилищеНастроекКомпоновкиДанных.получить();
получитьХЗ= ХЗ;
НовыйСегмент.записать();
тест = НовыйСегмент.ХранилищеНастроекКомпоновкиДанных.Получить();
тест.Отбор.Элементы[1].Элементы[0].правоезначение = Партнер;
тест.Отбор.Элементы[1].Элементы[1].правоезначение = Партнер;
НовыйСегмент.записать();

//Открываем записаный сегмент и меняем СКД
СГ = НовыйСегмент.ссылка; //Справочники.СегментыПартнеров.НайтиПоНаименованию("Наше предприятие");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| СегментыПартнеров.СхемаКомпоновкиДанных КАК СхемаКомпоновкиДанных,
| СегментыПартнеров.ХранилищеНастроекКомпоновкиДанных КАК ХранилищеНастроекКомпоновкиДанных,
| СегментыПартнеров.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных,
| СегментыПартнеров.Представление КАК Представление,
| СегментыПартнеров.Описание КАК Описание,
| СегментыПартнеров.Наименование КАК Наименование,
| СегментыПартнеров.Ссылка КАК Ссылка
|ИЗ
| Справочник.СегментыПартнеров КАК СегментыПартнеров
|ГДЕ
| СегментыПартнеров.Ссылка = &Ссылка";
Запрос.УстановитьПараметр("Ссылка",СГ );
РезультатЗапроса = Запрос.Выполнить();

ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Пар = НовыйСегмент.ссылка;//справочники.Партнеры.НайтиПоНаименованию("Наше предприятие");
ссылка = ВыборкаДетальныеЗаписи.ссылка;
сегмент = ссылка.получитьобъект();
тест = сегмент.ХранилищеНастроекКомпоновкиДанных.Получить();
тест.Отбор.Элементы[1].Элементы[1].правоезначение = Пар;
тест.Отбор.Элементы[1].Элементы[1].использование = истина;
тест.Отбор.Элементы[1].Элементы[0].правоезначение = Пар;
тест.Отбор.Элементы[1].Элементы[0].использование = истина;
ХЗ  = новый ХранилищеЗначения(ТЕСТ);
сегмент.ХранилищеНастроекКомпоновкиДанных  = ХЗ;
сегмент.записать();
КонецЦикла;
//прервать;
КонецЦикла;

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск