Было принято решение создавать перекрестные ссылки на закладки, но данные по этим ссылкам по умолчанию обновляются только при печати документа. Для обновления данных по ссылкам нужно создать макрос в ворде, который при открытии документа будет автоматически обновлять поля ссылочного типа.
Сначала нужно добавить вкладку "Разработчик" на ленту. На вкладке "Файл" выберите "Параметры" — > "Настроить ленту". В разделе "Настройка ленты" в списке "Основные вкладки" установите флажок "Разработчик":
Затем нужно создать макрос. Для этого перейдите на вкладку "Разработчик" — > "Макросы". В открывшемся окне введите имя макроса и нажмите кнопку "Создать":
Имя макроса должно равняться значению "Autoopen", при таком значении данный макрос будет всегда запускаться при открытии документа.
В открывшемся окне вставьте код макроса и сохраните его:
Код макроса:
Sub Autoopen()
Dim aStory As Range
Dim aField As Field
For Each aStory In ActiveDocument.StoryRanges
For Each aField In aStory.Fields
If aField.Type = 3 Then
aField.Update
End If
Next aField
Next aStory
End Sub
Теперь можно создавать 1 закладку и если данные из этого поля нужны в других местах, тогда можно просто создать перекрестную ссылку на эту закладку и не дублировать данные в правилах автозаполнения шаблона файла (официальная документация по созданию перекрестных ссылок в ворде).
Спасибо за интересный прием. Но это далеко не панацея. Как быть, если политикой безопасности запрещено использование макросов?
Как вариант, можно прописать тот же самый код из макроса в 1С через com объект в процедуре заполнения файла.
Для ворда формата 2007+ это общий модуль «АвтозаполнениеШаблоновФайловКлиентСервер», процедура «ЗаполнитьФайлMSWordВXML».
Код 1С:
Показать