Передаю так параметры в СКД, но КомпоновщикНастроек не работает в тонком клиенте как сделать по другому, чтобы работало и в тонком?
&НаКлиенте
Процедура ПриОткрытии(Отказ)
Настройки = Отчет.КомпоновщикНастроек.ПолучитьНастройки();
Для Каждого ПараметрДанных Из Настройки.ПараметрыДанных.Элементы Цикл
Если ПараметрДанных.Параметр = Новый ПараметрКомпоновкиДанных("Ссылка") Тогда
ПараметрДанных.Использование = Истина;
ПараметрДанных.Значение = ВладелецФормы.Объект.Ссылка;
КонецЕсли;
Если ПараметрДанных.Параметр = Новый ПараметрКомпоновкиДанных("Месяц") Тогда
ПараметрДанных.Использование = Истина;
ПараметрДанных.Значение = ВладелецФормы.Объект.ПериодРегистрации;
КонецЕсли;
КонецЦикла;
Отчет.КомпоновщикНастроек.ЗагрузитьНастройки(Настройки);
СкомпоноватьРезультат();
КонецПроцедуры
ПоказатьПо теме из базы знаний
Найденные решения
Сделал проще создал реквизиты на форме в них в модуле формы передал реквизиты с Владельца формы, а в модуле объекта эти реквизиты принял
Модуль формы
Модуль объекта
Модуль формы
&НаКлиенте
Процедура ПриОткрытии(Отказ)
Отчет.Ссылка = ВладелецФормы.Объект.Ссылка;
Отчет.Месяц = ВладелецФормы.Объект.ПериодРегистрации;
СкомпоноватьРезультат();
КонецПроцедуры
ПоказатьМодуль объекта
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
Настройки = КомпоновщикНастроек.ПолучитьНастройки();
Для Каждого ПараметрДанных Из Настройки.ПараметрыДанных.Элементы Цикл
Если ПараметрДанных.Параметр = Новый ПараметрКомпоновкиДанных("Ссылка") Тогда
ПараметрДанных.Использование = Истина;
ПараметрДанных.Значение = Ссылка;
КонецЕсли;
Если ПараметрДанных.Параметр = Новый ПараметрКомпоновкиДанных("Месяц") Тогда
ПараметрДанных.Использование = Истина;
ПараметрДанных.Значение = Формат(Месяц,"ДФ='ММММ yyyy'");
КонецЕсли;
КонецЦикла;
КомпоновщикНастроек.ЗагрузитьНастройки(Настройки);
КонецПроцедуры
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) Попробуй свой "ПараметрДанных" для последующего редактирования вот так получать:
ПараметрМесяца = УправлениеОтчетамиКлиентСервер.ПолучитьПользовательскийПараметр("Период", Отчет.КомпоновщикНастроек);
Функция ПолучитьПользовательскийПараметр(ИмяПараметра, КомпоновщикНастроек) Экспорт
НайденныйПараметр = Неопределено;
НайденныйПараметрВарианта = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти(ИмяПараметра);
Если НайденныйПараметрВарианта <> Неопределено Тогда
НайденныйПараметр = ПолучитьПредопределенныйЭлементПользовательскихНастроек(НайденныйПараметрВарианта, КомпоновщикНастроек.ПользовательскиеНастройки);
КонецЕсли;
Возврат НайденныйПараметр;
КонецФункции
Функция ПолучитьПредопределенныйЭлементПользовательскихНастроек(ЭлементНастроекВарианта, ПользовательскиеНастройки) Экспорт
НайденныйЭлемент = Неопределено;
Если ЭлементНастроекВарианта <> Неопределено Тогда
НайденныйЭлемент = ПользовательскиеНастройки.Элементы.Найти(ЭлементНастроекВарианта.ИдентификаторПользовательскойНастройки);
КонецЕсли;
Возврат НайденныйЭлемент;
КонецФункции
Показать
СКД на сервере формируется, процедура в модуле объекта:
&НаСервере
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
Настройки = КомпоновщикНастроек.ПолучитьНастройки();
Для Каждого ПараметрДанных Из Настройки.ПараметрыДанных.Элементы Цикл
Если ПараметрДанных.Параметр = Новый ПараметрКомпоновкиДанных("Ссылка") Тогда
ПараметрДанных.Использование = Истина;
ПараметрДанных.Значение = Ссылка;
КонецЕсли;
Если ПараметрДанных.Параметр = Новый ПараметрКомпоновкиДанных("Месяц") Тогда
ПараметрДанных.Использование = Истина;
ПараметрДанных.Значение = ПериодРегистрации;
КонецЕсли;
КонецЦикла;
КомпоновщикНастроек.ЗагрузитьНастройки(Настройки);
КонецПроцедуры
Показать
Чой-то компоновщик настроек в тонком клиенте не работает? Должен работать.
Я правда не пробовал менять пользовательские настройки через ЗагрузитьНастройки(), хотя по описанию должно.
Всегда редактировал напрямую через КомпоновщикНастроек.ПользовательскиеНастройки
Я правда не пробовал менять пользовательские настройки через ЗагрузитьНастройки(), хотя по описанию должно.
Всегда редактировал напрямую через КомпоновщикНастроек.ПользовательскиеНастройки
я делаю немного другой отчет, передаю таблицу значений в СКД, отчет внешний
Вот кусок кода
СхемаКомпоновкиДанных = ПолучитьМакет("СхемаСКД");
//Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;
// - Если сделать так, как показано выше(рекомендуют на некоторых ресурсах), то при изменении настроек в режиме клиента
// этих изменений Вы не увидите, потому что настройки всегда будут по умолчанию. Как правильно - вариант ниже
Настройки = КомпоновщикНастроек.ПолучитьНастройки();
ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);
//ВнешнийНаборДанных = Новый Структура("ПримерТаблицыЗначений", ТЗВывод);
ВнешнийНаборДанных = Новый Структура("ТаблицаМатериалы", ТаблицаМатериалы);
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешнийНаборДанных, ДанныеРасшифровки);
ДокументРезультат.Очистить();
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
Пример рабочий, потому что отчет работает
Вот кусок кода
СхемаКомпоновкиДанных = ПолучитьМакет("СхемаСКД");
//Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;
// - Если сделать так, как показано выше(рекомендуют на некоторых ресурсах), то при изменении настроек в режиме клиента
// этих изменений Вы не увидите, потому что настройки всегда будут по умолчанию. Как правильно - вариант ниже
Настройки = КомпоновщикНастроек.ПолучитьНастройки();
ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);
//ВнешнийНаборДанных = Новый Структура("ПримерТаблицыЗначений", ТЗВывод);
ВнешнийНаборДанных = Новый Структура("ТаблицаМатериалы", ТаблицаМатериалы);
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешнийНаборДанных, ДанныеРасшифровки);
ДокументРезультат.Очистить();
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
Пример рабочий, потому что отчет работает
Сделал проще создал реквизиты на форме в них в модуле формы передал реквизиты с Владельца формы, а в модуле объекта эти реквизиты принял
Модуль формы
Модуль объекта
Модуль формы
&НаКлиенте
Процедура ПриОткрытии(Отказ)
Отчет.Ссылка = ВладелецФормы.Объект.Ссылка;
Отчет.Месяц = ВладелецФормы.Объект.ПериодРегистрации;
СкомпоноватьРезультат();
КонецПроцедуры
ПоказатьМодуль объекта
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
Настройки = КомпоновщикНастроек.ПолучитьНастройки();
Для Каждого ПараметрДанных Из Настройки.ПараметрыДанных.Элементы Цикл
Если ПараметрДанных.Параметр = Новый ПараметрКомпоновкиДанных("Ссылка") Тогда
ПараметрДанных.Использование = Истина;
ПараметрДанных.Значение = Ссылка;
КонецЕсли;
Если ПараметрДанных.Параметр = Новый ПараметрКомпоновкиДанных("Месяц") Тогда
ПараметрДанных.Использование = Истина;
ПараметрДанных.Значение = Формат(Месяц,"ДФ='ММММ yyyy'");
КонецЕсли;
КонецЦикла;
КомпоновщикНастроек.ЗагрузитьНастройки(Настройки);
КонецПроцедуры
Показать
(14)
Что-то не припомню такого. Это же реквизиты самого объекта и они доступны в модуле объекта напрямую. Это не реквизиты формы (просто (13) не правильно выразился "создал реквизиты на форме", на самом деле были созданы реквизиты самого отчета).
А когда-то реквизиты отчетов/обработок не пробрасывались в модуль объекта на сервере.
Что-то не припомню такого. Это же реквизиты самого объекта и они доступны в модуле объекта напрямую. Это не реквизиты формы (просто (13) не правильно выразился "создал реквизиты на форме", на самом деле были созданы реквизиты самого отчета).
(13) Подскажите, как у вас удалось передать параметры в ПриКомпоновкеРезультата
сделал по вашему примеру. Но у меня не передаются параметры в Настройки.ПараметрыДанных.Элементы из ПриОткрытии, да и честно говоря не понимаю, почему реквизит формы должен туда попасть.
сделал по вашему примеру. Но у меня не передаются параметры в Настройки.ПараметрыДанных.Элементы из ПриОткрытии, да и честно говоря не понимаю, почему реквизит формы должен туда попасть.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот