|
Заполнить макет Word в 1С 8.3 K1RSAN, alexxx961503, Fish, VladZ, skafandr, kubik_live, Garykom, X Leshiy, Федя Тяпкин, zzz_zzz_zzz, Telcher, timurhv, LuckyStar, 1cVandal, DemonShinji2, Sabron, integer, probably, RVN, Crusher, yanikolay, Fregat, бегинер, trooba, ttGala, vicof, Niveus, b_ru, elka302, nick86, maxar, Лодырь, Мультук, maxab72, dergreche, GreenDay1986, Trinitron, Prog_man, KolPecivanovich
| ☑ | ||
|---|---|---|---|---|
|
0
K1RSAN
31.03.26
✎
12:38
|
Пытаюсь перенести из 8.2 (своя конфигурация) с минимальными усилиями формирование документа Word и заполнение из шаблона, добавленного в конфигурацию, как Макет типа Active Document
За основу берем конфигурацию CRM и дорабатываем. База серверная Смотрю в конфигурации берут за основу для работы с Word макет типа двоичные данные, с таким я не работал, надеюсь сделать как-то по старому. Проблема сейчас в чем - если сделать ДоговорОбъект=РеквизитФормыВЗначение("Объект"); Договор = ДоговорОбъект.ПолучитьМакет("Договор2025"); КомОбъект = Договор.Получить(); То на 3-ей строке выдаёт ошибку. Подозреваю, что проблема в том, что на сервере нет офиса, значит надо открывать ворд на клиенте (если делать так, как было в 8.2), но на клиенте не получается получить доступ к макету. Думаю открыть на клиенте пустой созданный КомОбъект вордовского файла, как-то передать ему макет на сервере и дальше заполнять, но пока что-то не получается. Не хочу делать как двоичные данные, так как макет порой приходится править, ещё к этому макету добавляется через механизм закладок второй макет приложения, который выбирается на основании тарифа. В итоге в один файл Word вставляются данные из двух макетов и ещё в каждом макете заполняются данные. Можете подсказать, куда копать? Или проще разобраться с двоичными данными и делать через встроенные механизмы конфигурации? |
|||
|
1
1cVandal
31.03.26
✎
12:54
|
УправлениеПечатьюКлиент.ИнициализироватьМакетОфисногоДокумента(МакетСоглашения,"DOC", Неопределено);
ПечатнаяФорма = УправлениеПечатьюКлиент.ИнициализироватьПечатнуюФорму("DOC", Неопределено, Макет); И да двоичныеданные, либо макет положить в расшаренную папку и получать не двоичные данные из макета внутреннего, а на лету брать этот шаблон заворачивать в двоичные данные и передавать в функции |
|||
|
2
kubik_live
31.03.26
✎
13:24
|
&НаКлиенте
Вызываю из формы - для ручного ввода доп. параметров У меня так работает: Процедура Печать_ТрудовойДоговор(СтруктураДок) Word = Новый COMОбъект("Word.Application"); Макет_ТрудовойДоговор = ПолучитьМакетСервер("ТрудовойДоговор"); //на сервере получаю макет из ДД ИмяФайла_ТД = ПолучитьИмяВременногоФайла("docx"); Макет_ТрудовойДоговор.Записать(ИмяФайла_ТД); ДокументWord = Word.Documents.ADD(ИмяФайла_ТД); ДокументWord.Activate(); ................................... |
|||
|
3
Федя Тяпкин
31.03.26
✎
13:25
|
(0) я вроде в конфигурации CRM (или нет...) видел добавленный разработчиками отраслевки механизм формирования ПФ на основе вордовского файла. Очень удобная вещь! Макеты печатных форм или как то так называлось. Нет такого?
|
|||
|
4
K1RSAN
31.03.26
✎
13:27
|
(2) Спасибо, попробую
|
|||
|
5
Garykom
гуру
31.03.26
✎
13:32
|
(3) Уже в БСП есть
Но работает местами не очень |
|||
|
6
K1RSAN
31.03.26
✎
13:39
|
(1) Что-то такое видел. Посмотрю
|
|||
|
7
K1RSAN
31.03.26
✎
16:55
|
В итоге смирился и делаю встроенными в СРМ возможностями через двоичные данные. Просто это будет дико неудобно при необходимости изменить макет. Либо надо будет сделать так, чтобы макет можно было загружать в режиме предприятия
|
|||
|
8
timurhv
01.04.26
✎
00:04
|
(7) Если есть время, то лучше под БСП переделать. Я так этикетки импорта товаров переделал, перед этим задолбало в целом изменения бизнеса и постоянные новые требования из разряда тут 10 строк жирным, там 20 строк обычным шрифтом, потом 10 строк курсивом и все это в одну ячейку как в Excel. Но минус что в Excel мы можем вставить любую картинку, а в ТабличныйДокумент в ячейку ФорматированнаяСтрока - Х...Й. Только можно вставить из конфигурации. А этих сертификатов соответствия целая тьма, больше 300+ что я дольжен каждую картинку в конфигуратор добавлять?
https://ru.pngtree.com/so/%D1%81%D0%B5%D1%80%D1%82%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%82-%D0%B7%D0%BD%D0%B0%D1%87%D0%BE%D0%BA |
|||
|
9
1cVandal
01.04.26
✎
08:15
|
(7) вот эта функция
УправлениеПечатьюКлиент.ИнициализироватьМакетОфисногоДокумента(МакетСоглашения,"DOC", Неопределено); если в нее провалиться дальше макет из дд сохраняет во временный каталог в doc и по ком к нему подключается Если ты там уберешь все эти макеты и закинешь ссылку на расшаренный вордовский документ то будет то что тебе надо |
|||
|
10
K1RSAN
01.04.26
✎
10:52
|
(8) У меня не табличный документ, у меня в качестве макета был Word, в котором добавлены закладки.
(9) Сделал через двоичные данные Там ещё нашел, что заполняются в процедуре части с помощью справочника "Шаблоны автотекста". Остался только вопрос, как туда же впихнуть посреди одного документа - другой. Там в зависимости от тарифа надо вставлять разные шаблоны приложения с разными ТЧ и прочим. |
|||
|
11
timurhv
01.04.26
✎
13:01
|
(10) Может поможет, при выводе на печать у области по-сути текст XML, можно его копировать и вставлять в цикле что угодно. Мне нужно было вывести шапку и продублировать строки в зависимости от количества товаров в наборе (без таблицы).
Артикул: Набор1 Наименование: Набор1 Артикул: СоставНабора1 Наименование: СоставНабора1 ... Артикул: СоставНабора2 Наименование: СоставНабора2 ПодробностиОбласть = УправлениеПечатью.ОбластьМакета(Макет, СтруктураОбластей["СтраницаВывода"]); ИсходныйТекстОбласти = Область.Текст; // сохраняем исходную часть XML Для Каждого СтруктураДанных Из ПараметрыПечати.ДанныеДляЗаполнения Цикл Область.Текст = ИсходныйТекстОбласти; // XML у выводимой области ТутВЦиклеФигачимТекстОбластиКАКНадо(); УправлениеПечатью.ПрисоединитьОбластьИЗаполнитьПараметры(ПечатнаяФорма, Область, СтруктураДанных, Ложь); КонецЦикла; НачалоВставки = СтрНайти(Область.Текст, "<w:p w14", НаправлениеПоиска.СКонца, ПозицияНачало); КонецВставки = СтрНайти(Область.Текст, "</w:p>", НаправлениеПоиска.СНачала, ПозицияКонец); ТекстВставки = Сред(Область.Текст, НачалоВставки, КонецВставки - НачалоВставки + 6); |
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |