Имя: Пароль:
1C
1С v8
СКД вывод результата на форме
0 vladimir80
 
16.06.16
20:53
Добрый вечер! Задача достаточно простая, на неуправляемых формах все работает, но возник затык на УФ. Форма элемента справочника, на ней располагаю КомпоновщикНастроекКомпоновкиДанных, путь к данным Компоновщик.Настройки.Отбор

На кнопку хочу заполнять ТЧ по установленному отбору. Настройки сохраняются. При формировании всегда вылезает пустой результат. Если в виде настроек подсунуть НастройкиПоУмолчанию - все работает. Смотрел в отладчике - отбор заполнен как надо... Подскажите пож-ста, ЧЯДНТ?
[CODE]
&НаКлиенте
Процедура ПриОткрытии(Отказ)
    ПриОткрытииНаСервере();
КонецПроцедуры

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

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

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


&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
    НастройкиКомпоновкиДанных = Компоновщик.ПолучитьНастройки();
    ТекущийОбъект.ХранилищеНастроек = Новый ХранилищеЗначения(НастройкиКомпоновкиДанных);
КонецПроцедуры


&НаСервере
Процедура СформироватьСписокНоменклатурыНаСервере()

    Таблица = Новый ТаблицаЗначений;

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

    
    Кол = Таблица.Количество();

КонецПроцедуры


&НаКлиенте
Процедура СформироватьСписокНоменклатуры(Команда)
    СформироватьСписокНоменклатурыНаСервере();
КонецПроцедуры
[/CODE]
1 Cyberhawk
 
16.06.16
21:10
Компоновщик.ЗагрузитьНастройки(СхемаКомпоновки.НастройкиПоУмолчанию)
Может нужно брать не НастройкиПоУмолчанию, а результат метода ПолучитьНастройки()?
2 vladimir80
 
16.06.16
21:14
При открытии все нормально - открываются и сохраненные настройки. Проблема именно в Процедура СформироватьСписокНоменклатурыНаСервере()
3 Cyberhawk
 
16.06.16
21:15
А, ясно. Так детальные записи-то добавь в настройки структуры и выбранные поля чтоб тоже там были
4 Cyberhawk
 
16.06.16
21:16
А то пади только запрос набора данных описал в схеме и ждешь, что у тебя будет ТЗ заполненная на выходе
5 vladimir80
 
16.06.16
21:17
Причем если заменить Компоновщик.ПолучитьНастройки() на СхемаКомпоновки.НастройкиПоУмолчанию - в ТЗ номенклатура выгружается, при всех остальных вариантах - в ТЗ 0 записей.

И детальные записи есть, и выбранные поля (в макете).
6 Cyberhawk
 
16.06.16
21:19
Выведи не в ТЗ, а в табличный документ и посмотри его содержимое - что там будет?
Может, у тебя там группировки и надо выводить в дерево значений?
7 vladimir80
 
16.06.16
21:25
Нет, запрос элементарный,

ВЫБРАТЬ РАЗЛИЧНЫЕ
    СправочникНоменклатура.Ссылка КАК Номенклатура
{ВЫБРАТЬ
    Номенклатура.*}
ИЗ
    Справочник.Номенклатура КАК СправочникНоменклатура
{ГДЕ
    СправочникНоменклатура.Ссылка.* КАК ПараметрыОтбора}

Да, похоже я нашел грабли. Тестировал на одной из сохраненных настроек, на момент первого сохранения в макете небыло выбранных полей. Потом добавил. В новом элементе справочника сразу все ок.

Спасибо, не ожидал просто такой подставы )))
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший