|
Программное сохранение активного табличного документа в файл | ☑ | ||
---|---|---|---|---|
0
gamletspb
27.07.16
✎
12:45
|
Доброго всем дня.
Вообще нужно отправлять по почте печатные формы авансовых отчетов из типовой бухгалтерии (2.0). Соответственно конфигурацию менять нельзя. Делаю через внешнюю обработку. Выбрать и распечатать документ из внешней обработки проблем нет. А вот с сохранением в файл (программно) - проблемы. Если тупо использовать метод ТабличныйДокумент.Записать(), то надо предварительно заполнять макет, т.е. переносить в мою обработку процедуру печати из модуля документа. Что мало чем отличается от правки самой конфигурации, т.к. после каждого обновления конфигурации это надо будет делать заново. Очень хочется как то перехватить уже сформированный при печати макет, но как я понимаю штатными средствами это сделать невозможно. Или все-таки можно? |
|||
1
YFedor
27.07.16
✎
12:49
|
Я для подобного менял процедуру в общем модуле конфигурации :-(
|
|||
2
Рэйв
27.07.16
✎
12:52
|
(0)>> т.е. переносить в мою обработку процедуру печати из модуля документа.
Зачем? Процедура печати должна быть Экспортной. Получай объект документа и вызывай ее через точку |
|||
3
mehfk
27.07.16
✎
12:52
|
>> печатные формы авансовых отчетов из типовой бухгалтерии (2.0)...после каждого обновления конфигурации это надо будет делать заново
Угадай, когда последний раз там что-то менялось? |
|||
4
gamletspb
27.07.16
✎
12:56
|
(2) Да она экспортная, но вот функция которая из нее вызывается и собственно возвращает ссылку на сформированный макет - нет. А так то да, достаточно сделать ту функцию экспортной и юзать ее в своей обработке.
|
|||
5
gamletspb
27.07.16
✎
12:59
|
(3) ну вообще каждый месяц обновляю
я конечно понимаю, что конкретно авансовый отчет может не скоро изменится, но тем хуже, т.к. когда это все-таки произойдет я напрочь забуду что когда-то что-то делала по этому поводу и буду мучительно вспоминать где я там чего менял ) |
|||
6
mehfk
27.07.16
✎
13:01
|
(5) Делай ВПФ, не сношай мозг.
|
|||
7
gamletspb
27.07.16
✎
13:03
|
(6) ничего не могу с собой поделать, обожаю мозгосношательство )
ну если ничего умнее не найду, придется так и делать |
|||
8
Рэйв
27.07.16
✎
13:05
|
(5)Той функции которая вызывается не обязательно быть экспортной если вызывается она из экспортной функции.
Если ты уже попал в код экс функции дальше весь контекст должен быть доступен |
|||
9
gamletspb
27.07.16
✎
13:05
|
Просто в 7ке я для этих целей юзаю всякие formex-ы и ёксели. И все прекрасно работает. А в восьмерке с этим делом как-то грустно все.
|
|||
10
gamletspb
27.07.16
✎
13:09
|
(8) с этого места по-подробнее. Имею вызов экспортной процедуры:
ОбъектДок.Печать(ТекМакет.Имя); Ну и как мне получить доступ ко "всему контексту"? |
|||
11
Рэйв
27.07.16
✎
13:10
|
(10)Если процедура начнет отрабатывать, то все вызовы из нее станут доступны экспортные они или нет
|
|||
12
DrZombi
27.07.16
✎
13:10
|
(0) Используй виртуальный PDF принтер :)
|
|||
13
DrZombi
27.07.16
✎
13:12
|
||||
14
gamletspb
27.07.16
✎
13:21
|
(11) было бы неплохо конечно, но боюсь сие из области фантастики )
|
|||
15
Рэйв
27.07.16
✎
13:34
|
(14)Код в модуле документа:
//------- Процедура ЧтотоЭкспорт() Экспорт ЧтотоНеЭкспорт(); КонецПроцедуры Процедура ЧтотоНеЭкспорт() Сообщить("Плюх!"); КонецПроцедуры //Код в форме обработки: &НаКлиенте Процедура Команда1(Команда) НажмиМеня(); КонецПроцедуры &НаСервере Процедура НажмиМеня() Док=Документы.ПриемныйАкт.СоздатьДокумент(); Док.ЧтотоЭкспорт(); КонецПроцедуры //--------------- результат: https://yadi.sk/d/4ikjF4fgtfhPE |
|||
16
gamletspb
27.07.16
✎
13:52
|
(15) это все прекрасно, а теперь поменяй процедуру ЧтотоНеЭкспорт() на функцию и попробуй получить значение которое она возвращает извне экспортной процедуры
|
|||
17
Рэйв
27.07.16
✎
14:05
|
(16)Код в модуле документа:
//--------------- Функция ЧтотоЭкспорт() Экспорт Т=ЧтотоНеЭкспорт(); Возврат Т; КонецФункции Функция ЧтотоНеЭкспорт() Таб=Новый ТабличныйДокумент; Таб.Область(1,1,1,1).Текст="Плюх!"; Возврат Таб; КонецФункции //Код в форме обработки: &НаКлиенте Процедура Команда1(Команда) Т=НажмиМеня(); Т.Показать(); КонецПроцедуры &НаСервере Функция НажмиМеня() Док=Документы.ПриемныйАкт.СоздатьДокумент(); Таб=Док.ЧтотоЭкспорт(); Возврат Таб; КонецФункции //---------------- результат: https://yadi.sk/i/xp5yg8fbtfnte |
|||
18
gamletspb
27.07.16
✎
14:22
|
(17) опа, а чейта мы экспортную процедуру на функцию поменяли? Э не, так не пойдет, ты давай из экспортной процедуры мне эту таблицу вытащи. )
|
|||
19
Рэйв
27.07.16
✎
14:30
|
(0)могу вытащить.Только она на сервере и там не работает .Показать() у таб дока. Изначально она и была процедурой, только когда не захотело на сервере показывать я ее в функцию переделал:-)
Так что все работает, дальше сам пробуй. а у меня раб.день закончен:-) |
|||
20
gamletspb
27.07.16
✎
14:38
|
(19) ну как вернешься рекомендую погуглить тему "области действия переменных" - весьма полезно для общего развития
|
|||
21
Рэйв
28.07.16
✎
03:38
|
(20)Ну-ну. Боюсь, что я про эту тему знаю побольше тебя:-)
А ты вместо того чтобы разглагольствовать с умным видом - попробуй сам. Я в отличии от тебя в докозательство своих слов привожу код.а ты только бла- бла-бла:-) |
|||
22
gamletspb
28.07.16
✎
13:15
|
(21) Да было бы чего пробовать.
Ок, имеем: //Модуль документа Функция ЧтотоНеЭкспорт() Таб=Новый ТабличныйДокумент; Таб.Область(1,1,1,1).Текст="Плюх!"; Возврат Таб; КонецФункции Процедура ЧтотоЭкспорт() Экспорт Т=ЧтотоНеЭкспорт(); КонецПроцедуры //Наша обработка Процедура ПриНажатииНаКнопку() Док=Документы.ПриемныйАкт.СоздатьДокумент(); Док.ЧтотоЭкспорт(); КонецПроцедуры Как мне в моей обработке, в процедуре ПриНажатииНаКнопку() получить ссылку на значение, возвращаемое функцией ЧтотоНеЭкспорт() не меняя ничего в модуле документа? |
|||
23
Рэйв
28.07.16
✎
13:25
|
(22)Если ЧтотоЭкспорт не функция, то никак. И области видимости тут не причем. И разговор шел совсем о другом.
Ты утверждал, что ЧтотоНеЭкспорт() , став функцией ничего не сможет вернуть в экспортную процедуру >>а теперь поменяй процедуру ЧтотоНеЭкспорт() на функцию и попробуй получить значение которое она возвращает извне экспортной процедуры<< А теперь с умным видом переобуваешься и меняешь вопрос:-). Как получить в это совсем другая тема. Проще всего найти где формируется и возвращается ТабДокумент и использовать ее. Или есл на то пошло скопировать ее к себе в обработку(что совсем кстати не одно и тоже что менять конфу если она внешняя.) |
|||
24
gamletspb
28.07.16
✎
13:37
|
(23)
>>Если ЧтотоЭкспорт не функция, то никак - аллилуйя! не прошло и двух суток! ) >>Ты утверждал, что ЧтотоНеЭкспорт() , став функцией ничего не сможет вернуть в экспортную процедуру Это где же я такое утверждал, интересно знать? |
|||
25
Рэйв
28.07.16
✎
13:48
|
(24)Как это где?
Я прямо тебя процетировал. Могу еще раз:-)) >>а теперь поменяй процедуру ЧтотоНеЭкспорт() на функцию и попробуй получить значение которое она возвращает извне экспортной процедуры<< |
|||
26
Рэйв
28.07.16
✎
13:50
|
+ ты вообще утверждал что неэкспотрные вызовы в экспортной процедуре не будут работать, что это не так я тебе собственно и доказывал, есл ты заметил.А не про мифические "области действия переменных":-))
|
|||
27
YFedor
28.07.16
✎
14:04
|
(0) Все-таки измени одну функцию общего модуля и будет тебе счастье
|
|||
28
gamletspb
28.07.16
✎
14:04
|
(25) как из этого
>>а теперь поменяй процедуру ЧтотоНеЭкспорт() на функцию и попробуй получить значение которое она возвращает ИЗВНЕ экспортной процедуры<< следует это: >>Ты утверждал, что ЧтотоНеЭкспорт() , став функцией ничего не сможет вернуть В экспортную процедуру ??? >>ты вообще утверждал что неэкспотрные вызовы в экспортной процедуре не будут работать ГДЕ??? КОГДА я ТАКОЕ мог утверждать? Т Я такой дури не то что утверждать, даже вообразить не могу. Ты там полегче что-ли, с тяжелыми то наркотиками ) |
|||
29
gamletspb
28.07.16
✎
14:07
|
(27) да я уже давно ту функцию в свою обработку вынес. Не хотелось конечно, но всяко лучше чем с поддержки снимать.
|
|||
30
Рэйв
28.07.16
✎
14:08
|
(28)да какая разница из какого ВНе она его получает?
Какое ты ИЗВНЕ интересно назовешь в качестве отмазки чтобы получив его ЧтотоНеЭкспорт не смогло вернуть?:-)Ну, напрягись:-) |
|||
32
DDwe
28.07.16
✎
14:21
|
(31) Если такой умный, зачем на форум с вопросами лезешь?
|
|||
34
YFedor
28.07.16
✎
15:26
|
(29) Тогда все должно получиться.
Очень неудачно сделано, что Печать в модулях документов Процедура, но такова селяви |
|||
35
DrZombi
28.07.16
✎
15:35
|
(33) иди страдай над фейковой проблемой твоей лени :)
|
|||
36
DrZombi
28.07.16
✎
15:36
|
(34) Да все он уже сделал. Тупо скопировал весь код к себе и правит в зависимости от правок в другой БД или обработке, побоку. Даже не вдумывался :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |