Имя: Пароль:
1C
1С v8
Восстанавливаются не все настройки построителя отчета
0 Сильф
 
12.10.16
17:51
УТ 10.3, платформа 8.3.8.1747, документ ИнвентаризацияТоваровНаСкладе. В нём есть отбор по номенклатуре и ном.группе, реализованный через построитель отчёта. По образу и подобию уже имеющихся отборов, добавил два своих, и они успешно работают, но! При сохранении документа и закрытии формы должны сохраняться и его отборы, типовым механизмом это реализовано в обработчике ПередЗаписью следующим образом:

УсловияПроведенияИнвентаризации = Новый ХранилищеЗначения(ПостроительОтчета.ПолучитьНастройки(Истина, Ложь, Ложь, Ложь, Ложь));

(УсловияПроведенияИнвентаризации - это реквизит документа.)
И при повторном открытии формы эти настройки восстанавливаются для отображения на форме таким кодом:

ЗначениеУсловий = УсловияПроведенияИнвентаризации.Получить();
    Если ТипЗнч(ЗначениеУсловий) = Тип("НастройкиПостроителяОтчета") Тогда
        ПостроительОтчета.УстановитьНастройки(ЗначениеУсловий, Истина, Ложь, Ложь, Ложь, Ложь);
    КонецЕсли;

Так вот, восстанавливаются только те поля отбора, которые изначально были в этом документе. Добавленные мной - нет. Что я мог сделать не так?

P.S.: Добавил на форму свои кнопки Записать и Прочитать, в которых прописал ровно тот же код, что и выше, и потестил их работу прямо в форме, т.е., без записи документа в базу. В таком режиме всё сохраняется и восстанавливается.
1 Сильф
 
12.10.16
18:13
Приём
2 Cyberhawk
 
12.10.16
18:16
У конструктора запроса есть вкладка Построитель, туда не добавил наверное
3 Сильф
 
12.10.16
18:26
(2) Там текст запроса меняется в зависимости от условий. Если имеется в виду секция ГДЕ в фигурных скобках, то она присутствует.
4 Сильф
 
13.10.16
15:12
Подниму
5 Михаил Козлов
 
13.10.16
15:15
Посмотрите в отладчике значение настроек ПостроительОтчета.ПолучитьНастройки(...)
и значение, которое возвращается из сохраненных настроек.
Может что-то с доступными полями.
6 Ёпрст
 
13.10.16
15:23
(0)
запрос выполняется через построитель или через объект запрос ?
7 Ёпрст
 
13.10.16
15:24
+посмотри в коде, нет ли там принудительного установки доступных полей отбора в ПриОткрытии
8 Сильф
 
13.10.16
15:58
(5) > Посмотрите в отладчике значение настроек ПостроительОтчета.ПолучитьНастройки(...)

Возвращается штука, имеющая тип НастройкиПостроителяОтчета - это "чёрный ящик", внутрь заглянуть невозможно. СП по его поводу говорит буквально следующее:

-----------------
НастройкиПостроителяОтчета (ReportBuilderSettings)
НастройкиПостроителяОтчета (ReportBuilderSettings)
Описание:

Содержит все настройки построителя отчета.

Доступность:

Сервер, толстый клиент, внешнее соединение.
Сериализуется.
----------------
9 Сильф
 
13.10.16
15:58
(8) Ниаких свойств и методов.
10 Сильф
 
13.10.16
16:00
(6) через построитель
(7) я ставлю точку останова на строчке с "УстановитьНастройки", и смотрю в табло, сразу после этой строки устанавливается отбор построителя, и в нём только типовые поля заполнены. Мои отборы также присутствуют, но в них пустые значения.
11 Ёпрст
 
13.10.16
16:11
если ты не выбрал свои отборы в момент выполнения - их не будет в отборе. Проверь, так ли это.
Т.е выбери в условиях свои добавленные отборы и посмотри, сохраняет или нет
12 Ёпрст
 
13.10.16
16:17
проверить легко - отладчиком смотри отбор посттроителя до и после выполнения.
И обход этой фичи тоже простой.
13 Сильф
 
13.10.16
16:25
(11) > выбери в условиях свои добавленные отборы и посмотри, сохраняет или нет

Дык о том и речь - не сохраняет!

> проверить легко - отладчиком смотри отбор посттроителя до и после выполнения.

Так и делаю, см. (10)
14 Ёпрст
 
13.10.16
17:18
(13) короче, делаешь так и привет
15 Ёпрст
 
13.10.16
17:21
ПостроительОтчета1= Новый ПостроительОтчета(ПостроительОтчета.Текст);
ПостроительОтчета1.УстановитьНастройки(ПостроительОтчета.ПолучитьНастройки());

и ужо выполняешь и выводишь ПостроительОтчета1, а ПостроительОтчета нужен только для отборов.