|
Магия 1с для КомпановщикаНастроекКомпановкиДанных | ☑ | ||
---|---|---|---|---|
0
raytan
07.12.15
✎
16:10
|
Есть отчет написанный на СКД. В нем присутствует 2 предопределенных варианта настройки. Одно из отличий: в одном варианте выводится на 2 поля больше.
В модуле формы самостоятельно реализован механизм работы в вариантами отчета, в том числе и с предопределенными. Вот код для предопределенных: &НаКлиенте Процедура КомандаПредопределенныеВарианты(Команда) ПараметрыОткрытияФормы = Новый Структура; ПараметрыОткрытияФормы.Вставить("ПредопределенныеВарианты", ПредопределенныеВарианты); ФормаВыбораПредопределенного = ПолучитьФорму("ОбщаяФорма.ФормаВыбораПредопределеногоВарианта", ПараметрыОткрытияФормы, ЭтаФорма); РезультатОткрытия = ФормаВыбораПредопределенного.ОткрытьМодально(); Если РезультатОткрытия <> Неопределено Тогда ПолученныеНастройки = ПолучитьНастройкиПоУмолчанию(РезультатОткрытия); Если ПолученныеНастройки <> Неопределено Тогда Отчет.КомпоновщикНастроек.ЗагрузитьНастройки(ПолученныеНастройки); СохранятьАвтоматически = Ложь; ИспользоватьПриОткрытии = Ложь; ВариантМодифицирован = Ложь; ПользовательскиеНастройкиМодифицированы = Ложь; КонецЕсли; КонецЕсли; КонецПроцедуры &НаСервере Функция ПолучитьНастройкиПоУмолчанию(ПредопределенныйВариант = Неопределено) МойОтчет = РеквизитФормыВЗначение("Отчет"); Если ПредопределенныйВариант = Неопределено Тогда НастройкиПоУмолчанию = МойОтчет.СхемаКомпоновкиДанных.НастройкиПоУмолчанию; НаименованиеТекущегоВарианта = МойОтчет.СхемаКомпоновкиДанных.ВариантыНастроек[0].Представление; Иначе НайденныйВариант = МойОтчет.СхемаКомпоновкиДанных.ВариантыНастроек.Найти(ПредопределенныйВариант); Если НайденныйВариант <> Неопределено Тогда НастройкиПоУмолчанию = НайденныйВариант.Настройки; НаименованиеТекущегоВарианта = НайденныйВариант.Представление; Иначе НастройкиПоУмолчанию = Неопределено; КонецЕсли; КонецЕсли; ЗначениеВРеквизитФормы(МойОтчет, "Отчет"); Возврат НастройкиПоУмолчанию; КонецФункции Проблема: после того, как загружаем один из двух предопределенных вариантов и жмем сформировать, то эти 2 поля (не появляются когда должны, и не пропадают в нужный момент). НО открыв настройка КомпоновщикаНастрок мы увидим, что там поля включенны правильно и после выхода из настройки все заработает как надо. Магия :) Ставлю точку остановы после загрузки предопределенного варианта. В отладчике смотрю, что находится в Отчет.КомпановщикНастроекКомпановкиДанных -- там конечно вижу, что загрузилось все правильно. И вот жму продолжить, потом сформировать и отчет отрабатывает правильно !! без захода в настройки. Была мысль, что возможно поможет обращение к серверу. Ставил после загрузки настроек липовую серверную функцию и уже на сервере обращался к компановщику. Пробовал использовать его метод Востановить() -- ничего не помогает. Скорее всего -- это какая то фича, а не баг. Но как действовать в данной ситуации непонятно, т.к. заставлять пользователя каждый раз после загрузки предопределенного вариянта открывать/закрывать настройки не хочется.. Есть какие мысли почему так ? Возможное решение ? |
|||
1
DmitrO
07.12.15
✎
16:36
|
ставлю на то, что выбранные поля объявлены пользовательскими настройками
|
|||
2
raytan
08.12.15
✎
09:13
|
(1) Когда я захожу в Отчет.КомпоновщикНастроек.Настройки.Выбор.Элементы во время отладки у меня все показывает верно. Также у меня вынесено в пользовательские настройки "Состав полей" отчета. соответственно в Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы[1].Элементы могу посмотреть их -- также у всех полей использование включено правильно.
Но повторюсь в этом то и волшебство, что после того как я в отладчике гляну на Компоновщик все работает как надо. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |