|
Отбор СКД в обработке | ☑ | ||
---|---|---|---|---|
0
Oz11
05.08.14
✎
12:27
|
приветствую
есть задача добавить в обработку содержащую список товаров добавить отбор из компоновщика настроек. в данном отборе пользователь должен иметь возможность задать отбор по справочнику товаров и система отберет ему список товаров, которые будут добавлены. (очень походе на подбор по определенным условиям - аналог отбора в групповой обработке справочников и документов). сложность в том что это УФ и я использую реквизит формы обработки "ОтчетОбъект". у этого реквизита формы есть компоновщик настроек, в который я загружаю подготовленную ранее СКД. СхемаКомпоновкиДанных = РегистрыСведений.ВыбранныеЭлементы.ПолучитьМакет(НаСервереПолучитьИмяМакетаОтРежима(Режим)); Отчет.КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных)); Отчет.КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию); как видно по коду - в элемент формы "Отчет" загружаются настройки СКД "СхемаКомпоновкиДанных". но пользователь не видит доступных полей отбора при работе в предприятии. (причем в конфигураторе я их вижу в компоновщике настроек). подскажите, пожалуйста, в чем может быть проблема? |
|||
1
Cube
05.08.14
✎
12:32
|
Вот код из рабочей базы:
&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) СхемаКомпоновкиДанных = Справочники.Аренда_МакетыПечатныхФорм.ПолучитьМакет("СхемаКомпоновкиДанных_ДоговорыКонтрагентов"); КомпоновщикНастроекКомпоновкиДанных.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(ПоместитьВоВременноеХранилище(СхемаКомпоновкиДанных, Новый УникальныйИдентификатор()))); Если ЗначениеЗаполнено(Параметры.ЗначениеКопирования) Тогда ЗаписатьМакет = Истина; ДвоичныеДанныеОбработки = Параметры.ЗначениеКопирования.ХранилищеМакета.Получить(); КомпоновщикНастроекКомпоновкиДанных.ЗагрузитьНастройки(Параметры.ЗначениеКопирования.НастройкиКомпоновкиДанных.Получить()); Иначе НастройкиКомпоновкиДанных = РеквизитФормыВЗначение("Объект").НастройкиКомпоновкиДанных.Получить(); Если ТипЗнч(НастройкиКомпоновкиДанных) = Тип("НастройкиКомпоновкиДанных") Тогда КомпоновщикНастроекКомпоновкиДанных.ЗагрузитьНастройки(НастройкиКомпоновкиДанных); Иначе КомпоновщикНастроекКомпоновкиДанных.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию); КонецЕсли; КонецЕсли; КонецПроцедуры //ПриСозданииНаСервере() &НаКлиенте Процедура КомпоновщикНастроекКомпоновкиДанныхНастройкиОтборОчистка(Элемент, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; Если Вопрос("Вы действительно хотите сбросить отбор на настройки по-умолчанию?", РежимДиалогаВопрос.ДаНет) = КодВозвратаДиалога.Да Тогда ЗагрузитьНастройкиКомпоновкиДанныхПоУмолчанию(); КонецЕсли; КонецПроцедуры //КомпоновщикНастроекКомпоновкиДанныхНастройкиОтборОчистка() &НаСервере Процедура ЗагрузитьНастройкиКомпоновкиДанныхПоУмолчанию() СхемаКомпоновкиДанных = Справочники.Аренда_МакетыПечатныхФорм.ПолучитьМакет("СхемаКомпоновкиДанных_ДоговорыКонтрагентов"); КомпоновщикНастроекКомпоновкиДанных.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(ПоместитьВоВременноеХранилище(СхемаКомпоновкиДанных, Новый УникальныйИдентификатор()))); КомпоновщикНастроекКомпоновкиДанных.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию); Модифицированность = Истина; КонецПроцедуры //ЗагрузитьНастройкиКомпоновкиДанныхПоУмолчанию() |
|||
2
Defender aka LINN
05.08.14
✎
13:01
|
(0) Инициализировать надо адресом временного хранилища со схемой компоновки
|
|||
3
Oz11
05.08.14
✎
13:06
|
(2) жесть. у кого-то есть обоснование именно такой работы инициализатора компоновщика настроек?
|
|||
4
Defender aka LINN
05.08.14
✎
13:07
|
(3) У БорисГеоргича, вестимо.
|
|||
5
VikingKosmo
05.08.14
✎
13:30
|
Иначе не взлетит...
|
|||
6
rincewind
05.08.14
✎
15:17
|
Вот чуть попроще. В макете запрос, вариант отчета с отборами, выбранными полями и проч.
Компоновщик - реквизит обработки, с типом "КомпоновщикНастроекКомпоновкиДанных" Процедура ПриОткрытии() СхемаКомпоновкиДанных = ПолучитьМакет("Макет"); Компоновщик.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию); АдресКомпоновки = ПоместитьВоВременноеХранилище(СхемаКомпоновкиДанных, Новый УникальныйИдентификатор); Компоновщик.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресКомпоновки)); КонецПроцедуры Процедура ЗаполнитьНажатие(Элемент) Квитанции.Очистить(); СхемаКомпоновкиДанных = ПолучитьИзВременногоХранилища(АдресКомпоновки); Настройки = Компоновщик.Настройки; //Формируем макет, с помощью компоновщика макета КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки,,,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений")); //Выполним компоновку с помощью процессора компоновки ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки); ТаблицаРезультат= Новый ТаблицаЗначений; ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений; ПроцессорВывода.УстановитьОбъект(ТаблицаРезультат); ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных); Для каждого ТекСтрока из ТаблицаРезультат Цикл НоваяСтрока=ТабЧастьДобавить(); ЗаполнитьЗначенияСвойств(НоваяСтрока,ТекСтрока); НоваяСтрока.Пометка = Истина; КонецЦикла; КонецПроцедуры |
|||
7
rincewind
05.08.14
✎
15:18
|
в (6) Квитанции.Очистить(); можно опустить :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |