Имя: Пароль:
1C
1С v8
ПостроительОтчета и ВыбранныеПоля
0 cat-begimot
 
22.02.13
05:34
Всем привет! Есть УТ 10.3, 8.2.15.284.
Отчет с реквизитом "ПостроительОтчета", настройки отчета сохраняются в регистр сведений через "структуру" в хранилище значений.

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

Затем восстанавливаем, формируем отчет - вываливается с ошибкой ".МодульОбъекта(156)}: Ошибка при получении значения атрибута контекста (Результат)
   мТаблицаТоваров = ПостроительОтчета.Результат.Выгрузить();
по причине:
{(1, 1)}: Ожидается выражение "ВЫБРАТЬ""
1 cat-begimot
 
22.02.13
05:34
Путем гугл было выяснена особенность - ошибка возникает т.к. в построителе в "ВыбранныеПоля" количество элементов нуль, почему так происходит, ведь явно было указано что надо сохранять этот праметр в "....ПолучитьНастройки(Истина,Истина,Истина,Истина,Истина)..."??
2 cat-begimot
 
22.02.13
05:36
Текст запроса:
"ВЫБРАТЬ
                                 |    СпрНоменклатура.Ссылка КАК Товар,
                                 |    СпрНоменклатура.Код КАК Код,
                                 |    СпрНоменклатура.Артикул КАК Артикул,
                                 |    ТоварыНаСкладахОстатки.КоличествоОстаток КАК Количество,
                                 |    МестаХраненияНоменклатуры.МестоХранения КАК Адрес
                                 |{ВЫБРАТЬ
                                 |    Товар.*,
                                 |    Код,
                                 |    Артикул,
                                 |    Количество,
                                 |    Адрес.*}
                                 |ИЗ
                                 |    Справочник.Номенклатура КАК СпрНоменклатура
                                 |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
                                 |        ПО СпрНоменклатура.Ссылка = ТоварыНаСкладахОстатки.Номенклатура
                                 |            И (ТоварыНаСкладахОстатки.Склад = &Склад)
                                 |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.МестаХраненияНоменклатуры КАК МестаХраненияНоменклатуры
                                 |        ПО СпрНоменклатура.Ссылка = МестаХраненияНоменклатуры.Номенклатура
                                 |            И (ТоварыНаСкладахОстатки.Склад = МестаХраненияНоменклатуры.Склад)
                                 |            И (ТоварыНаСкладахОстатки.Склад = &Склад)
                                 |ГДЕ
                                 |    СпрНоменклатура.ЭтоГруппа = ЛОЖЬ
                                 |    И СпрНоменклатура.ПометкаУдаления = ЛОЖЬ
                                 |{ГДЕ
                                 |    СпрНоменклатура.Ссылка.*,
                                 |    СпрНоменклатура.Код,
                                 |    СпрНоменклатура.Артикул,
                                 |    ТоварыНаСкладахОстатки.КоличествоОстаток,
                                 |    МестаХраненияНоменклатуры.МестоХранения.*}
                                 |{УПОРЯДОЧИТЬ ПО
                                 |    Товар.*,
                                 |    Код,
                                 |    Артикул,
                                 |    Количество,
                                 |    Адрес.*}"
3 cat-begimot
 
22.02.13
07:36
Опытным путем установил что ошибка возникает когда при открытии отчета использую:
ДоступныеПоляОтбора = ПостроительОтчета.Отбор.ПолучитьДоступныеПоля();
ДоступныеПоляОтбора.Очистить();
....        ПостроительОтчета.Отбор.УстановитьДоступныеПоля(ДоступныеПоляОтбора);
4 cat-begimot
 
22.02.13
07:38
Вопрос, остается открытым, что не так делаю? Даже если использовать только 3 строчки указанные выше будет ошибка при восстановлении настройки.
5 cat-begimot
 
22.02.13
07:55
Опытным путем выяснилось :), что удаление доступных полей тянет за собой и удаление "ВыбранныхПолей", после восстановления настройки их ровно столько же сколько было в "доступных" в момент сохранения настройки.....что за чудеса?