|
8.2 Как перехватить формирование отчета с СКД? | ☑ | ||
---|---|---|---|---|
0
Буратинко
06.10.10
✎
16:33
|
Как можно перехватить формирование отчета, чтобы не делать форму? Я нашел только предопределенную процедуру "ПриКомпоновкеРезультата".
Может я плохо искал? Ведь логично, чтобы для каждого этапа: 1.компоновка макета 2.копоновка данных 3.вывод результата компоновки присутствовали обработчики, позволяющие программисту вмешиваться в работу. |
|||
1
shuhard
06.10.10
✎
16:35
|
(0) логично
делаешь свою кнопку и вперед Запрос=Новый Запрос; Запрос.Текст="ВЫБРАТЬ | ОстаткиТоваровОстаткиИОбороты.Склад, | ОстаткиТоваровОстаткиИОбороты.Номенклатура, | ОстаткиТоваровОстаткиИОбороты.КоличествоНачальныйОстаток, | ОстаткиТоваровОстаткиИОбороты.КоличествоПриход, | ОстаткиТоваровОстаткиИОбороты.КоличествоРасход, | ОстаткиТоваровОстаткиИОбороты.КоличествоКонечныйОстаток |ИЗ | РегистрНакопления.ОстаткиТоваров.ОстаткиИОбороты КАК ОстаткиТоваровОстаткиИОбороты"; ТЗ=Запрос.Выполнить().Выгрузить(); ВнешнийНабор=Новый Структура("Наборчик",ТЗ); // схема компановки из реквизита отчета СКД=ЭтотОбъект.ПолучитьМакет("ЧерезНабор"); // получим схему из макета // настройка из схемы по умолчанию НастройкаСКД=ЭтотОбъект.КомпоновщикНастроек.Настройки; // текущие настройки // компановщик макета из схемы и настроек порождает макет КомпоновщикМакетаКомпоновкиДанных=Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновкиДанных=КомпоновщикМакетаКомпоновкиДанных.Выполнить(СКД, НастройкаСКД) ; // процессор из макета делает себя самого ПроцессорКомпоновкиДанных=Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновкиДанных,ВнешнийНабор); // прцессор вывода порождает ТД ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент=Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ЭлементыФормы.Результат.Очистить(); ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент.УстановитьДокумент(ЭлементыФормы.Результат); ТД=ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент.Вывести(ПроцессорКомпоновкиДанных); ТД.Показать(); |
|||
2
Буратинко
06.10.10
✎
16:49
|
(1) так понятно, а что нельзя "вклиниться" в выполенение без создания формы (с помощью предопределенных процедур)?
|
|||
3
shuhard
06.10.10
✎
17:00
|
(2) [с помощью предопределенных процедур]
не состругал папа Карло этого забыл старый или запил |
|||
4
cost10
06.10.10
✎
17:06
|
(0) Ну все правильно ПриКомпоновкеРезультата для этого предназначена, и форму можно не делать.
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; Настройки = КомпоновщикНастроек.Настройки; КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки); ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновки.Инициализировать(МакетКомпоновки); ДокументРезультат.Очистить(); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ДокументРезультат); ПроцессорВывода.Вывести(ПроцессорКомпоновки); КонецПроцедуры |
|||
5
shuhard
06.10.10
✎
17:33
|
(3) был не прав
в 8.2 - можно |
|||
6
Буратинко
06.10.10
✎
18:20
|
(4) а в какое время вызывается эта процедура? Нигде не нашел (и программно проверить тоже нельзя, потому что если в форме руками прописать код похожий на ваш, то процедура не вызывается).
Еще одна загадка 1с. |
|||
7
shuhard
06.10.10
✎
18:27
|
(6) то же мне загадка
код живёт в модуле Объекта Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) Сообщить("Я тут!!"); КонецПроцедуры |
|||
8
Буратинко
06.10.10
✎
18:33
|
(7) ну и что мне этот "тут" расскажет? Он где конкретно? :)
|
|||
9
shuhard
06.10.10
✎
18:35
|
(8) модуль не формы, а объекта
|
|||
10
Буратинко
06.10.10
✎
18:37
|
+(6) Был такой товарищ- Сальвадор Дали. Он носил подкрученные вверх усы и любил делать загадки.
Поэтому предлагаю при старте любой конфигурации показывать пользователю несколько картин Дали, чтобы он понимал куда попал :) Это относится и к запуску программы в режиме Конфигуратор. Причем в последнем режиме количество картин должно вдвое превышать пользовательское количество. |
Форум | Правила | Описание | Реклама | Секции | Поиск | Книга знаний | Вики-миста |