|
СКД При компоновке результата | ☑ | ||
---|---|---|---|---|
0
1c_yeah
14.05.14
✎
11:10
|
Добрый день всем! Кто знает почему так происходит. Сам не смог разобраться. Создаю отчет с помощью СКД и в событии отчета указанном в теме программно компоную результат, но при выполнении компоновки макета параметры содержат значения по умолчанию ("дата" - пустая , "вид цен" - пустая ссылка), хотя в форме отчета эти параметры заполнены другими значениями. Если выполнять стандартную обработку то параметры заполнены верно. Код ниже. Всем заранее спасибо!
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; КомпНастр = КомпоновщикНастроек.Настройки; ВидЦен = КомпНастр.ПараметрыДанных.Элементы.Найти("ВидыЦен"); ВидЦен.Значение = Справочники.ВидыЦен.НайтиПоНаименованию("Дилерская"); КомпНастр.ПараметрыДанных.Элементы.Найти("Период").Значение = '20140101'; ДокументРезультат.Очистить(); КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; Макет = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,КомпНастр, ДанныеРасшифровки); ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновки.Инициализировать(Макет, , ДанныеРасшифровки); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ДокументРезультат); ПолеПоКоторомуНеобходимоПолучитьЗначение = "Номенклатура"; ПроцессорВывода.НачатьВывод(); Пока Истина Цикл ЭлементРезультата = ПроцессорКомпоновки.Следующий(); Если ЭлементРезультата = Неопределено Тогда Прервать; КонецЕсли; ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата); Если ЭлементРезультата.ЗначенияПараметров.Количество() > 0 Тогда ЗначениеВыводимыхДанных = Неопределено; Для каждого ЗначениеПараметра из ЭлементРезультата.ЗначенияПараметров Цикл Если ТипЗнч(ЗначениеПараметра.Значение) = Тип("ИдентификаторРасшифровкиКомпоновкиДанных") Тогда ПоляРасшифровки = ДанныеРасшифровки.Элементы[ЗначениеПараметра.Значение].ПолучитьПоля(); Для Каждого ПолеРасшифровки из ПоляРасшифровки Цикл Если ПолеРасшифровки.Поле = ПолеПоКоторомуНеобходимоПолучитьЗначение Тогда ЗначениеВыводимыхДанных = ПолеРасшифровки.Значение; Прервать; КонецЕсли; КонецЦикла; КонецЕсли; КонецЦикла; Если ЗначениеЗаполнено(ЗначениеВыводимыхДанных) Тогда //ВысотаТабДок = ДокументРезультат.ВысотаТаблицы; //_________ФОТО___НОМЕНКЛАТУРЫ__________________ ОбластьДляКартинки = ДокументРезультат.НайтиТекст("%Картинка%"); Если ОбластьДляКартинки <> Неопределено Тогда ФотоНоменклатурыВыборка = РегистрыСведений.ПрисоединенныеФайлы.Выбрать(Новый Структура("ПрисоединенныйФайл", ЗначениеВыводимыхДанных.ФайлКартинки)); Если ФотоНоменклатурыВыборка.Следующий() Тогда ФотоНоменклатуры = Новый Картинка(ФотоНоменклатурыВыборка.ХранимыйФайл.Получить()); Иначе ФотоНоменклатуры = Неопределено; КонецЕсли; Если Не ФотоНоменклатуры = Неопределено Тогда Рис = ДокументРезультат.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка); Рис.РазмерКартинки = РазмерКартинки.РеальныйРазмер; Индекс = ДокументРезультат.Рисунки.Индекс(Рис); ДокументРезультат.Рисунки[Индекс].Картинка = ФотоНоменклатуры; ДокументРезультат.Рисунки[Индекс].РазмерКартинки = РазмерКартинки.АвтоРазмер; ДокументРезультат.Рисунки[Индекс].Расположить(ОбластьДляКартинки); ОбластьДляКартинки.Текст = "%КартинкаДобавлена%" Иначе //ДокументРезультат.Рисунки[Индекс].Картинка = БиблиотекаКартинок.Справка; //ДокументРезультат.Рисунки[Индекс].РазмерКартинки = РазмерКартинки.РеальныйРазмер; //ДокументРезультат.Рисунки.Удалить(ДокументРезультат.Рисунки[Индекс]); ОбластьДляКартинки.Текст = ""; КонецЕсли; КонецЕсли; //_________ФОТО___УПАКОВКИ__________________ ОбластьДляКартинки = ДокументРезультат.НайтиТекст("%КартинкаУпаковки%"); Если ОбластьДляКартинки <> Неопределено Тогда Запрос = Новый Запрос("ВЫБРАТЬ ПЕРВЫЕ 1 | ПрисоединенныеФайлы.ХранимыйФайл |ИЗ | РегистрСведений.ПрисоединенныеФайлы КАК ПрисоединенныеФайлы |ГДЕ | ВЫРАЗИТЬ(ПрисоединенныеФайлы.ПрисоединенныйФайл КАК Справочник.НоменклатураПрисоединенныеФайлы).ВладелецФайла = &Номенклатура | И ВЫРАЗИТЬ(ПрисоединенныеФайлы.ПрисоединенныйФайл КАК Справочник.НоменклатураПрисоединенныеФайлы).Наименование ПОДОБНО ""Короб%"""); Запрос.УстановитьПараметр("Номенклатура", ЗначениеВыводимыхДанных); ФотоУпаковкаВыборка = Запрос.Выполнить().Выбрать(); Если ФотоУпаковкаВыборка.Следующий() Тогда ФотоУпаковки = Новый Картинка(ФотоУпаковкаВыборка.ХранимыйФайл.Получить()); Иначе ФотоУпаковки = Неопределено; КонецЕсли; Если Не ФотоУпаковки = Неопределено Тогда Рис = ДокументРезультат.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка); Рис.РазмерКартинки = РазмерКартинки.РеальныйРазмер; Индекс = ДокументРезультат.Рисунки.Индекс(Рис); ДокументРезультат.Рисунки[Индекс].Картинка = ФотоУпаковки; ДокументРезультат.Рисунки[Индекс].РазмерКартинки = РазмерКартинки.АвтоРазмер; ДокументРезультат.Рисунки[Индекс].Расположить(ОбластьДляКартинки); ОбластьДляКартинки.Текст = "%КартинкаДобавлена%" Иначе //ДокументРезультат.Рисунки[Индекс].Картинка = БиблиотекаКартинок.Справка; //ДокументРезультат.Рисунки[Индекс].РазмерКартинки = РазмерКартинки.РеальныйРазмер; //ДокументРезультат.Рисунки.Удалить(ДокументРезультат.Рисунки[Индекс]); ОбластьДляКартинки.Текст = ""; КонецЕсли; КонецЕсли; КонецЕсли; КонецЕсли; КонецЦикла; ПроцессорВывода.ЗакончитьВывод(); КонецПроцедуры |
|||
1
1c_yeah
14.05.14
✎
11:13
|
В данном коде для отладки пока принудительно задаю параметры!
|
|||
2
1c_yeah
14.05.14
✎
12:25
|
Неужели нет выхода?)
|
|||
3
fisher
14.05.14
✎
14:14
|
Если форма управляемая, то пользователь работает не с
КомпоновщикНастроек.Настройки а с КомпоновщикНастроек.ПользовательскиеНастройки Получить настройки для компоновщика макета с учетом пользовательских настроек можно методом КомпоновщикНастроек.ПолучитьНастройки() |
|||
4
1c_yeah
14.05.14
✎
15:01
|
(3) То что надо, Спасибо огромное! Я уже начал делать велосипед
ПользовательскиеНастройки = КомпоновщикНастроек.ПользовательскиеНастройки.Элементы; Для Каждого ПользНастройка Из ПользовательскиеНастройки Цикл Если ТипЗНЧ(ПользНастройка) = Тип("ЗначениеПараметраНастроекКомпоновкиДанных") Тогда Параметр = КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(ПользНастройка.Параметр); ЗаполнитьЗначенияСвойств(Параметр,ПользНастройка); ИначеЕсли ТипЗНЧ(ПользНастройка) = Тип("ЭлементОтбораКомпоновкиДанных") Тогда Для Каждого ПараметрОтбора Из Отбор Цикл Если ПользНастройка.ИдентификаторПользовательскойНастройки = ПараметрОтбора.ИдентификаторПользовательскойНастройки Тогда ПараметрОтбора.ПравоеЗначение = ПользНастройка.ПравоеЗначение; ПараметрОтбора.Использование = ПользНастройка.Использование; КонецЕсли; КонецЦикла; КонецЕсли; КонецЦикла; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |