|
Внешний отчет БП 3.0 | ☑ | ||
---|---|---|---|---|
0
breaktrough
21.07.14
✎
09:19
|
Всем привет.
Конфа БП 3.0. Выгрузил внешний отчет "кассовая книга". Все работает, но при после редактирования печатной формы в нем, в самом отчете она остается прежней. Видимо подхватывается из вшитого в конфу отчета. Не могу понять как добраться до процедур формирующих результат на сервере. Отладчиком в сервеные не залезть. Подскажите как быть? Вот та самая функция которая вызывается при вызове команды "Сформировать": &НаСервере Функция СформироватьОтчетНаСервере() Если НЕ ПроверитьЗаполнение() Тогда Возврат Новый Структура("ЗаданиеВыполнено", Истина); КонецЕсли; ИдентификаторЗадания = Неопределено; ИБФайловая = ОбщегоНазначения.ИнформационнаяБазаФайловая(); ДлительныеОперации.ОтменитьВыполнениеЗадания(ИдентификаторЗадания); ОбщегоНазначенияКлиентСервер.УстановитьСостояниеПоляТабличногоДокумента(Элементы.Результат, "НеИспользовать"); ПараметрыОтчета = ПодготовитьПараметрыОтчета(); Если ИБФайловая Тогда АдресХранилища = ПоместитьВоВременноеХранилище(Неопределено, УникальныйИдентификатор); Отчеты.КассоваяКнига.СформироватьОтчет(ПараметрыОтчета, АдресХранилища); РезультатВыполнения = Новый Структура("ЗаданиеВыполнено", Истина); Иначе РезультатВыполнения = ДлительныеОперации.ЗапуститьВыполнениеВФоне( УникальныйИдентификатор, "Отчеты.КассоваяКнига.СформироватьОтчет", ПараметрыОтчета, БухгалтерскиеОтчетыКлиентСервер.ПолучитьНаименованиеЗаданияВыполненияОтчета(ЭтаФорма)); АдресХранилища = РезультатВыполнения.АдресХранилища; ИдентификаторЗадания = РезультатВыполнения.ИдентификаторЗадания; КонецЕсли; Если РезультатВыполнения.ЗаданиеВыполнено Тогда ЗагрузитьПодготовленныеДанные(); КонецЕсли; Элементы.Сформировать.КнопкаПоУмолчанию = Истина; Возврат РезультатВыполнения; КонецФункции |
|||
1
breaktrough
21.07.14
✎
09:20
|
(0) Хочу просто поправить макет.
|
|||
2
Kurbash
21.07.14
✎
09:23
|
А МАКЕТ ОН ОТКУДА ПОДХВАТЫВАЕТ?
|
|||
3
Kurbash
21.07.14
✎
09:24
|
тебе надо шаманить процедуры-ты используешь ссылки на штатные процедуры в конфигурации, а в них прописан макет не в твоей внешней обработке а в конфигурации, поэтому твои изменения и не видны
|
|||
4
Kamas
21.07.14
✎
09:27
|
(0) вах как красиво пишете прям как в типовой ))
Точка остановы и F11 решит проблему)) |
|||
5
breaktrough
21.07.14
✎
09:29
|
(2) В том-то и дело, что ХЗ. В этом и вопрос)
(4) Под...б засчитан) |
|||
6
breaktrough
21.07.14
✎
09:30
|
(4) Как же я попаду в серверные процедуры?))
Может дело в этой строчке: "Отчеты.КассоваяКнига.СформироватьОтчет" ?? |
|||
7
breaktrough
21.07.14
✎
09:34
|
(3) Да, я тоже так думаю. Но куда копать? не знаю...
|
|||
8
Kurbash
21.07.14
✎
09:39
|
ставь ТО и вперед в отладчике
|
|||
9
breaktrough
21.07.14
✎
09:40
|
(8) Как мне зайти в серверную процедуру в отладчике???
|
|||
10
breaktrough
21.07.14
✎
09:40
|
(8) Ставлю, но ее проходит и сразу уже готовый отчет вылазит.
|
|||
11
Kurbash
21.07.14
✎
09:41
|
F11 а не F10 когда курсор стоит на процедуре
|
|||
12
breaktrough
21.07.14
✎
09:43
|
(11) Вот пример процедуры:
&НаКлиенте Процедура СформироватьОтчет(Команда) ОчиститьСообщения(); ОтключитьОбработчикОжидания("Подключаемый_ПроверитьВыполнениеЗадания"); РезультатВыполнения = СформироватьОтчетНаСервере(); Если НЕ РезультатВыполнения.ЗаданиеВыполнено Тогда ДлительныеОперацииКлиент.ИнициализироватьПараметрыОбработчикаОжидания(ПараметрыОбработчикаОжидания); ПодключитьОбработчикОжидания("Подключаемый_ПроверитьВыполнениеЗадания", 1, Истина); ОбщегоНазначенияКлиентСервер.УстановитьСостояниеПоляТабличногоДокумента(Элементы.Результат, "ФормированиеОтчета"); КонецЕсли; ПодключитьОбработчикОжидания("Подключаемый_ЗакрытьНастройки", 0.1, Истина); КонецПроцедуры Ставлю точку останова на строке "РезультатВыполнения = СформироватьОтчетНаСервере();" Отладчик просто проходит ее и все. Внутрь не попасть! |
|||
13
breaktrough
21.07.14
✎
09:45
|
Флаг "разрешить отладку на сервере" стоит.
|
|||
14
Kurbash
21.07.14
✎
09:45
|
поставь на ОтключитьОбработчикОжидания("Подключаемый_ПроверитьВыполнениеЗадания"); и когда нажмешь F10 курсор встанет на РезультатВыполнения = СформироватьОтчетНаСервере(); вот тут нажмешь F11(шагнуть в) в отладчике
|
|||
15
breaktrough
21.07.14
✎
09:49
|
(14) А ты сам попробуй) В серверную процедуру СформироватьОтчетНаСервере() не проваливается, а проходит ее и вылазит на следующей строке сразу. В том-то и проблема.
|
|||
16
Новенький_2009
21.07.14
✎
09:51
|
(13) а ты посмотри что в реестре? Дебаг ключ есть? Как поставил - службу сервера рестартовал после этого?
|
|||
17
breaktrough
21.07.14
✎
09:58
|
(16) Щас перезапущу)
|
|||
18
smotritel
21.07.14
✎
12:00
|
(0) внешние отчеты в БП, да и в других конфах на упр.формах так не переделаешь. т.к. при работе отчета используется код Модуля менеджера - а в "Внешнем" отчете модуля менеджера нет как класса.
Ты выгрузила отчет во внешний файл, но при этом код формы продолжает вызывать код модуля менеджера "типового" отчета. А типовой отчет и макеты берет из конфигурации, а не из твоего внешнего отчета. |
|||
19
smotritel
21.07.14
✎
12:04
|
чтобы запустить "внешнюю" кассовую книгу, нужно все процедуры из Модуля менеджера типового отчета перенести в Модуль объекта твоего внешнего отчета - обычным копи-пастом.
Затем нужно в модуле формы, в функции СформироватьОтчетНаСервере() закомментировать код: Если ИБФайловая Тогда АдресХранилища = ПоместитьВоВременноеХранилище(Неопределено, УникальныйИдентификатор); Отчеты.КассоваяКнига.СформироватьОтчет(ПараметрыОтчета, АдресХранилища); РезультатВыполнения = Новый Структура("ЗаданиеВыполнено", Истина); Иначе РезультатВыполнения = ДлительныеОперации.ЗапуститьВыполнениеВФоне( УникальныйИдентификатор, "Отчеты.КассоваяКнига.СформироватьОтчет", ПараметрыОтчета, БухгалтерскиеОтчетыКлиентСервер.ПолучитьНаименованиеЗаданияВыполненияОтчета(ЭтотОбъект)); АдресХранилища = РезультатВыполнения.АдресХранилища; ИдентификаторЗадания = РезультатВыполнения.ИдентификаторЗадания; КонецЕсли; а вместо него написать код: АдресХранилища = ПоместитьВоВременноеХранилище(Неопределено, УникальныйИдентификатор); РеквизитФормыВЗначение("Отчет").СформироватьОтчет(ПараметрыОтчета, АдресХранилища); // !!! РезультатВыполнения = Новый Структура("ЗаданиеВыполнено", Истина); |
|||
20
smotritel
21.07.14
✎
12:05
|
(18) извиняюсь, "выгрузиЛ", конечно ;)
|
|||
21
smotritel
21.07.14
✎
12:08
|
p.s. если не секрет, что правишь в макете?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |