|
Как получить макет внешней обработки из самой обработки ? | ☑ | ||
---|---|---|---|---|
0
AnisaL
24.07.18
✎
23:10
|
Доброго времени суток, подскажите, как получить макет внешней обработки из самой внешней обработки ?
|
|||
1
AnisaL
24.07.18
✎
23:12
|
(0) Макет = ВнешниеОбработки.ОтчетПоОстаткам.ПолучитьМакет("Макет1");
вот так ошибку выдает |
|||
2
RomanYS
24.07.18
✎
23:14
|
в модуле обработки
Макет = ПолучитьМакет("Макет1"); |
|||
3
AnisaL
24.07.18
✎
23:17
|
(2) спасибо, сейчас попробую
|
|||
4
AnisaL
24.07.18
✎
23:20
|
(2) а как быть, если у меня кнопка находится на форме, и мне нужно из формы макет получить?
|
|||
5
AnisaL
24.07.18
✎
23:25
|
мне нужно сформировать отчет, используя макет, по нажатию кнопки на форме обработки
|
|||
6
AnisaL
24.07.18
✎
23:30
|
||||
7
RomanYS
24.07.18
✎
23:30
|
(4) Если ОФ, то также. Если УФ - тогда РеквизитФормыВЗначение("Отчет").ПолучитьМакет("Макет1")
|
|||
8
RomanYS
24.07.18
✎
23:32
|
+(7) но возможно лучше весь функционал перенести в модуль отчета. "Идеологически" правильнее
|
|||
9
AnisaL
24.07.18
✎
23:32
|
&НаСервере
Процедура СформироватьНаСервере() Макет = ВнешниеОбработки.ОтчетПоОстаткам.ПолучитьМакет("Макет"); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ | НОВЫЙ.Характеристика КАК Характеристика, | СУММА(НОВЫЙ.КоличествоКонечныйОстаток) КАК Количество, | НОВЫЙ.Цена КАК Цена |ИЗ | (ВЫБРАТЬ | ТоварыНаСкладахОстаткиИОбороты.Характеристика.Наименование КАК Характеристика, | ТоварыНаСкладахОстаткиИОбороты.Номенклатура.Наименование КАК Номенклатура, | СУММА(ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток) КАК КоличествоКонечныйОстаток, | ЦеныНоменклатурыСрезПоследних.Цена КАК Цена | ИЗ | РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(, , Авто, , ) КАК ТоварыНаСкладахОстаткиИОбороты | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних | ПО ТоварыНаСкладахОстаткиИОбороты.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура | И ТоварыНаСкладахОстаткиИОбороты.Характеристика = ЦеныНоменклатурыСрезПоследних.Характеристика | ГДЕ | ТоварыНаСкладахОстаткиИОбороты.Номенклатура.Родитель = &Номенклатура | И ТоварыНаСкладахОстаткиИОбороты.Склад = &Склад | И ТоварыНаСкладахОстаткиИОбороты.Склад.Магазин = &Магазин | И ЦеныНоменклатурыСрезПоследних.ВидЦены = &ВидЦены | | СГРУППИРОВАТЬ ПО | ТоварыНаСкладахОстаткиИОбороты.Характеристика.Наименование, | ТоварыНаСкладахОстаткиИОбороты.Номенклатура.Наименование, | ЦеныНоменклатурыСрезПоследних.Цена) КАК НОВЫЙ | |СГРУППИРОВАТЬ ПО | НОВЫЙ.Характеристика, | НОВЫЙ.Цена |ИТОГИ | СУММА(Количество) |ПО | Характеристика |АВТОУПОРЯДОЧИВАНИЕ"; Склад = Справочники.Склады.НайтиПоНаименованию("Склад Пушкина"); Магазин = Справочники.Магазины.НайтиПоНаименованию("Магазин 1 - Пушкина"); Номенклатура = Справочники.Номенклатура.НайтиПоНаименованию("Готовые очки"); ВидЦены = Справочники.ВидыЦен.НайтиПоНаименованию("Розничная"); Запрос.УстановитьПараметр("Склад", Склад); Запрос.УстановитьПараметр("Магазин", Магазин); Запрос.УстановитьПараметр("Номенклатура", Номенклатура); Запрос.УстановитьПараметр("ВидЦены", ВидЦены); РезультатЗапроса = Запрос.Выполнить(); ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок"); ОбластьПодвал = Макет.ПолучитьОбласть("Подвал"); ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы"); ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы"); ОбластьХарактеристика = Макет.ПолучитьОбласть("Характеристика"); ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали"); ТабДок.Очистить(); ТабДок.Вывести(ОбластьЗаголовок); ТабДок.Вывести(ОбластьШапкаТаблицы); ТабДок.НачатьАвтогруппировкуСтрок(); ВыборкаХарактеристика = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока ВыборкаХарактеристика.Следующий() Цикл ОбластьХарактеристика.Параметры.Заполнить(ВыборкаХарактеристика); ТабДок.Вывести(ОбластьХарактеристика, ВыборкаХарактеристика.Уровень()); ВыборкаДетальныеЗаписи = ВыборкаХарактеристика.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи); ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетальныеЗаписи.Уровень()); КонецЦикла; КонецЦикла; ТабДок.ЗакончитьАвтогруппировкуСтрок(); ТабДок.Вывести(ОбластьПодвалТаблицы); ТабДок.Вывести(ОбластьПодвал); КонецПроцедуры |
|||
10
AnisaL
24.07.18
✎
23:36
|
(8) Ошибку выдал!
{ВнешняяОбработка.ОтчетПоОстаткам.Форма.Форма.Форма(5)}: Ошибка при вызове метода контекста (РеквизитФормыВЗначение) Макет = РеквизитФормыВЗначение("Отчет").ПолучитьМакет("Макет"); по причине: Недопустимое значение параметра (параметр номер '1') |
|||
11
RomanYS
24.07.18
✎
23:37
|
(10) Подставь свой правильный параметр :)
|
|||
12
AnisaL
24.07.18
✎
23:39
|
(11) поставила, вот так правильно: Макет = РеквизитФормыВЗначение("Объект").ПолучитьМакет("Макет");
|
|||
13
AnisaL
24.07.18
✎
23:40
|
(11) Спасибо большое )
|
|||
14
AnisaL
24.07.18
✎
23:44
|
(8) а как тогда весь функционал перенести в модуль обработки? если кнопка находится на форме, или я что-то не понимаю
|
|||
15
metanal
25.07.18
✎
00:04
|
(14) Из процедуры сделать функцию, которая возвращает табличный документ. Эту функцию в модуль объекта.
С формы по нажатию кнопки вызывать процедуру. Затем ТабДок.Показать(). |
|||
16
RomanYS
25.07.18
✎
00:25
|
(14) в модуле твоя процедура, точнее функция (см(15)) с экспортом. В форме (на сервере)
ТабДок = РеквизитФормыВЗначение("Объект").ТвояЭкспортнаяФункуияВМодуле(); |
|||
17
Сияющий в темноте
25.07.18
✎
09:30
|
Модуль обработки при каждом обращении к нему с клиента компилляется заново,так что туда что то массивное пихать ни к чему.
|
|||
18
Фрэнки
25.07.18
✎
09:37
|
(17) это в том случае, если разработанный отчет останется по прежнему Внешним. Если он в самом деле массивный, то в Расширение его запихнуть и компилиться будет только один раз при старте сеанса
|
|||
19
ildary
25.07.18
✎
09:41
|
(18) а ваше замечание "компилляется заново" относится к отчетам, которые помещены в "Дополнительные отчеты и обработки"?
|
|||
20
Фрэнки
25.07.18
✎
09:51
|
(19) ну это не совсем мое замечание, но вообще, да. Размещенные в "Дополнительные отчеты и обработки" перед запуском обработки в целом однозначно заново компилятся...
А вот то, что на каждое обращение к модулю обработки - этого лично я утверждать не буду. По идее, если посмотреть на внешние печатные формы, то в обработку печати (в экспортную процедуру модуля обработки) забрасывается сразу весь массив объектов печати. Таким образом, не должно быть повторной компилации "внутри" обработки массива, но при старте снаружи - будет. |
|||
21
RomanYS
25.07.18
✎
10:00
|
(17) Что значит заново? Мы его один раз вызываем. Интересно сравнить время компиляции с временем выполнения запроса, например на коде (9).
Время компиляции будет сидеть в выполнении РеквизитФормыВЗначение("Объект")? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |