Документооборот 8: Расширяем возможности автозаполнения шаблонов документов в 1С или XML-инъекция

17.02.14

Задачи пользователя - Адаптация типовых решений

Довелось недавно решать интересную задачу в которой необходимо было добавить внутреннему документу табличную часть и заполнять на основании такого внутреннего документа word'овский документ по шаблону автозаполнения. Конфигурацию в данном примере модифицировать не потребуется.
Кому интересно - прошу под кат.
Посмотрев на справку и примеры я пришел к выводу, что прямым путем такую задачу не решить. Пойдем в обход.
Анализ кода в конфигураторе показал мне такое место:
 
Модуль АвтозаполнениеШаблоновФайловКлиентСервер строка 743
 
Если Найти(СтрЗамены, Символы.ПС) Тогда
        СтрЗамены = СтрЗаменить(СтрЗамены, Символы.ПС, "");
        Если СтрЗамены <> ЧтениеXML.Значение Тогда
                ЗаписьXML.ЗаписатьБезОбработки(СтрЗамены);
        Иначе
                ЗаписьXML.ЗаписатьТекст(СтрЗамены);
        КонецЕсли;
Иначе
        ЗаписьXML.ЗаписатьТекст(СтрЗамены);
КонецЕсли; 
 
Вывод очень простой - если мы выполним условие - наличие переноса строки - то получим возможность записать то что нам нужно.
Данные код работает только при замене текста в документе, поэтому создаем в нашем документе текст для замены, например, РазделТаблицыТарифнойСетки.

Я не рекомендую использовать символы @#$ и т.д. в тексте замены, так как очень вероятна ситуация когда в структуре документа вы получите три отдельных текста (или "пробега"):

<w:t>@</w:t><w:t>Таблица</w:t><w:t>@</w:t>

и 1С вам будет упорно сообщать, что "@Таблица@" отсутствует в документе.

 
Итак приступим к формированию нашего РезультатаОбработки:
// Закроем открытые теги
РезультатОбработки = "</w:t></w:r></w:p>";
// Заголовок таблицы
РезультатОбработки = РезультатОбработки +
"<w:tbl>
 | <w:tblPr>
 |   <w:tblW w:w=""5000"" w:type=""pct""/> // Ширина таблицы во весь лист
 |   <w:tblBorders> // Границы
 |     <w:top w:val=""single"" w:sz=""4"" w:space=""0"" w:color=""auto""/>
 |     <w:left w:val=""single"" w:sz=""4"" w:space=""0"" w:color=""auto""/>
 |     <w:bottom w:val=""single"" w:sz=""4"" w:space=""0"" w:color=""auto""/>
 |     <w:right w:val=""single"" w:sz=""4"" w:space=""0"" w:color=""auto""/>
 |     <w:insideH w:val=""single"" w:sz=""4"" w:space=""0"" w:color=""auto""/>
 |     <w:insideV w:val=""single"" w:sz=""4"" w:space=""0"" w:color=""auto""/>
 |   </w:tblBorders>
 | </w:tblPr>
 | <w:tblGrid>
 |   <w:gridCol w:w=""10296""/>
 | </w:tblGrid>
 | <w:tr> // Первая строка - она же заголовок таблицы
 |   <w:tc> // Первая колонка
 |     <w:tcPr> // Параметры колонки
 |       <w:tcW w:w=""7"" w:type=""pct""/> // Ширина в процентах
 |       <w:vAlign w:val=""center"" /> // Вертикальное выравнивание
 |     </w:tcPr>
 |     <w:p> // Параграф
 |      <w:pPr> // Параметры параграфа
 |              <w:jc w:val=""center""/> // Горизонтальное выравнивание
 |      </w:pPr>
 |      <w:r> // "Пробег" 
 |          <w:rPr> // Параметры "пробега"
 |              <w:sz w:val=""24""/> // Размер шрифта в 0.5 пункта
 |              <w:b w:val=""1"" /> // Полужирный
 |          </w:rPr>
 |          <w:t>№ п/п</w:t> // Собственно сам текст
 |      </w:r>
 |  </w:p>
 |   </w:tc>
 |   <w:tc>
 |     <w:tcPr>
 |       <w:tcW w:w=""32"" w:type=""pct""/>
 |       <w:vAlign w:val=""center"" />
 |     </w:tcPr>
 |     <w:p>
 |      <w:pPr>
 |              <w:jc w:val=""center""/>
 |      </w:pPr>
 |      <w:r>
 |          <w:rPr>
 |              <w:sz w:val=""24""/>
 |              <w:b w:val=""1"" />
 |          </w:rPr>
 |          <w:t>Станция отправления</w:t>
 |      </w:r>
 |  </w:p>
 |   </w:tc>
 |   <w:tc>
 |     <w:tcPr>
 |       <w:tcW w:w=""32"" w:type=""pct""/>
 |       <w:vAlign w:val=""center"" />
 |     </w:tcPr>
 |     <w:p>
 |      <w:pPr>
 |              <w:jc w:val=""center""/>
 |      </w:pPr>
 |      <w:r>
 |          <w:rPr>
 |              <w:sz w:val=""24""/>
 |              <w:b w:val=""1"" />
 |          </w:rPr>
 |          <w:t>Станция назначения</w:t>
 |      </w:r>
 |  </w:p>
 |   </w:tc>
 |   <w:tc>
 |     <w:tcPr>
 |       <w:tcW w:w=""29"" w:type=""pct""/>
 |       <w:vAlign w:val=""center"" />
 |     </w:tcPr>
 |     <w:p>
 |      <w:pPr>
 |              <w:jc w:val=""center""/>
 |      </w:pPr>
 |      <w:r>
 |          <w:rPr>
 |              <w:sz w:val=""24""/>
 |              <w:b w:val=""1"" />
 |          </w:rPr>
 |          <w:t>Стоимость услуг (руб/тн без учета НДС)</w:t>
 |      </w:r>
 |  </w:p>
 |   </w:tc>
 | </w:tr>"; 
 
 
Далее нам понадобится шаблон строки:
ШаблонСтроки = "
 | <w:tr>
 |   <w:tc>
 |     <w:tcPr>
 |       <w:tcW w:w=""7"" w:type=""pct""/>
 |       <w:vAlign w:val=""center"" />
 |     </w:tcPr>
 |     <w:p>
 |      <w:pPr>
 |              <w:jc w:val=""center""/>
 |      </w:pPr>
 |      <w:r>
 |          <w:rPr>
 |              <w:sz w:val=""24""/>
 |          </w:rPr>
 |          <w:t>%1</w:t>
 |      </w:r>
 |  </w:p>
 |   </w:tc>
 |   <w:tc>
 |     <w:tcPr>
 |       <w:tcW w:w=""32"" w:type=""pct""/>
 |       <w:vAlign w:val=""center"" />
 |     </w:tcPr>
 |     <w:p>
 |      <w:pPr>
 |              <w:jc w:val=""center""/>
 |      </w:pPr>
 |      <w:r>
 |          <w:rPr>
 |              <w:sz w:val=""24""/>
 |          </w:rPr>
 |          <w:t>%2</w:t>
 |      </w:r>
 |  </w:p>
 |   </w:tc>
 |   <w:tc>
 |     <w:tcPr>
 |       <w:tcW w:w=""32"" w:type=""pct""/>
 |       <w:vAlign w:val=""center"" />
 |     </w:tcPr>
 |     <w:p>
 |      <w:pPr>
 |              <w:jc w:val=""center""/>
 |      </w:pPr>
 |      <w:r>
 |          <w:rPr>
 |              <w:sz w:val=""24""/>
 |          </w:rPr>
 |          <w:t>%3</w:t>
 |      </w:r>
 |  </w:p>
 |   </w:tc>
 |   <w:tc>
 |     <w:tcPr>
 |       <w:tcW w:w=""29"" w:type=""pct""/>
 |       <w:vAlign w:val=""center"" />
 |     </w:tcPr>
 |     <w:p>
 |      <w:pPr>
 |              <w:jc w:val=""center""/>
 |      </w:pPr>
 |      <w:r>
 |          <w:rPr>
 |              <w:sz w:val=""24""/>
 |          </w:rPr>
 |          <w:t>%4</w:t>
 |      </w:r>
 |  </w:p>
 |   </w:tc>
 | </w:tr>"; 
 
Здесь, думаю, вам все уже понятно.
Собственно, строки:

// Вывод строк
Для Каждого СтрокаТЧ Из ФактическийВладелецФайла.ТарифнаяСетка Цикл

    РезультатОбработки = РезультатОбработки
        + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
                ШаблонСтроки,
                СтрокаТЧ.НомерСтроки,
                СтрокаТЧ.СтанцияОтправления,
                СтрокаТЧ.СтанцияНазначения,
                Формат(СтрокаТЧ.Стоимость, "ЧДЦ=2"));

КонецЦикла;
// Закроем таблицу
РезультатОбработки = РезультатОбработки + " </w:tbl>"";
// Откроем теги, т.к. в структуре документа они закрываются сразу за вставкой.
РезультатОбработки = РезультатОбработки + "<w:p><w:r><w:t>";
 
Теперь мы уберем переносы строк внутри, которые мы использовали для удобства, и добавим в начало и конец для того, чтобы выполнился тот код, который позволит нам сформировать таблицу
 
// Добавим переносы строки для записи в xml без обработки
РезультатОбработки = Символы.ПС + СтрЗаменить(РезультатОбработки, Символы.ПС, "") + Символы.ПС;
 
Пример, где еще может пригодиться - например, формирование реестра связанных документов.

Необходимые условия:
Шаблон в формате *.docx 

Используемые материалы:

Документооборот шаблоны автозаполнения

См. также

Адаптация типовых решений Платформа 1С v8.3 1С:Документооборот Россия Платные (руб)

Расширение конфигурации для «1С:Документооборот КОРП», редакция 3.0. позволяет: 1.использовать произвольные табличные части в качестве дополнительных реквизитов к документу; 2 использовать произвольные табличные части в шаблонах в формате docx для автоматического заполнения таблиц.

29400 руб.

29.06.2023    5117    11    5    

20

Логистика, склад и ТМЦ Адаптация типовых решений Пользователь Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 1С:Управление нашей фирмой 3.0 Россия Управленческий учет Платные (руб)

Чтобы не допустить путаницы с обещаниями клиентам и для четкого контроля исполнения заказов мы используем резервирование товаров. Мы доработали УНФ, чтобы она автоматически отменяла старые резервы и не мешала эффективно продавать.

7200 руб.

02.08.2023    3499    8    0    

26

Адаптация типовых решений Программист Пользователь Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Абонемент ($m)

Каждый из нас сталкивается с ситуацией, когда какой-нибудь менеджер показывает свой Excel и рассказывает, как он что-то из 1С копирует в него, снабжает пояснениями, выделяет цветом и т.д. и т.п. Заканчивается все просьбой сделать вот чтобы также было в 1С. И оказывается такой человек (почти с гарантией) либо лучшим продажником, либо каким-то важным, за все отвечающим, - на ком все держится.

2 стартмани

22.04.2024    4700    dimanich70    15    

20

БСП (Библиотека стандартных подсистем) Адаптация типовых решений Программист Платформа 1С v8.3 1С:ERP Управление предприятием 2 Бесплатно (free)

Понадобилось в подменю "Создать на основании" добавить свою команду, которая открывает обработку. В процессе доработок появилась проблема двух подменю "Создать на основании". В статье о том, как решились проблемы.

01.03.2024    3444    dimanich70    8    

15

Адаптация типовых решений Программист Платформа 1С v8.3 1С:Управление торговлей 11 Россия Абонемент ($m)

Доработка типового отчета "Связанные документы" позволяет просто и быстро расширять состав объектов для построения структуры подчиненности документов, используя объекты основной конфигурации и любых расширений.

1 стартмани

27.10.2023    2738    21    avmartynov    14    

53

Пакетная печать Печатные формы Адаптация типовых решений Универсальные функции Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Абонемент ($m)

Расширение для программ 1С:Управление торговлей, 1С:Комплексная автоматизация, 1С:ERP, которое позволяет распечатывать печатные формы для непроведенных документов. Можно настроить, каким пользователям, какие конкретные формы документов разрешено печатать без проведения документа.

2 стартмани

22.08.2023    2821    43    progmaster    8    

4
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Yashazz 4761 19.02.14 11:37 Сейчас в теме
Класс! Отличная идея. Кстати, навело на мысль, что в любые строковые реквизиты неограниченной длины можно пихать свои xml, в т.ч. содержащие многострочные данные, лопатить их сериализатором и иметь хранение "табличных" данных.
2. Aleksandr_K 46 20.02.14 19:29 Сейчас в теме
(1) Yashazz, или в ХранилищеЗначения, например в регистре хранящем настройки отчетов и обработок в УТ, КА и УПП.
Если интересно, могу написать статью об использовании данного регистра для хранения данных внешних обработок и отчетов в БД.
3. ivdic 31 25.02.14 10:45 Сейчас в теме
неплохо бы еще вставлять в документ в нужное место печать и клеше (подпись руководителя)
5. Aleksandr_K 46 26.02.14 20:41 Сейчас в теме
(3) Без доработки типовой тут уже не обойдется. А почему не хотите сделать это изначально в шаблоне для автозаполнения?
4. soap 67 25.02.14 12:16 Сейчас в теме
Хороший подход ! Однозначно+
6. karapuzzzz 63 26.06.14 10:34 Сейчас в теме
У меня, конечно, не без доработок, но вот что реализовано:
1. Возможность вставлять таблицу в поле (а не заменять текст), что дает возможность перезаполнять документ сколь угодно раз
2. Таблицу можно создавать форматированной, что придает юзабилити. По сути создается табличный документ, который можно форматировать или программно или брать готовый шаблон из макета.
3. Вставлять картинку. При этом, картинка записывается в базе отдельным файлом.
4. Вставлять текст одного документа в другой.

Для реализации 3-4 пункта пришлось пойти на костыль: картинка или содержимое вставляется не непосредственно в поле документа, а рядом. При этом вокруг вставленного объекта создаются дополнительные поля на подобии открывающего и закрывающего тэга. Сделано это из-за ограничения поля, но для возможности перезаполнять документ неоднократно.

Сейчас я сильно занят, но когда более-менее освобожусь - обязательно напишу статью на эту тему.
8. Atori-kun 04.12.14 05:47 Сейчас в теме
(6) karapuzzzz, Время не появилось свободное?
Horsy; Hood; +2 Ответить
44. Horsy 04.03.21 12:26 Сейчас в теме
(6) Уважаемый karapuzzzz, может, вы уже написали статью?
50. karapuzzzz 63 17.03.21 01:28 Сейчас в теме
(44) Нет, и не напишу. Доступ к конфигурации был потерян давным давно.
7. Atori-kun 04.12.14 05:44 Сейчас в теме
ФактическийВладелецФайла - Это ссылка на владельца файла, а ТарифнаяСетка - ? Это не дополнительный реквизит, значит все равно пришлось в конфигуратор лезть?
9. Aleksandr_K 46 04.12.14 12:39 Сейчас в теме
(7) В конфигуратор лезть в любом случае придется.
ФактическийВладелецФайла - Ссылка на элемент справочника для которого формируется файл.
Тарифная сетка - не типовая табличная часть объекта
10. hvitaly 03.05.16 11:42 Сейчас в теме
Спасибо! Это то простое решение, которое я ищу последние полгода :)
Теперь можно написать функцию, в которую передавать заголовок и таблицу значений, чтобы она за кадром формировала структуру таблицы (чтобы не писать длинный текст каждый раз). Также, разобравшись в тегах Ворда можно в функцию передавать и некоторые параметры оформления.
Еще раз спасибо!
Aleksandr_K; +1 Ответить
11. SidorovNN 05.05.16 12:46 Сейчас в теме
Добрый день!
Подскажите пожалуйста. Тег "</w:t></w:r></w:p>" формирует абзац с пустой строкой? Столкнулся со следующей проблемой. Если данные файла обновлять по кнопке "Заполнить файл данными документа", то текст, вставленный через теги, постоянно смещается на одну строку вниз.
12. Aleksandr_K 46 05.05.16 16:43 Сейчас в теме
(11) SidorovNN, данные теги закрывают текущий параграф, а добавляемые в конце - открывают новый параграф. Если стилями предусмотрен отступ - будет выглядеть как пустая строка.
Чтобы сказать что-то более детальное - хотелось бы увидеть структуру документа в месте вставки.
13. SidorovNN 05.05.16 16:56 Сейчас в теме
(12) Aleksandr_K, во вложении файл. С помощью тегов заполняю поле "Получатель". При заполнении сначала вставляется пустая строка, потом сам текст. Если данные файла обновлять данными документа, то текст смещается вниз.
Прикрепленные файлы:
Бланк письма.docx
14. SidorovNN 12.05.16 11:35 Сейчас в теме
(12) Aleksandr_K, Не удалось выяснить причину?
15. Hateful72 5 07.11.16 15:16 Сейчас в теме
не актуально с релиза 2.1 где то. Общие модули автоподстановки немного переделали
djd; Aleksandr_K; +2 Ответить
16. crushos 10 31.07.17 11:12 Сейчас в теме
(15) 2.1.10.2
Все работает.

Может кому надо, реализация таблицы с "горизонтальными столбцами".

РезультатОбработки = "";
КоличествоСпутников = 0;
Массив = Новый Массив;
СтрокаВыводаWORD = "</w:t>";
СтрокаВыводаWORD =СтрокаВыводаWORD+"</w:r>";
СтрокаВыводаWORD =СтрокаВыводаWORD+"</w:p>";

СтрокаВыводаWORD =СтрокаВыводаWORD+ "    <w:tbl>
|      <w:tblPr>
|        <w:tblW w:w=""5400"" w:type=""dxa"" />
|        <w:jc w:val=""center"" />
|        <w:tblCellMar>
|          <w:left w:w=""0"" w:type=""dxa"" />
|          <w:right w:w=""0"" w:type=""dxa"" />
|        </w:tblCellMar>
|        <w:tblLook w:val=""04A0"" w:firstRow=""1"" w:lastRow=""0"" w:firstColumn=""1"" w:lastColumn=""0"" w:noHBand=""0"" w:noVBand=""1"" />
|      </w:tblPr>";
СтрокаВыводаWORD =СтрокаВыводаWORD+ "
|   <w:tblGrid>
| <w:gridCol w:w=""2700"" />";

Массив.Добавить("Наименование");	
Для Каждого СтрокаТЧ Из Файл.ВладелецФайла.Товары Цикл
	Если СокрЛП(СтрокаТЧ.Номенклатура.Родитель) = "Спутники" Тогда
		КоличествоСпутников = КоличествоСпутников+1;
		СтрокаВыводаWORD =СтрокаВыводаWORD+ "
		|        <w:gridCol w:w=""2700"" />";
		Массив.Добавить(СтрокаТЧ.Номенклатура.Наименование);
		ТоварПоискДопРеквизитов = СтрокаТЧ.Номенклатура;
	КонецЕсли;
КонецЦикла;
СтрокаВыводаWORD =СтрокаВыводаWORD+ "
|      </w:tblGrid>";

Если КоличествоСпутников>0 Тогда
	СтрокаВыводаWORD = СтрокаВыводаWORD+ "
	|	<w:tr w:rsidR=""00FF1197"" w:rsidRPr=""002716E2"" w:rsidTr=""00064027"">
	|        <w:trPr>
	|          <w:trHeight w:val=""61"" />
	|          <w:jc w:val=""center"" />
	|        </w:trPr>";
	Для Индекс = 0 По Массив.Количество() - 1 Цикл
		СтрокаВыводаWORD= СтрокаВыводаWORD+ "
		|          <w:tc>
		|          <w:tcPr>
		|            <w:tcW w:w=""2700"" w:type=""dxa"" />
		|            <w:tcBorders>
		|              <w:top w:val=""single"" w:sz=""8"" w:space=""0"" w:color=""auto"" />
		|              <w:left w:val=""single"" w:sz=""8"" w:space=""0"" w:color=""auto"" />
		|              <w:bottom w:val=""single"" w:sz=""8"" w:space=""0"" w:color=""auto"" />
		|              <w:right w:val=""single"" w:sz=""8"" w:space=""0"" w:color=""000000"" />
		|            </w:tcBorders>
		|            <w:noWrap />
		|            <w:tcMar>
		|              <w:top w:w=""0"" w:type=""dxa"" />
		|              <w:left w:w=""108"" w:type=""dxa"" />
		|              <w:bottom w:w=""0"" w:type=""dxa"" />
		|              <w:right w:w=""108"" w:type=""dxa"" />
		|            </w:tcMar>
		|            <w:vAlign w:val=""center"" />
		|            <w:hideMark />
		|          </w:tcPr>
		|          <w:p w:rsidR=""00FF1197"" w:rsidRPr=""002716E2"" w:rsidRDefault=""00FF1197"" w:rsidP=""0007101D"">
		|            <w:pPr>
		|              <w:rPr>
		|                <w:sz w:val=""20"" />
		|                <w:szCs w:val=""20"" />
		|              </w:rPr>
		|            </w:pPr>
		|            <w:r w:rsidRPr=""002716E2"">
		|              <w:rPr>
		|                <w:sz w:val=""20"" />
		|                <w:szCs w:val=""20"" />
		|              </w:rPr>
		|              <w:t>"+Массив[Индекс]+"</w:t>
		|            </w:r>
		|          </w:p>
		|        </w:tc>";
	КонецЦикла;
	СтрокаВыводаWORD = СтрокаВыводаWORD+ "
	|	</w:tr>";
	
	Для Каждого СтрокаДопР Из ТоварПоискДопРеквизитов.ДополнительныеРеквизиты Цикл
		Массив.Очистить();
		тмп = СокрЛП(СтрокаДопР.Свойство);
		Массив.Добавить(лев(тмп,Найти(тмп," (")));
		
		Для Каждого Стр из Файл.ВладелецФайла.Товары Цикл
			Если СокрЛП(Стр.Номенклатура.Родитель) = "Спутники" Тогда			
				Для Каждого ДопРеквизит Из Стр.Номенклатура.ДополнительныеРеквизиты Цикл
					Если (Строка(ДопРеквизит.Свойство) = СокрЛП(СтрокаДопР.Свойство)) 
						Или (ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ДопРеквизит.Свойство, "Заголовок") = СокрЛП(СтрокаДопР.Свойство)) Тогда
						Массив.Добавить(СокрЛП(ДопРеквизит.Значение));
					КонецЕсли;
				КонецЦикла;
			КонецЕсли;
		КонецЦикла;
		Если Массив.Количество() >1 Тогда		
			СтрокаВыводаWORD = СтрокаВыводаWORD+ "
			|	<w:tr w:rsidR=""00FF1197"" w:rsidRPr=""002716E2"" w:rsidTr=""00064027"">
			|        <w:trPr>
			|          <w:trHeight w:val=""61"" />
			|          <w:jc w:val=""center"" />
			|        </w:trPr>";		
			Для Индекс = 0 По Массив.Количество() - 1 Цикл
				СтрокаВыводаWORD= СтрокаВыводаWORD+ "
				|          <w:tc>
				|          <w:tcPr>
				|            <w:tcW w:w=""2700"" w:type=""dxa"" />
				|            <w:tcBorders>
				|              <w:top w:val=""single"" w:sz=""8"" w:space=""0"" w:color=""auto"" />
				|              <w:left w:val=""single"" w:sz=""8"" w:space=""0"" w:color=""auto"" />
				|              <w:bottom w:val=""single"" w:sz=""8"" w:space=""0"" w:color=""auto"" />
				|              <w:right w:val=""single"" w:sz=""8"" w:space=""0"" w:color=""000000"" />
				|            </w:tcBorders>
				|            <w:noWrap />
				|            <w:tcMar>
				|              <w:top w:w=""0"" w:type=""dxa"" />
				|              <w:left w:w=""108"" w:type=""dxa"" />
				|              <w:bottom w:w=""0"" w:type=""dxa"" />
				|              <w:right w:w=""108"" w:type=""dxa"" />
				|            </w:tcMar>
				|            <w:vAlign w:val=""center"" />
				|            <w:hideMark />
				|          </w:tcPr>
				|          <w:p w:rsidR=""00FF1197"" w:rsidRPr=""002716E2"" w:rsidRDefault=""00FF1197"" w:rsidP=""0007101D"">
				|            <w:pPr>
				|              <w:rPr>
				|                <w:sz w:val=""20"" />
				|                <w:szCs w:val=""20"" />
				|              </w:rPr>
				|            </w:pPr>
				|            <w:r w:rsidRPr=""002716E2"">
				|              <w:rPr>
				|                <w:sz w:val=""20"" />
				|                <w:szCs w:val=""20"" />
				|              </w:rPr>
				|              <w:t>"+Массив[Индекс]+"</w:t>
				|            </w:r>
				|          </w:p>
				|        </w:tc>";		
			КонецЦикла;		
			СтрокаВыводаWORD = СтрокаВыводаWORD+ "
			|	</w:tr>";
			
		КонецЕсли;
	КонецЦикла;	
КонецЕсли;
СтрокаВыводаWORD = СтрокаВыводаWORD+ "
|	</w:tbl>	";
СтрокаВыводаWORD = СтрокаВыводаWORD + "<w:p>";
СтрокаВыводаWORD = СтрокаВыводаWORD + "<w:r>";
СтрокаВыводаWORD = СтрокаВыводаWORD + "<w:t>";

РезультатОбработки = Символы.ПС + СтрЗаменить(СтрокаВыводаWORD, Символы.ПС, "") + Символы.ПС;
Показать
17. Zanuda1977 25.01.18 11:21 Сейчас в теме
2.1.11.5 к сожалению не работает.
24. Оберон 17 29.05.19 11:31 Сейчас в теме
(17) привет, попоробовал переделать под себя - работает. см (21)
18. podkova 07.03.18 21:53 Сейчас в теме
подскажите как решили вопрос?
19. awe007 20.05.19 10:31 Сейчас в теме
Очень актуальный вопрос. Коллеги, подскажите, есть ли какие то рабочие способы вставки табличной части в шаблон на актуальной версии ДО КОРП 2.1.12.2 ?
23. Оберон 17 29.05.19 11:31 Сейчас в теме
25. Оберон 17 29.05.19 11:32 Сейчас в теме
(19) получилось сделать свой вариант, см. (21)
20. Оберон 17 28.05.19 18:06 Сейчас в теме
вставил лист согласования -- полет нормальный
21. Оберон 17 28.05.19 18:48 Сейчас в теме
//
Функция ПолучитьСогласовантовПоБПвТЗ(тСсылка) Экспорт
	
	Запрос = Новый Запрос;
	Запрос.УстановитьПараметр("Предмет", тСсылка);
	Запрос.УстановитьПараметр("ТочкаМаршрута", БизнесПроцессы.Согласование.ТочкиМаршрута.Согласовать);
	
#Область Запрос
	Запрос.Текст =
	"ВЫБРАТЬ
	|	СогласованиеПредметы.Ссылка КАК Ссылка,
	|	СогласованиеПредметы.Ссылка.Завершен КАК Завершен,
	|	СогласованиеПредметы.Ссылка.Стартован КАК Стартован,
	|	СогласованиеПредметы.Ссылка.ДатаЗавершения КАК ДатаЗавершения
	|ПОМЕСТИТЬ Т1
	|ИЗ
	|	БизнесПроцесс.Согласование.Предметы КАК СогласованиеПредметы
	|ГДЕ
	|	СогласованиеПредметы.Предмет = &Предмет
	|	И СогласованиеПредметы.Ссылка.Стартован
	|	И СогласованиеПредметы.Ссылка.ПричинаПрерывания = """"
	|;
	|
	|////////////////////////////////////////////////////////////­////////////////////
	|ВЫБРАТЬ
	|	ЗадачаИсполнителя.Дата КАК Дата,
	|	ЗадачаИсполнителя.Исполнитель КАК Исполнитель,
	|	ЗадачаИсполнителя.РольИсполнителя КАК РольИсполнителя,
	|	ЗадачаИсполнителя.ТочкаМаршрута КАК ТочкаМаршрута,
	|	ЗадачаИсполнителя.Описание КАК Описание,
	|	ЗадачаИсполнителя.ТочкаМаршрута.Порядок КАК ТочкаМаршрутаПорядок,
	|	ЗадачаИсполнителя.ТочкаМаршрута.Представление КАК ТочкаМаршрутаПредставление,
	|	ЗадачаИсполнителя.ТочкаМаршрута.Ссылка КАК ТочкаМаршрутаСсылка,
	|	ЗадачаИсполнителя.ДатаИсполнения КАК ДатаИсполнения
	|ПОМЕСТИТЬ Т2
	|ИЗ
	|	Задача.ЗадачаИсполнителя КАК ЗадачаИсполнителя
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ Т1 КАК Т1
	|		ПО ЗадачаИсполнителя.БизнесПроцесс = Т1.Ссылка
	|			И (ЗадачаИсполнителя.ТочкаМаршрута = &ТочкаМаршрута)
	|;
	|
	|////////////////////////////////////////////////////////////­////////////////////
	|ВЫБРАТЬ
	|	МАКСИМУМ(Т2.Дата) КАК Дата
	|ПОМЕСТИТЬ Т3
	|ИЗ
	|	Т2 КАК Т2
	|;
	|
	|////////////////////////////////////////////////////////////­////////////////////
	|ВЫБРАТЬ
	|	Т2.Дата КАК Дата,
	|	Т2.Исполнитель КАК Исполнитель,
	|	Т2.РольИсполнителя КАК РольИсполнителя,
	|	Т2.ТочкаМаршрута КАК ТочкаМаршрута,
	|	Т2.Описание КАК Описание,
	|	Т2.ТочкаМаршрутаПорядок КАК ТочкаМаршрутаПорядок,
	|	Т2.ТочкаМаршрутаПредставление КАК ТочкаМаршрутаПредставление,
	|	Т2.ТочкаМаршрутаСсылка КАК ТочкаМаршрутаСсылка,
	|	СведенияОПользователяхДокументооборот.Подразделение КАК Подразделение,
	|	СведенияОПользователяхДокументооборот.Должность КАК Должность,
	|	Т2.ДатаИсполнения КАК ДатаИсполнения
	|ИЗ
	|	Т2 КАК Т2
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ Т3 КАК Т3
	|		ПО Т2.Дата = Т3.Дата
	|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СведенияОПользователяхДокументооборот КАК СведенияОПользователяхДокументооборот
	|		ПО (СведенияОПользователяхДокументооборот.Пользователь = Т2.Исполнитель)";

#КонецОбласти

	ТЗ = Неопределено;
	Рез = Запрос.Выполнить();
	Если НЕ Рез.Пустой() Тогда
		ТЗ = Запрос.Выполнить().Выгрузить();
	КонецЕсли;
	
	Возврат ТЗ;
КонецФункции // ПолучитьСогласовантовПоБП()
Показать
26. awe007 30.05.19 09:39 Сейчас в теме
(21) Спасибо большое за пример! А можете пояснить новичку, если не трудно?
В ворде делаем обычный параметр, поле, как при других вставках автозаполнения.. И потом в скриптах автозаполнения выбираем это поле и для него уже вставляем скрипт автозамены? Правильно?
Т.е. вся таблица изначально формируется в 1С и потом целиком как есть вставляется в Word?
27. Оберон 17 30.05.19 10:47 Сейчас в теме
(26) тут все просто..
1. Конфигуратор:
в ДО в новый Общий Модуль (ухОбщийМодульПовтИсп) со следующими свойствами(Сервер, Вызов сервера, Повторное использование возвращаемых значений = На время сеанса ), вставляете указанную функцию, сохраняем.

2. WORD:
создаем в шаблоне ворд текстовый параметр, поле, как при других вставках автозаполнения, например "ТаблицаСогласовантов"

3. Предприятие:
в скриптах автозаполнения выбираем это поле и для него вставляем скрипт автозамены что я привел.

4. получаем на выходе таблицу согласовавших данный документ.

Профит!
meowmeow; blandinko; +2 Ответить
22. Оберон 17 29.05.19 11:29 Сейчас в теме
СКРИПТ для вставки листа согласовантов.
Функция ухОбщийМодульПовтИсп.ПолучитьСогласовантовПоБПвТЗ  расположена выше.

// Закроем открытые теги
РезультатОбработки = "</w:t></w:r></w:p>";

// Заголовок таблицы
РезультатОбработки = РезультатОбработки +"<w:tbl>
|<w:tblPr>
|<w:tblStyle w:val=""a3""/><w:tblW w:w=""5000"" w:type=""pct""/><w:tblLook w:val=""04A0"" w:firstRow=""1"" w:lastRow=""0"" w:firstColumn=""1"" w:lastColumn=""0"" w:noHBand=""0"" w:noVBand=""1""/></w:tblPr><w:tblGrid><w:gridCol w:w=""3377""/>
|<w:gridCol w:w=""1104""/><w:gridCol w:w=""2414""/>
|<w:gridCol w:w=""2450""/></w:tblGrid><w:tr w:rsidR=""00D175E1"" w:rsidRPr=""0013339A"" w:rsidTr=""00F113F1"">
|<w:trPr><w:trHeight w:val=""1349""/></w:trPr>
|<w:tc>
|<w:tcPr><w:tcW w:w=""5000"" w:type=""pct""/><w:gridSpan w:val=""4""/>
|<w:vAlign w:val=""center""/></w:tcPr><w:p w:rsidR=""00D175E1"" w:rsidRPr=""0013339A"" w:rsidRDefault=""00D175E1"" w:rsidP=""0013339A"">
|<w:pPr><w:rPr><w:rFonts w:ascii=""Montserrat Light"" w:hAnsi=""Montserrat Light""/></w:rPr></w:pPr>
|<w:r w:rsidRPr=""0013339A""><w:rPr><w:rFonts w:ascii=""Montserrat Light"" w:hAnsi=""Montserrat Light""/></w:rPr>
|<w:t>СОГЛАСОВАНО:</w:t>
|</w:r></w:p></w:tc></w:tr>
|<w:tr w:rsidR=""00D175E1"" w:rsidRPr=""0013339A"" w:rsidTr=""00F113F1""><w:trPr><w:trHeight w:val=""392""/></w:trPr>
|<w:tc><w:tcPr><w:tcW w:w=""1707"" w:type=""pct""/><w:shd w:val=""clear"" w:color=""auto"" w:fill=""D9D9D9"" w:themeFill=""background1"" w:themeFillShade=""D9""/></w:tcPr>
|<w:p w:rsidR=""00D175E1"" w:rsidRPr=""0013339A"" w:rsidRDefault=""00D175E1"" w:rsidP=""0013339A"">
|<w:pPr><w:rPr><w:rFonts w:ascii=""Montserrat Light"" w:hAnsi=""Montserrat Light""/></w:rPr></w:pPr>
|<w:r w:rsidRPr=""0013339A""><w:rPr><w:rFonts w:ascii=""Montserrat Light"" w:hAnsi=""Montserrat Light""/></w:rPr>
|<w:t>Должность/Подразделение</w:t>
|</w:r></w:p></w:tc>
|<w:tc><w:tcPr><w:tcW w:w=""624"" w:type=""pct""/><w:shd w:val=""clear"" w:color=""auto"" w:fill=""D9D9D9"" w:themeFill=""background1"" w:themeFillShade=""D9""/></w:tcPr>
|<w:p w:rsidR=""00D175E1"" w:rsidRPr=""0013339A"" w:rsidRDefault=""00D175E1"" w:rsidP=""0013339A"">
|<w:pPr><w:rPr><w:rFonts w:ascii=""Montserrat Light"" w:hAnsi=""Montserrat Light""/></w:rPr></w:pPr>
|<w:r w:rsidRPr=""0013339A""><w:rPr><w:rFonts w:ascii=""Montserrat Light"" w:hAnsi=""Montserrat Light""/></w:rPr>
|<w:t>Виза</w:t>
|</w:r></w:p></w:tc>
|<w:tc><w:tcPr><w:tcW w:w=""1325"" w:type=""pct""/><w:shd w:val=""clear"" w:color=""auto"" w:fill=""D9D9D9"" w:themeFill=""background1"" w:themeFillShade=""D9""/></w:tcPr>
|<w:p w:rsidR=""00D175E1"" w:rsidRPr=""0013339A"" w:rsidRDefault=""00D175E1"" w:rsidP=""0013339A"">
|<w:pPr><w:rPr><w:rFonts w:ascii=""Montserrat Light"" w:hAnsi=""Montserrat Light""/></w:rPr></w:pPr>
|<w:r w:rsidRPr=""0013339A""><w:rPr><w:rFonts w:ascii=""Montserrat Light"" w:hAnsi=""Montserrat Light""/></w:rPr>
|<w:t>Дата</w:t>
|</w:r></w:p></w:tc>
|<w:tc><w:tcPr><w:tcW w:w=""1345"" w:type=""pct""/><w:shd w:val=""clear"" w:color=""auto"" w:fill=""D9D9D9"" w:themeFill=""background1"" w:themeFillShade=""D9""/></w:tcPr>
|<w:p w:rsidR=""00D175E1"" w:rsidRPr=""0013339A"" w:rsidRDefault=""00D175E1"" w:rsidP=""0013339A"">
|<w:pPr><w:rPr><w:rFonts w:ascii=""Montserrat Light"" w:hAnsi=""Montserrat Light""/></w:rPr></w:pPr>
|<w:r w:rsidRPr=""0013339A""><w:rPr><w:rFonts w:ascii=""Montserrat Light"" w:hAnsi=""Montserrat Light""/></w:rPr>
|<w:t>ФИО</w:t>
|</w:r></w:p></w:tc></w:tr>";

ШаблонСтроки = "<w:tr w:rsidR=""00D175E1"" w:rsidRPr=""0013339A"" w:rsidTr=""00F113F1"">
|<w:tc>
|<w:tcPr><w:tcW w:w=""1707"" w:type=""pct""/><w:vAlign w:val=""center""/></w:tcPr>
|<w:p w:rsidR=""00D175E1"" w:rsidRPr=""0013339A"" w:rsidRDefault=""00AE5474"" w:rsidP=""0013339A"">
|<w:pPr><w:rPr><w:rFonts w:ascii=""Montserrat Light"" w:hAnsi=""Montserrat Light""/></w:rPr></w:pPr>
|<w:r><w:rPr><w:rFonts w:ascii=""Montserrat Light"" w:hAnsi=""Montserrat Light""/></w:rPr>
|<w:t>%1</w:t>
|</w:r></w:p></w:tc>
|<w:tc>
|<w:tcPr><w:tcW w:w=""624"" w:type=""pct""/><w:vAlign w:val=""center""/>
|</w:tcPr><w:p w:rsidR=""00D175E1"" w:rsidRPr=""0013339A"" w:rsidRDefault=""00AE5474"" w:rsidP=""0013339A"">
|<w:pPr><w:rPr><w:rFonts w:ascii=""Montserrat Light"" w:hAnsi=""Montserrat Light""/></w:rPr></w:pPr>
|<w:r><w:rPr><w:rFonts w:ascii=""Montserrat Light"" w:hAnsi=""Montserrat Light""/></w:rPr>
|<w:t>%2</w:t>
|</w:r></w:p></w:tc>
|<w:tc>
|<w:tcPr><w:tcW w:w=""1325"" w:type=""pct""/><w:vAlign w:val=""center""/></w:tcPr>
|<w:p w:rsidR=""00D175E1"" w:rsidRPr=""0013339A"" w:rsidRDefault=""00AE5474"" w:rsidP=""0013339A"">
|<w:pPr><w:rPr><w:rFonts w:ascii=""Montserrat Light"" w:hAnsi=""Montserrat Light""/></w:rPr></w:pPr>
|<w:r><w:rPr><w:rFonts w:ascii=""Montserrat Light"" w:hAnsi=""Montserrat Light""/></w:rPr>
|<w:t>%3</w:t>
|</w:r></w:p></w:tc>
|<w:tc>
|<w:tcPr><w:tcW w:w=""1345"" w:type=""pct""/><w:vAlign w:val=""center""/>
|</w:tcPr><w:p w:rsidR=""00D175E1"" w:rsidRPr=""0013339A"" w:rsidRDefault=""00AE5474"" w:rsidP=""0013339A"">
|<w:pPr><w:rPr><w:rFonts w:ascii=""Montserrat Light"" w:hAnsi=""Montserrat Light""/></w:rPr></w:pPr>
|<w:r><w:rPr><w:rFonts w:ascii=""Montserrat Light"" w:hAnsi=""Montserrat Light""/></w:rPr>
|<w:t>%4</w:t>
|</w:r></w:p></w:tc></w:tr>";

//  заполняем таблицу
//ТаблицаВизДокумента = РаботаСВизамиСогласования.ПолучитьВизыДокумента(Файл.ВладелецФайла.Ссылка);

ТЗ = ухОбщийМодульПовтИсп.ПолучитьСогласовантовПоБПвТЗ(Файл.ВладелецФайла.Ссылка);
Если ТЗ<>Неопределено Тогда
	Для Каждого СтрокаТЗ Из ТЗ Цикл
		СтруктураВизы = ОбщегоНазначения.СтрокаТаблицыЗначенийВСтруктуру(СтрокаТЗ);	// ТЗ[Стр]

		РезультатОбработки = РезультатОбработки + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
				ШаблонСтроки,
				СтруктураВизы.Должность+"/"+СтруктураВизы.Подразделение,
				СтруктураВизы.ТочкаМаршрута,
				Формат(СтруктураВизы.ДатаИсполнения, "ДЛФ=Д"),
				СтруктураВизы.Исполнитель);
	КонецЦикла;
КонецЕсли;
//
// Закроем таблицу
РезультатОбработки = РезультатОбработки +"</w:tbl>";

// Откроем теги, т.к. в структуре документа они закрываются сразу за вставкой.
РезультатОбработки = РезультатОбработки + "<w:p><w:r><w:t>";

// Добавим переносы строки для записи в xml без обработки
РезультатОбработки = Символы.ПС + СтрЗаменить(РезультатОбработки, Символы.ПС, "") + Символы.ПС;
Показать
Moto45; Tommy82; meowmeow; blandinko; +4 Ответить
28. awe007 30.05.19 11:43 Сейчас в теме
(22) Это просто праздник какой-то! Всё работает! День прожит не зря!
Спасибо вам от всей души!

Только ещё один маленький моментик.. таблица вставляется, но без рамок (без границ). Можно ли это победить?
29. Оберон 17 30.05.19 12:53 Сейчас в теме
(28) у меня сетка отображается - возможно у вас в шаблоне ворда стоит не отображать сетку
45. a_kaiman 16.03.21 08:30 Сейчас в теме
(22) вроде бы сделал все как написано, при проверке заполнения появляется ошибка:
{ОбщийМодуль.АвтозаполнениеШаблоновФайловСервер.Модуль(221)}:		ВызватьИсключение СтрокаОшибки;
{ОбщийМодуль.АвтозаполнениеШаблоновФайловСервер.Модуль(402)}:	МассивЗамен = ПолучитьМассивАвтозаполненийШаблона(
{ОбщийМодуль.АвтозаполнениеШаблоновФайловКлиентСервер.Модуль(1732)}:	НастройкиАвтозаполнения = 
{Справочник.ШаблоныВнутреннихДокументов.Форма.ШаблонВнутреннегоДокумента.Форма(2376)}:		РезультатЗаполненияФайла = АвтозаполнениеШаблоновФайловКлиентСервер.ЗаполнитьПоляФайлаДаннымиВладельца(
{Справочник.ВнутренниеДокументы.Форма.ФормаВыбора.Форма(127)}:		ОповеститьОВыборе(Элементы.Список.ТекущиеДанные.Ссылка);


ДО 8 КОРП, редакция 2.1 (2.1.27.1)
46. Оберон 17 16.03.21 12:39 Сейчас в теме
(45) добрый день, у меня была более старая версия.
посмотрите в отладчике что массив возвращается
{ОбщийМодуль.АвтозаполнениеШаблоновФайловСервер.Модуль(402)}: МассивЗамен = ПолучитьМассивАвтозаполненийШаблона
55. user633256_chehlyaevaal 21.04.22 01:11 Сейчас в теме
(46) Здравствуйте!
Можете, пожалуйста, более подробно описать, что необходимо сделать для устранения проблемы. У нас текущий релиз ДО - 2.1.28.14. И точно такая же ошибка возникает.
Заранее спасибо!
56. Оберон 17 22.04.22 11:43 Сейчас в теме
(55) добрый день
к сожалению нет под руками ДО с тем решением.
58. Tommy82 65 03.08.22 19:00 Сейчас в теме
Добрый день
ДО 3.0.7.28
Делаю по инструкции, но вместо таблицы получаю текст, но с заполненными параметрами
"w:tbl>
<w:tblPr>
<w:tblStyle w:val=""a3""/><w:tblW w:w=""5000"" w:type=""pct""/><w:tblLook w:val=""04A0"" w:firstRow=""1"" w:lastRow=""0"" w:firstColumn=""1"" w:lastColumn=""0"" w:noHBand=""0"" w:noVBand=""1""/></w:tblPr><w:tblGrid><w:gridCol w:w=""3377""/>
<w:gridCol w:w=""1104""/><w:gridCol w:w=""2414""/>
<w:gridCol w:w=""2450""/></w:tblGrid><w:tr w:rsidR=""00D175E1"" w:rsidRPr=""0013339A"" w:rsidTr=""00F113F1"">
<w:trPr><w:trHeight w:val=""1349""/></w:trPr>..."

куда копать?
76. bluntschi 27.04.24 07:21 Сейчас в теме
(58) добрый день. вам удалось это победить?
30. awe007 30.05.19 16:15 Сейчас в теме
И последний вопрос, если позволите :)
Как вы добыли XML-код заголовка таблицы и строки таблицы?
Я нарисовал нужную мне табличку в ворде, сохранил, разархивировал, нашёл там document.xml, но как в нём понять что относится к шапке страницы, а что к строке?
Может есть какие то хитрости, типа онлайн-генератора xml? :) Или только руками и глазами отделять тэги друг от друга?
31. Оберон 17 31.05.19 11:32 Сейчас в теме
(30) хитростей нет - открыть с помощью браузера - EDge или exploer или Chrome и т.д.

Table ( Tbl ) таблица
row ( tr ) строка таблицы
column ( tc ) колонка таблицы

<w:tbl> -- таблица начало
<w:tr> -- строка начало
<w:tc> -- колонка начало
32. blandinko 11.07.19 15:49 Сейчас в теме
(31) Добрый день!
Скажите, а с проблемой перезаполнения таблицы данными Вы не столкнулись?
Я настроила все по Вашим постам, все прекрасно работает, и радовалась до момента, когда попробовала перезаполнить файл данными документа (а это надо будет делать неоднократно).
В итоге получается то, что на скрине :(((
Таблица в таблице и т.д...

И, главное, непонятно почему. Ведь заменяться должно все - и тэги вордовские, которыми мы строим таблицу, тоже?
Прикрепленные файлы:
36. Hood 7 03.09.19 17:44 Сейчас в теме
(32)Добрый день.
Получилось победить?
37. blandinko 05.09.19 09:17 Сейчас в теме
47. Оберон 17 16.03.21 13:09 Сейчас в теме
(37) очищайте перед формированием листа при перезаполнении.
не помню уже где там место, но помню было такое - исправлял.
33. Оберон 17 12.07.19 10:36 Сейчас в теме
(32) это надо смотреть как вы табличку нарисовали, там какая то ошибка, при перезаполнении данными на корректных таблицах так не должно быть, это ошибка шаблона (тега таблицы)
в моей доработке такого не встречалось.
34. blandinko 12.07.19 14:30 Сейчас в теме
(33) Взяла целиком Ваш код скрипта и Вашу функцию.
При перезаполнении файла получается то же самое...
Прикрепленные файлы:
35. Myxa 42 02.08.19 15:58 Сейчас в теме
(34) Добрый день!

Аналогичная ситуация!
38. bpirate999 25 03.12.19 12:15 Сейчас в теме
Не работает. Только теги ворда в тесковом поле
. Почему?
39. user682069_tulipadanys 04.12.19 15:56 Сейчас в теме
(38)

// Добавим переносы строки для записи в xml без обработки
РезультатОбработки = Символы.ПС + СтрЗаменить(РезультатОбработки, Символы.ПС, "") + Символы.ПС;
53. EvgeniyNP 19.11.21 13:03 Сейчас в теме
(39)
Обработки, Символы.ПС, "") + Символы.ПС;

а почему без последних Символы.ПС не срабатывает?
40. user749358 5 26.12.19 08:11 Сейчас в теме
Спасибо! Действительно работает в версии 2.1.14.4. Главное не забыть вставить
РезультатОбработки = Символы.ПС + СтрЗаменить(РезультатОбработки, Символы.ПС, "") + Символы.ПС;
41. ademidov 27.03.20 16:07 Сейчас в теме
Коллеги а на 13 Офисе это работает? Никто не пробовал? А то я тупо кописпастом все перенес и вот:
"Имя в конечном теге элемента должно совпадать с типом элемента в начальном теге". :(
42. EvgeniyNP 18.05.20 17:12 Сейчас в теме
А где можно узнать список тэгов? меня больше всего интересуют межстрочные интервалы, а то между строками слишком большие промежутки.
Уточнение. Интервал после интересует еще больше
48. Оберон 17 16.03.21 13:45 Сейчас в теме
(42) интервал выставляется в тегах ворда, вот например НЕТ отступа

<w:pPr><w:spacing w:after="0" w:line="240" w:lineRule="auto"/></w:pPr>
Прикрепленные файлы:
EvgeniyNP; +1 Ответить
54. EvgeniyNP 19.11.21 13:12 Сейчас в теме
43. Horsy 04.03.21 12:24 Сейчас в теме
Коллеги, может, кто-нибудь решил проблему вставки дополнительного поля (когда при повторном автозаполнении таблица вставляется в таблицу)?
49. Оберон 17 16.03.21 13:48 Сейчас в теме
(43) очищайте формируемый документ перед заполнением
51. Horsy 17.03.21 18:17 Сейчас в теме
(49) А если в него вносятся правки?
Похоже, без доработок - никак
52. falco 12.05.21 13:17 Сейчас в теме
Подскажите как через XML работать с колонтитулами в WORD, например вставить картинку?
57. partizand 134 11.07.22 11:53 Сейчас в теме
Добавлю, как решить проблему повторного заполнения по шаблону.
Идея в том, что перед заполнением, заменяем исходный файл, на файл шаблона.
Из минусов, все что внесли руками пропадет.
И если открыт файл на редактирование, то замены не будет

Нужно изменить Общий модуль АвтозаполнениеШаблоновФайловСервер, функция ПолучитьНастройкиАвтозаполненияШаблоновФайлов (можно добавить расширением "Вместо" + "ПродолжитьВызов")

Функция ПолучитьНастройкиАвтозаполненияШаблоновФайлов(ФайлСсылка, Документ = Неопределено, ПолучитьДанныеОШтрихкоде = Ложь) Экспорт

ДвоичныеДанныеФайла = ПолучитьДвоичныеДанныеФайла(ФайлСсылка);
	РасширениеФайла = НРег(ФайлСсылка.ТекущаяВерсияРасширение);
	ВыполнятьЗаполнениеMSWordНаСервере = Константы.ИзменениеФайловMSWordТолькоНаСервере.Получить();
	Если ФайлНаходитсяВИерархииПапокШаблонов(ФайлСсылка) Тогда
		ОснованиеФайла = ФайлСсылка
	Иначе
		ОснованиеФайла = ФайлСсылка.ШаблонОснованиеДляСоздания;
	КонецЕсли;
		
	МассивЗамен = ПолучитьМассивАвтозаполненийШаблона(
		ФайлСсылка,
		ОснованиеФайла, 
		?(Документ = Неопределено, ФайлСсылка.ВладелецФайла, Документ));
	ОснованиеСозданияФайла = ФайлСсылка.Ссылка;
	
	ДанныеВозврата = Новый Структура;
	ДанныеВозврата.Вставить("ДвоичныеДанныеФайла", ДвоичныеДанныеФайла);
	ДанныеВозврата.Вставить("РасширениеФайла", РасширениеФайла);
	ДанныеВозврата.Вставить("ВыполнятьЗаполнениеMSWordНаСервере", ВыполнятьЗаполнениеMSWordНаСервере);
	ДанныеВозврата.Вставить("МассивЗамен", МассивЗамен);
	ДанныеВозврата.Вставить("ОснованиеСозданияФайла", ОснованиеСозданияФайла);

Если ПолучитьДанныеОШтрихкоде Тогда
		ДанныеОШтрихкоде = ШтрихкодированиеСервер.ПолучитьДанныеДляВставкиШтрихкодаВОбъект(Документ, Ложь);
		Если ДанныеОШтрихкоде <> Неопределено И ДанныеОШтрихкоде.Свойство("ДвоичныеДанныеИзображения") Тогда
			ДанныеВозврата.Вставить("ДанныеОШтрихкоде", ДанныеОШтрихкоде); 
		КонецЕсли;
	КонецЕсли;
	
	// ++ Начало вставки
	// Подменяем только если файл и шаблон различаются и в полях есть определенные имена
	НеобходимаПодмена = Ложь;
	
	Если ФайлСсылка <> ОснованиеФайла Тогда
		ИменаПолейПризнаковЗамены = "Таблица1,Таблица2";
		ПоляПризнакиЗамены = СтрРазделить(ИменаПолейПризнаковЗамены, ",");
		Для каждого ОписаниеЗамены Из МассивЗамен Цикл
			ПолеЗамены = ОписаниеЗамены.ТермДляЗамены;
			Если ПоляПризнакиЗамены.Найти(ПолеЗамены) <> Неопределено Тогда
				НеобходимаПодмена = Истина;
				Прервать;
			КонецЕсли;
		КонецЦикла;
	КонецЕсли;
	
	// Подменяем файл на шаблон
	Если НеобходимаПодмена Тогда
		ДвоичныеДанныеШаблона = ПолучитьДвоичныеДанныеФайла(ОснованиеФайла);
		ДанныеВозврата.ДвоичныеДанныеФайла = ДвоичныеДанныеШаблона;
	КонецЕсли;
	
	// -- Окончание вставки
	
	Возврат ДанныеВозврата;

КонецФункции

Показать
Moto45; Tommy82; +2 Ответить
59. Tommy82 65 04.08.22 10:44 Сейчас в теме
(57)
Добрый день
можете прокомментировать мой вопрос?
60. Tommy82 65 04.08.22 13:59 Сейчас в теме
(59)
в общем проблема в том, что < и > заменяются на < и > соответственно в document.xml

MSOW 2016 если что...

п.с.
да и здесь тоже заменяются, пишу & lt (только слитно) показывает <
61. Tommy82 65 04.08.22 18:04 Сейчас в теме
(60)
ДО 3.0.7.28
8.3.20.1674
MSOW 2016

в общем, если кто ещё столкнётся
суть в том, что в этой процедуре 1С разбивает РезультатОбработки на подстроки и получается, что значение РезультатОбработки записывается, как текст.
В нашем случае нужно 1С как-то дать понять, что РезультатОбработки нужно записать без обработки.
Для этого нужно акцентрироваться хоть на чём-то - выбрал "<w:tbl>"

наколхозил следущее

&Вместо("ЗаписатьВXMLСодержимое")
Процедура CG_ЗаписатьВXMLСодержимое(ЗаписьXML, Знач Содержимое)
	// Вставить содержимое метода.
	
	//ПродолжитьВызов(ЗаписьXML, Содержимое);
	
	Спецсимволы = Новый Соответствие;
	Спецсимволы.Вставить("<w:br/>", Символы.ПС);
	Спецсимволы.Вставить("</w:t><w:tab/><w:t>", Символы.Таб);
	
	Для Каждого Спецсимвол Из Спецсимволы Цикл
		Содержимое = СтрЗаменить(Содержимое, Спецсимвол.Значение, СтрШаблон("_###_%1_###_", Спецсимвол.Ключ));
	КонецЦикла;
	
	МассивПодстрок = СтрРазделить(Содержимое, "_###_", Ложь);
	
	Для Каждого Подстрока Из МассивПодстрок Цикл
		Если Спецсимволы[Подстрока] <> Неопределено Тогда
			ЗаписьXML.ЗаписатьБезОбработки(Подстрока);
                ИначеЕсли СтрНайти(Содержимое, "<w:tbl>") > 0 Тогда
			ЗаписьXML.ЗаписатьБезОбработки(Подстрока);
		Иначе
			ЗаписьXML.ЗаписатьТекст(Подстрока);	
		КонецЕсли;
	КонецЦикла;	
КонецПроцедуры
Показать
DFinteX; 1c-kt; Moto45; +3 Ответить
62. partizand 134 11.08.22 11:34 Сейчас в теме
(59)
Нужно добавить перенос строки в подставляемый текст. Тогда ДО подставляет его как есть. Это можно увидеть в исходниках. И в этой статье это есть в примере кода.
63. Tommy82 65 15.08.22 11:05 Сейчас в теме
(62)
// Добавим переносы строки для записи в xml без обработки
РезультатОбработки = Символы.ПС + СтрЗаменить(РезультатОбработки, Символы.ПС, "") + Символы.ПС;


эта строчка кода у меня есть - поэтому и пришлось колхозить
66. user652103_rupert4 28.03.23 16:05 Сейчас в теме
(59)
если вдруг актуально- вы перед и после иньекции забыли вставить
перед </w:t></w:r></w:p>
после <w:p><w:r><w:t>

это нужно т.к. у вас открыт тег t перед заменой и закрыт после- и все что вы вставляете вставляется текстом
69. Tommy82 65 30.05.23 17:57 Сейчас в теме
(66)

а у меня тут всё и так было уже

РезультатОбработки = "</w:t></w:r></w:p>";
РезультатОбработки = НародноеТехноГрохотТракторовСветПрожекторов();
РезультатОбработки = РезультатОбработки + "<w:p><w:r><w:t>";
75. bluntschi 26.04.24 15:07 Сейчас в теме
(69) добрый день, может быть подскажите почему вместо таблицы выходит текст скрипта ? скрипт написала тот что в

(22)
Прикрепленные файлы:
77. Tommy82 65 07.05.24 18:44 Сейчас в теме
(75) насколько помню, это всё пишется в параметрах

	РезультатОбработки	=	"";
	
	Документ = Файл.ВладелецФайла;
	
	//Документ		=	Объект.ДокументПредприятия;
	
	// Закроем открытые теги
	РезультатОбработки = "</w:t></w:r></w:p>";
	
	// Заголовок таблицы
	РезультатОбработки = РезультатОбработки +"
	|<w:tbl>
	|<w:tblPr>
	|<w:tblStyle w:val=""a7""/>
	|<w:tblW w:w=""0"" w:type=""auto""/>
	|<w:tblLook w:val=""04A0"" w:firstRow=""1"" w:lastRow=""0"" w:firstColumn=""1"" w:lastColumn=""0"" w:noHBand=""0"" w:noVBand=""1""/>
	|</w:tblPr>
	|<w:tblGrid>
	|<w:gridCol w:w=""9488""/>
	|</w:tblGrid>";
	
	ШаблонСтроки1 = "
	|<w:tr w:rsidR=""00037B6D"" w:rsidTr=""00037B6D"">
		|<w:tc>
			|<w:tcPr>
				|<w:tcBorders>
					|<w:top w:val=""single"" w:sz=""4"" w:space=""0"" w:color=""000000""/>
					|<w:left w:val=""single"" w:sz=""4"" w:space=""0"" w:color=""000000""/>
					|<w:bottom w:val=""single"" w:sz=""4"" w:space=""0"" w:color=""000000""/>
					|<w:right w:val=""single"" w:sz=""4"" w:space=""0"" w:color=""000000""/>
				|</w:tcBorders>
				|<w:tcW w:w=""9488"" w:type=""dxa""/>
			|</w:tcPr>
			|<w:p w:rsidR=""00037B6D"" w:rsidRPr=""0012746C"" w:rsidRDefault=""00037B6D"" w:rsidP=""00037B6D"">
				|<w:pPr>
					|<w:pStyle w:val=""a3""/>
					|<w:spacing w:line=""240"" w:lineRule=""auto""/>
					|<w:jc w:val=""left""/>
					|<w:rPr>
						|<w:rFonts w:asciiTheme=""minorHAnsi"" w:hAnsiTheme=""minorHAnsi"" w:cstheme=""minorHAnsi""/>
						|<w:bCs w:val=""0""/>
						|<w:iCs/>
						|<w:sz w:val=""20""/>
						|<w:szCs w:val=""20""/>
					|</w:rPr>
				|</w:pPr>
				|<w:r w:rsidRPr=""0012746C"">
					|<w:rPr>
						|<w:rFonts w:asciiTheme=""minorHAnsi"" w:hAnsiTheme=""minorHAnsi"" w:cstheme=""minorHAnsi""/>
						|<w:bCs w:val=""0""/>
						|<w:iCs/>
						|<w:sz w:val=""20""/>
						|<w:szCs w:val=""20""/>
					|</w:rPr>
					|<w:t>%1
					|</w:t>
				|</w:r>
			|</w:p>
		|</w:tc>
	|</w:tr>";
	
	ШаблонСтроки2 = "
	|<w:tr w:rsidR=""00037B6D"" w:rsidTr=""00037B6D"">
		|<w:tc>
			|<w:tcPr>
				|<w:tcBorders>
					|<w:top w:val=""single"" w:sz=""4"" w:space=""0"" w:color=""000000""/>
					|<w:left w:val=""single"" w:sz=""4"" w:space=""0"" w:color=""000000""/>
					|<w:bottom w:val=""single"" w:sz=""4"" w:space=""0"" w:color=""000000""/>
					|<w:right w:val=""single"" w:sz=""4"" w:space=""0"" w:color=""000000""/>
				|</w:tcBorders>
				|<w:tcW w:w=""9488"" w:type=""dxa""/>
			|</w:tcPr>
			|<w:p w:rsidR=""00037B6D"" w:rsidRPr=""0012746C"" w:rsidRDefault=""00037B6D"" w:rsidP=""00037B6D"">
				|<w:pPr>
					|<w:pStyle w:val=""a3""/>
					|<w:spacing w:line=""240"" w:lineRule=""auto""/>
					|<w:jc w:val=""left""/>
					|<w:rPr>
						|<w:rFonts w:asciiTheme=""minorHAnsi"" w:hAnsiTheme=""minorHAnsi"" w:cstheme=""minorHAnsi""/>
						|<w:bCs w:val=""0""/>
						|<w:iCs/>
						|<w:sz w:val=""20""/>
						|<w:szCs w:val=""20""/>
					|</w:rPr>
				|</w:pPr>
				|<w:r w:rsidRPr=""0012746C"">
					|<w:rPr>
						|<w:rFonts w:asciiTheme=""minorHAnsi"" w:hAnsiTheme=""minorHAnsi"" w:cstheme=""minorHAnsi""/>
						|<w:bCs w:val=""0""/>
						|<w:iCs/>
						|<w:sz w:val=""20""/>
						|<w:szCs w:val=""20""/>
					|</w:rPr>
					|<w:t>%1
					|</w:t>
				|</w:r>
			|</w:p>
		|</w:tc>
		|<w:tc>
			|<w:tcPr>
				|<w:tcBorders>
					|<w:top w:val=""single"" w:sz=""4"" w:space=""0"" w:color=""000000""/>
					|<w:left w:val=""single"" w:sz=""4"" w:space=""0"" w:color=""000000""/>
					|<w:bottom w:val=""single"" w:sz=""4"" w:space=""0"" w:color=""000000""/>
					|<w:right w:val=""single"" w:sz=""4"" w:space=""0"" w:color=""000000""/>
				|</w:tcBorders>
				|<w:tcW w:w=""9488"" w:type=""dxa""/>
			|</w:tcPr>
			|<w:p w:rsidR=""00037B6D"" w:rsidRPr=""0012746C"" w:rsidRDefault=""00037B6D"" w:rsidP=""00037B6D"">
				|<w:pPr>
					|<w:pStyle w:val=""a3""/>
					|<w:spacing w:line=""240"" w:lineRule=""auto""/>
					|<w:jc w:val=""left""/>
					|<w:rPr>
						|<w:rFonts w:asciiTheme=""minorHAnsi"" w:hAnsiTheme=""minorHAnsi"" w:cstheme=""minorHAnsi""/>
						|<w:bCs w:val=""0""/>
						|<w:iCs/>
						|<w:sz w:val=""20""/>
						|<w:szCs w:val=""20""/>
					|</w:rPr>
				|</w:pPr>
				|<w:r w:rsidRPr=""0012746C"">
					|<w:rPr>
						|<w:rFonts w:asciiTheme=""minorHAnsi"" w:hAnsiTheme=""minorHAnsi"" w:cstheme=""minorHAnsi""/>
						|<w:bCs w:val=""0""/>
						|<w:iCs/>
						|<w:sz w:val=""20""/>
						|<w:szCs w:val=""20""/>
					|</w:rPr>
					|<w:t>%2
					|</w:t>
				|</w:r>
			|</w:p>
		|</w:tc>
	|</w:tr>";
	
	ШаблонСтроки3 = "
	|<w:tr w:rsidR=""00037B6D"" w:rsidTr=""00037B6D"">
		|<w:tc>
			|<w:tcPr>
				|<w:tcBorders>
					|<w:top w:val=""single"" w:sz=""4"" w:space=""0"" w:color=""000000""/>
					|<w:left w:val=""single"" w:sz=""4"" w:space=""0"" w:color=""000000""/>
					|<w:bottom w:val=""single"" w:sz=""4"" w:space=""0"" w:color=""000000""/>
					|<w:right w:val=""single"" w:sz=""4"" w:space=""0"" w:color=""000000""/>
				|</w:tcBorders>
				|<w:tcW w:w=""9488"" w:type=""dxa""/>
			|</w:tcPr>
			|<w:p w:rsidR=""00037B6D"" w:rsidRPr=""0012746C"" w:rsidRDefault=""00037B6D"" w:rsidP=""00037B6D"">
				|<w:pPr>
					|<w:pStyle w:val=""a3""/>
					|<w:spacing w:line=""240"" w:lineRule=""auto""/>
					|<w:jc w:val=""left""/>
					|<w:rPr>
						|<w:rFonts w:asciiTheme=""minorHAnsi"" w:hAnsiTheme=""minorHAnsi"" w:cstheme=""minorHAnsi""/>
						|<w:bCs w:val=""0""/>
						|<w:iCs/>
						|<w:sz w:val=""20""/>
						|<w:szCs w:val=""20""/>
					|</w:rPr>
				|</w:pPr>
				|<w:r w:rsidRPr=""0012746C"">
					|<w:rPr>
						|<w:rFonts w:asciiTheme=""minorHAnsi"" w:hAnsiTheme=""minorHAnsi"" w:cstheme=""minorHAnsi""/>
						|<w:bCs w:val=""0""/>
						|<w:iCs/>
						|<w:sz w:val=""20""/>
						|<w:szCs w:val=""20""/>
					|</w:rPr>
					|<w:t>%1
					|</w:t>
				|</w:r>
			|</w:p>
		|</w:tc>
		|<w:tc>
			|<w:tcPr>
				|<w:tcBorders>
					|<w:top w:val=""single"" w:sz=""4"" w:space=""0"" w:color=""000000""/>
					|<w:left w:val=""single"" w:sz=""4"" w:space=""0"" w:color=""000000""/>
					|<w:bottom w:val=""single"" w:sz=""4"" w:space=""0"" w:color=""000000""/>
					|<w:right w:val=""single"" w:sz=""4"" w:space=""0"" w:color=""000000""/>
				|</w:tcBorders>
				|<w:tcW w:w=""9488"" w:type=""dxa""/>
			|</w:tcPr>
			|<w:p w:rsidR=""00037B6D"" w:rsidRPr=""0012746C"" w:rsidRDefault=""00037B6D"" w:rsidP=""00037B6D"">
				|<w:pPr>
					|<w:pStyle w:val=""a3""/>
					|<w:spacing w:line=""240"" w:lineRule=""auto""/>
					|<w:jc w:val=""left""/>
					|<w:rPr>
						|<w:rFonts w:asciiTheme=""minorHAnsi"" w:hAnsiTheme=""minorHAnsi"" w:cstheme=""minorHAnsi""/>
						|<w:bCs w:val=""0""/>
						|<w:iCs/>
						|<w:sz w:val=""20""/>
						|<w:szCs w:val=""20""/>
					|</w:rPr>
				|</w:pPr>
				|<w:r w:rsidRPr=""0012746C"">
					|<w:rPr>
						|<w:rFonts w:asciiTheme=""minorHAnsi"" w:hAnsiTheme=""minorHAnsi"" w:cstheme=""minorHAnsi""/>
						|<w:bCs w:val=""0""/>
						|<w:iCs/>
						|<w:sz w:val=""20""/>
						|<w:szCs w:val=""20""/>
					|</w:rPr>
					|<w:t>%2
					|</w:t>
				|</w:r>
			|</w:p>
		|</w:tc>
		|<w:tc>
			|<w:tcPr>
				|<w:tcBorders>
					|<w:top w:val=""single"" w:sz=""4"" w:space=""0"" w:color=""000000""/>
					|<w:left w:val=""single"" w:sz=""4"" w:space=""0"" w:color=""000000""/>
					|<w:bottom w:val=""single"" w:sz=""4"" w:space=""0"" w:color=""000000""/>
					|<w:right w:val=""single"" w:sz=""4"" w:space=""0"" w:color=""000000""/>
				|</w:tcBorders>
				|<w:tcW w:w=""9488"" w:type=""dxa""/>
			|</w:tcPr>
			|<w:p w:rsidR=""00037B6D"" w:rsidRPr=""0012746C"" w:rsidRDefault=""00037B6D"" w:rsidP=""00037B6D"">
				|<w:pPr>
					|<w:pStyle w:val=""a3""/>
					|<w:spacing w:line=""240"" w:lineRule=""auto""/>
					|<w:jc w:val=""left""/>
					|<w:rPr>
						|<w:rFonts w:asciiTheme=""minorHAnsi"" w:hAnsiTheme=""minorHAnsi"" w:cstheme=""minorHAnsi""/>
						|<w:bCs w:val=""0""/>
						|<w:iCs/>
						|<w:sz w:val=""20""/>
						|<w:szCs w:val=""20""/>
					|</w:rPr>
				|</w:pPr>
				|<w:r w:rsidRPr=""0012746C"">
					|<w:rPr>
						|<w:rFonts w:asciiTheme=""minorHAnsi"" w:hAnsiTheme=""minorHAnsi"" w:cstheme=""minorHAnsi""/>
						|<w:bCs w:val=""0""/>
						|<w:iCs/>
						|<w:sz w:val=""20""/>
						|<w:szCs w:val=""20""/>
					|</w:rPr>
					|<w:t>%3
					|</w:t>
				|</w:r>
			|</w:p>
		|</w:tc>
	|</w:tr>";
	
	ШаблонСтроки4 = "
	|<w:tr w:rsidR=""00037B6D"" w:rsidTr=""00037B6D"">
		|<w:tc>
			|<w:tcPr>
				|<w:tcBorders>
					|<w:top w:val=""single"" w:sz=""4"" w:space=""0"" w:color=""000000""/>
					|<w:left w:val=""single"" w:sz=""4"" w:space=""0"" w:color=""000000""/>
					|<w:bottom w:val=""single"" w:sz=""4"" w:space=""0"" w:color=""000000""/>
					|<w:right w:val=""single"" w:sz=""4"" w:space=""0"" w:color=""000000""/>
				|</w:tcBorders>
				|<w:tcW w:w=""9488"" w:type=""dxa""/>
			|</w:tcPr>
			|<w:p w:rsidR=""00037B6D"" w:rsidRPr=""0012746C"" w:rsidRDefault=""00037B6D"" w:rsidP=""00037B6D"">
				|<w:pPr>
					|<w:pStyle w:val=""a3""/>
					|<w:spacing w:line=""240"" w:lineRule=""auto""/>
					|<w:jc w:val=""left""/>
					|<w:rPr>
						|<w:rFonts w:asciiTheme=""minorHAnsi"" w:hAnsiTheme=""minorHAnsi"" w:cstheme=""minorHAnsi""/>
						|<w:bCs w:val=""0""/>
						|<w:iCs/>
						|<w:sz w:val=""20""/>
						|<w:szCs w:val=""20""/>
					|</w:rPr>
				|</w:pPr>
				|<w:r w:rsidRPr=""0012746C"">
					|<w:rPr>
						|<w:rFonts w:asciiTheme=""minorHAnsi"" w:hAnsiTheme=""minorHAnsi"" w:cstheme=""minorHAnsi""/>
						|<w:bCs w:val=""0""/>
						|<w:iCs/>
						|<w:sz w:val=""20""/>
						|<w:szCs w:val=""20""/>
					|</w:rPr>
					|<w:t>%1
					|</w:t>
				|</w:r>
			|</w:p>
		|</w:tc>
		|<w:tc>
			|<w:tcPr>
				|<w:tcBorders>
					|<w:top w:val=""single"" w:sz=""4"" w:space=""0"" w:color=""000000""/>
					|<w:left w:val=""single"" w:sz=""4"" w:space=""0"" w:color=""000000""/>
					|<w:bottom w:val=""single"" w:sz=""4"" w:space=""0"" w:color=""000000""/>
					|<w:right w:val=""single"" w:sz=""4"" w:space=""0"" w:color=""000000""/>
				|</w:tcBorders>
				|<w:tcW w:w=""9488"" w:type=""dxa""/>
			|</w:tcPr>
			|<w:p w:rsidR=""00037B6D"" w:rsidRPr=""0012746C"" w:rsidRDefault=""00037B6D"" w:rsidP=""00037B6D"">
				|<w:pPr>
					|<w:pStyle w:val=""a3""/>
					|<w:spacing w:line=""240"" w:lineRule=""auto""/>
					|<w:jc w:val=""left""/>
					|<w:rPr>
						|<w:rFonts w:asciiTheme=""minorHAnsi"" w:hAnsiTheme=""minorHAnsi"" w:cstheme=""minorHAnsi""/>
						|<w:bCs w:val=""0""/>
						|<w:iCs/>
						|<w:sz w:val=""20""/>
						|<w:szCs w:val=""20""/>
					|</w:rPr>
				|</w:pPr>
				|<w:r w:rsidRPr=""0012746C"">
					|<w:rPr>
						|<w:rFonts w:asciiTheme=""minorHAnsi"" w:hAnsiTheme=""minorHAnsi"" w:cstheme=""minorHAnsi""/>
						|<w:bCs w:val=""0""/>
						|<w:iCs/>
						|<w:sz w:val=""20""/>
						|<w:szCs w:val=""20""/>
					|</w:rPr>
					|<w:t>%2
					|</w:t>
				|</w:r>
			|</w:p>
		|</w:tc>
		|<w:tc>
			|<w:tcPr>
				|<w:tcBorders>
					|<w:top w:val=""single"" w:sz=""4"" w:space=""0"" w:color=""000000""/>
					|<w:left w:val=""single"" w:sz=""4"" w:space=""0"" w:color=""000000""/>
					|<w:bottom w:val=""single"" w:sz=""4"" w:space=""0"" w:color=""000000""/>
					|<w:right w:val=""single"" w:sz=""4"" w:space=""0"" w:color=""000000""/>
				|</w:tcBorders>
				|<w:tcW w:w=""9488"" w:type=""dxa""/>
			|</w:tcPr>
			|<w:p w:rsidR=""00037B6D"" w:rsidRPr=""0012746C"" w:rsidRDefault=""00037B6D"" w:rsidP=""00037B6D"">
				|<w:pPr>
					|<w:pStyle w:val=""a3""/>
					|<w:spacing w:line=""240"" w:lineRule=""auto""/>
					|<w:jc w:val=""left""/>
					|<w:rPr>
						|<w:rFonts w:asciiTheme=""minorHAnsi"" w:hAnsiTheme=""minorHAnsi"" w:cstheme=""minorHAnsi""/>
						|<w:bCs w:val=""0""/>
						|<w:iCs/>
						|<w:sz w:val=""20""/>
						|<w:szCs w:val=""20""/>
					|</w:rPr>
				|</w:pPr>
				|<w:r w:rsidRPr=""0012746C"">
					|<w:rPr>
						|<w:rFonts w:asciiTheme=""minorHAnsi"" w:hAnsiTheme=""minorHAnsi"" w:cstheme=""minorHAnsi""/>
						|<w:bCs w:val=""0""/>
						|<w:iCs/>
						|<w:sz w:val=""20""/>
						|<w:szCs w:val=""20""/>
					|</w:rPr>
					|<w:t>%3
					|</w:t>
				|</w:r>
			|</w:p>
		|</w:tc>
		|<w:tc>
			|<w:tcPr>
				|<w:tcBorders>
					|<w:top w:val=""single"" w:sz=""4"" w:space=""0"" w:color=""000000""/>
					|<w:left w:val=""single"" w:sz=""4"" w:space=""0"" w:color=""000000""/>
					|<w:bottom w:val=""single"" w:sz=""4"" w:space=""0"" w:color=""000000""/>
					|<w:right w:val=""single"" w:sz=""4"" w:space=""0"" w:color=""000000""/>
				|</w:tcBorders>
				|<w:tcW w:w=""9488"" w:type=""dxa""/>
			|</w:tcPr>
			|<w:p w:rsidR=""00037B6D"" w:rsidRPr=""0012746C"" w:rsidRDefault=""00037B6D"" w:rsidP=""00037B6D"">
				|<w:pPr>
					|<w:pStyle w:val=""a3""/>
					|<w:spacing w:line=""240"" w:lineRule=""auto""/>
					|<w:jc w:val=""left""/>
					|<w:rPr>
						|<w:rFonts w:asciiTheme=""minorHAnsi"" w:hAnsiTheme=""minorHAnsi"" w:cstheme=""minorHAnsi""/>
						|<w:bCs w:val=""0""/>
						|<w:iCs/>
						|<w:sz w:val=""20""/>
						|<w:szCs w:val=""20""/>
					|</w:rPr>
				|</w:pPr>
				|<w:r w:rsidRPr=""0012746C"">
					|<w:rPr>
						|<w:rFonts w:asciiTheme=""minorHAnsi"" w:hAnsiTheme=""minorHAnsi"" w:cstheme=""minorHAnsi""/>
						|<w:bCs w:val=""0""/>
						|<w:iCs/>
						|<w:sz w:val=""20""/>
						|<w:szCs w:val=""20""/>
					|</w:rPr>
					|<w:t>%4
					|</w:t>
				|</w:r>
			|</w:p>
		|</w:tc>
	|</w:tr>";
	
       //dima (20230530 ап переделал на нормальный код
	тзВсеСостоянияДокумента	=	Делопроизводство.ПолучитьВсеСостоянияДокумента(Документ);
	
	мКорочеМассив	=	Новый Массив;
	
	Для Каждого СостояниеДокумента ИЗ тзВсеСостоянияДокумента Цикл
		Если СостояниеДокумента.Состояние	<>	Перечисления.СостоянияДокументов.Проект Тогда
			мКорочеМассив.Добавить(Строка(СостояниеДокумента.Состояние) + "<w:br/>" + СостояниеДокумента.Установил.ПредставлениеВДокументах + "<w:br/>" + СостояниеДокумента.ДатаУстановки);
		КонецЕсли;
	КонецЦикла;
      //dima )
      
       //dima (20230530 ап закомментировал колхоз
	// Получить все действия утверждения и их участников
	//ВсеДействия			=	ДействияСервер.ТекущиеДействияПредмета(Документ, , ТекущаяДатаСеанса()).Выгрузить();
	//ДействияУтверждения	=	Новый Массив;
	//МассивДействий		=	ВсеДействия.ВыгрузитьКолонку("Действие");
	//ВидыДействий		=	ОбщегоНазначения.ЗначенияРеквизитовОбъектов(МассивДействий, "ВидДействия");
	//МассивВидовДействий	=	Новый Массив;
	//
	//Для Каждого Вид Из ВидыДействий Цикл
	//	МассивВидовДействий.Добавить(Вид.Значение.ВидДействия);
	//КонецЦикла;
	//ТипыДействий = ОбщегоНазначения.ЗначенияРеквизитовОбъектов(МассивВидовДействий, "Тип");
	//
	//// Проверить результаты выполнения этих действий
	//Для Каждого Действие Из МассивДействий Цикл
	//	
	//	ДействияУтверждения.Добавить(Действие);
	//	
	//КонецЦикла;
	//
	//мКорочеМассив	=	Новый Массив;
	//
	//Для Каждого Действие Из ДействияУтверждения Цикл
	//	
	//	СтруктураОтбора							=	Новый Структура("Действие, Функция, ИдентификаторУчастника, ИдентификаторПункта", Действие);
	//	СтруктураОтбора.Функция					=	Неопределено;
	//	СтруктураОтбора.ИдентификаторУчастника	=	Неопределено;
	//	СтруктураОтбора.ИдентификаторПункта		=	ОбщегоНазначенияКлиентСервер.ПустойУникальныйИдентификатор();
	//	
	//	мДействий	=	Новый Массив;
	//	мДействий.Добавить(Действие);
	//	
	//	ВсеСостоянияИРезультаты	=	ДействияСервер.ВсеСостоянияИРезультаты(мДействий);
	//	
	//	НайденныеСтроки = ВсеСостоянияИРезультаты.НайтиСтроки(СтруктураОтбора);
	//	
	//	ДатаУстановкиСостояния	=	Дата(1,1,1);
	//	Если НайденныеСтроки.Количество() > 0 Тогда
	//		НайденнаяСтрока = НайденныеСтроки[0];
	//		ДатаУстановкиСостояния	=	Формат(НайденнаяСтрока.Дата,	"ДЛФ=DT");
	//	Иначе
	//		ДатаУстановкиСостояния	=	Формат(ДатаУстановкиСостояния,	"ДЛФ=DT");
	//	КонецЕсли;
	//	
	//	// Получить подписантов и проверить кто из них подписал и кто нет				
	//	Участники = ДействияСервер.УчастникиДействия(Действие);
	//	СведенияОбУчастниках = РегистрыСведений.СведенияОбУчастникахДействий.ПолучитьСведенияОбУчастникахДействия(Действие);
	//	
	//	Для Каждого Участник Из Участники Цикл
	//		
	//		мКорочеМассив.Добавить(Строка(Действие.ВидДействия.Тип) + "<w:br/>" + Участник.Участник.ПредставлениеВДокументах + "<w:br/>" + ДатаУстановкиСостояния);
	//		
	//	КонецЦикла;
	//	
	//КонецЦикла;
      //dima )
	
	КоличествоЯчеек	=	мКорочеМассив.Количество();
	
	м	=	Новый Массив;
	
	Для Сч = 1 По КоличествоЯчеек Цикл
		
		м.Добавить(мКорочеМассив[сч-1]);
		
		Если Сч > 0 и Сч % 4 = 0 Тогда
			РезультатОбработки = РезультатОбработки + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонСтроки4,
																												м.Получить(0),
																												м.Получить(1),
																												м.Получить(2),
																												м.Получить(3));
			м.Очистить();
		КонецЕсли;
		
	КонецЦикла;
	
	Если м.Количество() = 1 Тогда
			РезультатОбработки = РезультатОбработки + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонСтроки1,
																												м.Получить(0));
	ИначеЕсли м.Количество() = 2 Тогда
			РезультатОбработки = РезультатОбработки + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонСтроки2,
																												м.Получить(0),
																												м.Получить(1));
			
	ИначеЕсли м.Количество() = 3 Тогда
			РезультатОбработки = РезультатОбработки + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонСтроки3,
																												м.Получить(0),
																												м.Получить(1),
																												м.Получить(2));
	КонецЕсли;

	РезультатОбработки = РезультатОбработки +"</w:tbl>";
	
	// Откроем теги, т.к. в структуре документа они закрываются сразу за вставкой.
	РезультатОбработки = РезультатОбработки + "<w:p><w:r><w:t>";
	
	// Добавим переносы строки для записи в xml без обработки
	РезультатОбработки = Символы.ПС + СтрЗаменить(РезультатОбработки, Символы.ПС, "") + Символы.ПС;	
Показать
64. Tommy82 65 18.08.22 12:01 Сейчас в теме
(57)

"Нужно изменить Общий модуль АвтозаполнениеШаблоновФайловСервер, функция ПолучитьНастройкиАвтозаполненияШаблоновФайлов (можно добавить расширением "Вместо" + "ПродолжитьВызов")"

в ДО30 3.0.7.31

ОбщийМодуль.АвтозаполнениеШаблоновФайловВызовСервера -> Функция.ПолучитьНастройкиАвтозаполненияШаблоновФайлов

"ИменаПолейПризнаковЗамены = "Таблица1,Таблица2";"

где "Таблица1, Таблица2" - это наш скрипт сгенерированной таблицы

т.е.
"ИменаПолейПризнаковЗамены = "имя_нашего_скрипта_таблицы"
65. zilot123 27.10.22 19:50 Сейчас в теме
Есть какие-нибудь вариант победить проблему с перезаполнением? Может можно очистить только ранее нарисованную таблицу? предложение заменять файл на шаблон не походит, т.к. теряются правки пользователя.
67. user652103_rupert4 04.04.23 09:51 Сейчас в теме
(65) есть, но с правкой уже.
#Вставка
//проверяем а не таблица ли это и не надо ли эту таблицу удалить. 
Если ЧтениеXML.Имя = "w:tbl" и ЧтениеXML.КоличествоАтрибутов() > 0 Тогда
	DelReplase = ложь;
	Пока ЧтениеXML.ПрочитатьАтрибут() Цикл
		Если ЧтениеXML.Имя = "w:DelReplase" и ЧтениеXML.Значение ="begin" тогда
			// вырезаем всю таблицу
			DelReplase = истина;
		КонецЕсли;
	КонецЦикла;
	Если DelReplase Тогда 
		Пока DelReplase цикл
			Если ЧтениеXML.ТипУзла = ТипУзлаXML.КонецЭлемента  и ЧтениеXML.Имя = "w:tbl" Тогда 
				DelReplase = ложь;
			КонецЕсли;
			ЧтениеXML.Прочитать();
		КонецЦикла;
	КонецЕсли;
			//ЧтениеXML.Прочитать();
КонецЕсли;
#КонецВставки
Показать


плюс при формировании таблицы перед требуется не такая конструкция
</w:t></w:r></w:p>
а такая
Синоним заменяемой переменной</w:t></w:r></w:p><w:tbl w:DelReplase=""begin"">
70. Tommy82 65 30.05.23 18:15 Сейчас в теме
(67)
w:tbl


подскажите, пожалуйста, это в каком месте нужна вставка?

ВыполнитьЗаменуПолейИСтрокВДокументеMSOfficeOpenXML?
71. user652103_rupert4 13.06.23 13:15 Сейчас в теме
(70)
Да, в этой процедуре я вставлял.
Сразу после чтения

	Пока ЧтениеXML.Прочитать() Цикл                             
#Вставка
//проверяем а не таблица ли это и не надо ли эту таблицу удалить. 
Если ЧтениеXML.Имя = "w:tbl" и ЧтениеXML.КоличествоАтрибутов() > 0 Тогда
	DelReplase = ложь;
68. Tommy82 65 17.05.23 18:07 Сейчас в теме
(66)
конечно, спасибо, вернулся к задаче, буду переделывать
72. user1640706 13.01.24 17:24 Сейчас в теме
(68)Подскажите, у вас получилось перевыполнение победить?
По примеру кода выше
#Вставка
//проверяем а не таблица ли это и не надо ли эту таблицу удалить. 
Если ЧтениеXML.Имя = "w:tbl" и ЧтениеXML.КоличествоАтрибутов() > 0 Тогда
    DelReplase = ложь;
    Пока ЧтениеXML.ПрочитатьАтрибут() Цикл
        Если ЧтениеXML.Имя = "w:DelReplase" и ЧтениеXML.Значение ="begin" тогда
            // вырезаем всю таблицу
            DelReplase = истина;
        КонецЕсли;
    КонецЦикла;
    Если DelReplase Тогда 
        Пока DelReplase цикл
            Если ЧтениеXML.ТипУзла = ТипУзлаXML.КонецЭлемента  и ЧтениеXML.Имя = "w:tbl" Тогда 
                DelReplase = ложь;
            КонецЕсли;
            ЧтениеXML.Прочитать();
        КонецЦикла;
    КонецЕсли;
            //ЧтениеXML.Прочитать();
КонецЕсли;
#КонецВставки
Показать

Не отрабатывает перезаполнение, да и по примеру кода я так понимаю, пропускается таблица с параметром w:DelReplase=""begin"", и на его месте остается текст синонима заменяемой таблицы и при заполнении этого синонима он же остается выше вставленной таблицы?
Поведайте пожалуйста если у вас получилось
73. пользователь 29.01.24 14:52
Сообщение было скрыто модератором.
...
74. Tommy82 65 29.01.24 14:53 Сейчас в теме
(72)
Добрый день
если честно - руки так и не дошли
Оставьте свое сообщение