Имя: Пароль:
1C
 
СКД - восстановить схему по адресу...
0 mikecool
 
28.08.25
09:33
Внешняя обработка, в ПриСозданииНаСервере пишу:

ОтборыПрайса = ОбработкаОбъект.ПолучитьМакет("ОтборыПрайса");  
АдресСхемы = ПоместитьВоВременноеХранилище(ОтборыПрайса, УникальныйИдентификатор);
Компоновщик.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресСхемы));


АдресСхемы, Компоновщик - реквизиты формы

когда мне нужно для выборки пишу:

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


В результате запроса - пусто, схема с теми же параметрами в консоли СКД результат выдает
чего же я сделал не так?
1 mikecool
 
28.08.25
09:13
смущает, что в макете компоновки есть параметры, но нет источников данных...
2 Fedor-1971
 
28.08.25
09:29
(0) а точно верная логика?
1. АдресСхемы = ПоместитьВоВременноеХранилище(ОтборыПрайса, УникальныйИдентификатор); - поместил в хранилище формы
2. Инициализировал Компоновщик
3. СхемаКомпоновкиДанных = ПолучитьИзВременногоХранилища(АдресСхемы); - прочитал чистую схему (форма ещё существует?)

И, на всякий случай, проверь Компоновщик в обеих случаях одно и то же?
3 СвинТуз
 
28.08.25
09:34
(0)
Во втором случае компоновщик это что?
Тоже реквизит формы?
4 toypaul
 
гуру
28.08.25
09:49
"когда мне нужно для выборки пишу:" а когда тебе нужно? адрес схемы уже протухнуть может когда тебе нужно.

поэтому делать
АдресСхемы = ПоместитьВоВременноеХранилище(ОтборыПрайса, УникальныйИдентификатор);
Компоновщик.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресСхемы));

лучше там где тебе нужно
5 mikecool
 
28.08.25
09:55
(2) это одна и та же форма, в ПриСоздании - подготовил компоновщик для отборов, потом, не закрывая форму, жму команду, в которой хочу получить данные
(3) АдресСхемы, Компоновщик - реквизиты формы
6 mikecool
 
28.08.25
09:51
(4) для теста эти действия за минуту проходят, надеюсь не успевает протухнуть...
попробую не поднимать схему, а заново ее получить
7 Fedor-1971
 
28.08.25
10:02
(6) тут больше надо убедиться, что получается правильный макет. И обработка точно сохранена? Бо, бывает, закрутишься и забываешь сохранить
Ещё одна шляпа, в пользовательском режиме его может подчитать в кэш по внутреннему ИД и надо делать "Стандартные настройки"
8 mikecool
 
28.08.25
10:03
+6 эффект такой же, получение схемы из макета не дало результата
9 mikecool
 
28.08.25
10:04
(7) макет свежедобавленный, на кеш не получается свалить )
10 Ботаник Гарден Меран
 
28.08.25
10:09
СхемаКомпоновкиДанных = ПолучитьИзВременногоХранилища(АдресСКД);
        КомпоновщикНастроек.ЗагрузитьНастройки(СКД.ВариантыНастроек.Получить(0).Настройки);
11 mikecool
 
28.08.25
10:18
(10) а как потом применить те настройки, что пользователь добавил?
12 mikecool
 
28.08.25
10:20
+11 так то и НастройкиПоУмолчанию прокатят...
13 Ботаник Гарден Меран
 
28.08.25
10:38
(12)
Отчеты уже года 3 как сложные не делаю. И по-разному все сделаны. Вот такое нашлось.

КомпоновщикНастроекДанных.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));
    КомпоновщикНастроекДанных.ЗагрузитьНастройки(КомпоновщикНастроек.Настройки);
    КомпоновщикНастроекДанных.ЗагрузитьПользовательскиеНастройки(КомпоновщикНастроек.ПользовательскиеНастройки);

КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;

МакетКомпоновки   = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроекДанных.ПолучитьНастройки(), ДанныеРасшифровки);
14 mikecool
 
28.08.25
11:17
(13) спасибо, попробую
15 mikecool
 
28.08.25
11:55
СхемаКомпоновкиДанных = РеквизитФормыВЗначение("Объект").ПолучитьМакет("ОтборыПрайса");
    КомпоновщикНастроекДанных = Новый КомпоновщикНастроекКомпоновкиДанных;
    КомпоновщикНастроекДанных.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресСхемы));
    КомпоновщикНастроекДанных.ЗагрузитьНастройки(Компоновщик.ПолучитьНастройки());
    Настройки = КомпоновщикНастроекДанных.ПолучитьНастройки();    
    Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("Владелец", Владелец);
    Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("Период", ДатаОкончанияДействия);
    Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("ТипЦен", ТипЦен);
    ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки,, Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
    ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки);
    РезультатЗапроса = Новый ТаблицаЗначений;
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
    ПроцессорВывода.УстановитьОбъект(РезультатЗапроса);
    ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);    

результат тот же, пустой
16 mikecool
 
28.08.25
12:00
заново помещал схему в временное хранилище - не помогло
убирал КомпоновщикНастроекДанных.ЗагрузитьНастройки(Компоновщик.ПолучитьНастройки());  - не помогло
17 TormozIT
 
гуру
28.08.25
12:54
Проверяй в точке останова макет компоновки через ирОбший.От(МакетКомпоновки), потом схему и настройку ирОбший.От(СхемаКомпоновкиДанных, Настройки)
18 Ботаник Гарден Меран
 
28.08.25
13:06
Есть предположение, по темам с партнерки.
"Значение реквизита типа КомпоновщикНастроекКомпоновкиДанных не сохраняется и не восстанавливается.

В управляемой форме реквизиту типа КомпоновщикНастроекКомпоновкиДанных невозможно установить флаг сохранения данных в настройках."

И они там используют дополнительный реквизит с типом Произвольный для хранения и передачи настроек (не самого компоновщика).
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.