|
Получить ТабличныйДокумент через COM | ☑ | ||
---|---|---|---|---|
0
lamme
18.10.19
✎
10:47
|
Из 1С8 УФ подключаюсь к типовой, не правленной(и вносить корректировки не планируются) 1С82Бух (не уф).
Необходимо получить печатную форму в уф - которая сформируется по правилам бп. в бп у документа в модуле объекта типовая процедура Печать(ИмяМакета, КоличествоЭкземпляров = 1, НаПринтер = Ложь, НепосредственнаяПечать = Ложь) экспорт в ней идет печать упд ... Вот это УчетНДС.ПечатьУниверсальногоПередаточногоДокумента(ДанныеДокумента, СчетФактураТребуется, СтруктураОтбораСчетаФактуры) - возвращает готовый ТабДок. хочется его стащить в 1С8УФ и там с ним поработать дальше. Подскажите - как такое делается ? |
|||
1
lamme
18.10.19
✎
10:51
|
приконнектился.. тут не вопрос
типа Ком = V83COMConnector.Connect(СтрокаПодключенияКБух); и понимаю - что табдок = Ком.УчетНДС.ПечатьУниверсальногоПередаточногоДокумента(ДанныеДокумента, СчетФактураТребуется, СтруктураОтбораСчетаФактуры) не взлетит |
|||
2
Галахад
гуру
18.10.19
✎
11:13
|
В смысле? Передать ссылку и т.д. в другую базу и там эти данные обработать?
Нет, это фантастика. |
|||
3
Garykom
гуру
18.10.19
✎
11:15
|
(0) Можно но не нужно.
Советую забыть про COM и переходить на иные способы. |
|||
4
lamme
18.10.19
✎
11:18
|
2
почему ? 3 например ? |
|||
5
Галахад
гуру
18.10.19
✎
11:23
|
(4) Потому, что нет смысла ссылку передавать.
Или я не так понял (0)? |
|||
6
Мимохожий Однако
18.10.19
✎
11:26
|
(4) Перед передачей через СОМ возможно надо будет преобразовать ТЗ в строку XML. Можно передавать только примитивные типы.
|
|||
7
lamme
18.10.19
✎
11:29
|
(5)
я в базу бух передаю номер документа (ну или Ком.Документы.Реализация.найтиПоНомеру(мойномер).ссылка) по которому надо сформировать упд и готовую упд вернуть обратно. |
|||
8
lamme
18.10.19
✎
11:31
|
(6)
не уловил вернее - уловил .. но как это к табдок относиться ? или табдок = это не примитивный вид ? тогда может типа табдок = Ком.УчетНДС.ПечатьУниверсальногоПередаточногоДокумента(..) табдок.записать() а в базе-применике - уже работать с файлом ? |
|||
9
lamme
18.10.19
✎
11:32
|
хотя .. вот вроде описано
https://programmist1c.ru/st_programming/st_kak_poluchit_pechat_formu_iz_udalbazi.html (в Конфигурации1) Процедура КнопкавыполнитьНажатие() ИмяУдаленногоКомпьютера="Компьютер2"; СтрокаПодключенияКУдаленнойБазе="File=""D:\1CBases\Конфигурация2; Usr=""Пользователь"";"; // путь к ИБ должен формироваться относительно файловой системы _удаленного_ компьютера!!! УдаленнаяБаза = Новый COMОбъект("V8.Application", ИмяУдаленногоКомпьютера); // экземпляр COM-объекта создается на удаленном компьютере УдаленнаяБаза.Connect(СтрокаПодключенияКУдаленнойБазе); ТабДок = ЗначениеИзСтрокиВнутр(УдаленнаяБаза.getPrintForm()); // получаем печатную форму из удаленной базы ТабДок.Показать(); КонецПроцедуры (в Конфигурации2 - должен быть расположен либо в модуле приложения, либо в общем модуле) Функция getPrintForm() Экспорт ТабДок = СформироватьПечатнуюФорму(); // формируем нужную форму. На выходе получаем объект типа Табличный документ Возврат ЗначениеВСтрокуВнутр(ТабДок); // поскольку по OLE передаются только значения базовых типов, сворачиваем табличный документ в строку КонецФункции |
|||
10
Провинциальный 1сник
18.10.19
✎
11:33
|
(1) Традиционно - ЗначениеВСтрокуВнутр не сработает?
|
|||
11
Провинциальный 1сник
18.10.19
✎
11:34
|
+(10) как-то так?
табдок = ЗначениеИзСтрокиВнутр(Ком.ЗначениеВСтрокуВнутр(Ком.УчетНДС.ПечатьУниверсальногоПередаточногоДокумента(ДанныеДокумента, СчетФактураТребуется, СтруктураОтбораСчетаФактуры)) |
|||
12
Chameleon1980
18.10.19
✎
11:48
|
Сериализуй, десериализуй
|
|||
13
lamme
18.10.19
✎
12:32
|
эээ ...
Ошибка при вызове метода контекста (ПечатьУниверсальногоПередаточногоДокумента) Ком.УчетНДС.ПечатьУниверсальногоПередаточногоДокумента(ДанныеДокумента, Ложь, СтруктураОтбораСчетаФактуры); по причине: Произошла исключительная ситуация (1C:Enterprise 8.3.10.2466): {ОбщийМодуль.УчетНДС.Модуль(10676)}: Метод объекта не обнаружен (ПечатьУниверсальногоПередаточногоДокумента) что это ? в базе бух на общем модуле- УчетНДС - стоит галочка - Внешнее соединение https://clip2net.com/s/4497kig в базе приемнике: https://clip2net.com/s/4497rwX что не так делаю ? |
|||
14
lamme
18.10.19
✎
12:35
|
V83COMConnector= Новый COMОбъект("V83.COMConnector");
Попытка Ком = V83COMConnector.Connect(СтрокаПодключенияКБух); Исключение сообщить (описаниеошибки()); сообщить ("Ошибка подключения к базе бухгалтерии для получения данных для печати УПД по валютному документу !"); ЕстьошибкаПодключени = истина; КонецПопытки; КомДок =ком.документы.РеализацияТоваровУслуг.найтиПоНомеру("УТ-004954",Дата("16.10.2019 0:00:00")); ком.документы.РеализацияТоваровУслуг.печать("УниверсальныйПередаточныйДокумент",1,Ложь,Ложь); |
|||
15
lamme
18.10.19
✎
12:44
|
дошло ..
ком соединение проваливается в этот модуль и идет по коду модуля. тут все норм а в коде бух встречается Возврат СчетФактураОбъект.ПечатьУниверсальногоПередаточногоДокумента(ДанныеДляПечати); и вот тут оно и падает с ошибкой |
|||
16
lEvGl
гуру
18.10.19
✎
12:45
|
ну что там падает разбираться надо, а готовый ТабДок делал через ЗначениеВСтрокуВнутр там и потом ИзСтроки тут
(10) +1 |
|||
17
lamme
18.10.19
✎
12:47
|
в модуле БП УчетНДС процедуры - печатьуниверсальнгоПД- идет
Функция ПечатьУниверсальногоПередаточногоДокумента(ДанныеДокумента, СчетФактураТребуется, СтруктураОтбораСчетаФактуры = Неопределено) Экспорт ..... Возврат СчетФактураОбъект.ПечатьУниверсальногоПередаточногоДокумента(ДанныеДляПечати); ... конецфункции |
|||
18
lEvGl
гуру
18.10.19
✎
12:54
|
там везде препроцессоры стоят, если из внешнего соединения не видно - значит изолировано от такого контекста
способ в лоб и чтобы не затерлось при обновлении - вынести ВСЕ нужные процедуры в отдельный модуль, мутотень, но работать должно |
|||
19
lamme
18.10.19
✎
12:59
|
вот гадость ...
или внешней обработкой формировать и потом обращаться из ком к внешней обработке ? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |