Содержание:
1. Для чего нужна работа в 1С 8.3 с Word?
2. Как работать программно с документами MS WORD (расширениями .doc и .docx)?
3. Заполнение в 1С 8 таблицы Word
1. Для чего нужна работа в 1С 8.3 с Word?
В этой статье обсудим, как в 1С можно работать с форматом текста Word: создание, редактирование, копирование документов MS Word. Самый распространенный вариант использования программного заполнения документов MS Word – это заполнение шаблонов в ворде. То есть после создания шаблона word, пользователь помечает параметры квадратными скобками [] (это наиболее частый вариант экранирования параметров) или знаками больше меньше <>, после чего при нажатии кнопки «Печать Word» или «Сохранить Word» открывается заполненный документ MS Word. Большинству шаблонов, конечно, подойдут и табличные документы, но лично мною было создано множество шаблонов, которые требовали форматирования текстового документа именно в MS Word (чаще из-за удобства редактирования шаблона MS Word для пользователя). Это были договора, сертификаты, письма и различные заявления. Все они сохранялись в формат текста Word и в дальнейшем отправлялись по почте или уходили на печать.
2. Как работать программно с документами MS WORD (расширениями .doc и .docx)?
В дополнение к вступлению скажу, что хранение самих шаблонов MS Word мы в данной статье рассматривать не будем. Лично я использовал и справочники и регистры сведений (хранение в реквизите с типом ХранилищеЗначения), макеты с типом двоичные данные, аналог хранения файлов в базе данных. И были случаи использования указанного пути к каталогу с шаблонами, наподобие хранения файлов в томах на диске. Выбор за вами. В статье мы рассмотрим конкретно программный принцип работы с MS Word.
Рис. 1 Пример оформления документа word, который будет использован как шаблон
Получаем шаблон Word, например, из макета и сохраняем его во временный файл Word.
Рис. 2 Сохранение временного файла Word
Создаем Com-объект и сам документ Word, передавая в метод Add путь к ранее сохраненному шаблону.
Рис. 3 Программное создание COM-объекта и документа Word
Для заполнения параметров я использую структуру (или соответствие), ключ и значение. Имя ключа – это параметр замены, а значение – то, на которое меняем экранированный параметр.
В итоге параметры заполнения (структуру) мы размещаем где удобно, получаем ее и заполняем уже созданный документ MS Word.
Рис. 4 Определение параметров заполнения
С методом Find. Execute (Word) лучше всего ознакомится отдельно на официальном сайте Microsoft. Там же можно посмотреть описание и других методов, которые могут пригодится.
После замены разворачиваем окно и делаем его активным (то есть показываем пользователю заполненный шаблон MS word).
Рис. 5 Активация окна Word
И это – весь процесс заполнения шаблона 1С Word! Да, это так просто! Однако на моей практике встречались случаи, когда в шаблоне необходимо было заполнить табличную часть, например, приложение к договору со спецификацией. Здесь необходим отдельный блок кода и особенный шаблон.
3. Заполнение таблиц в программе Word
В шаблоне создаем одну строку с нужным форматированием. Получаем таблицу или выборку со значениями строк для заполнения их в документе MS Word. Заполнение таблицы в программе Word происходит по номеру строки и колонки, то есть мы точно должны знать нумерацию колонок (но можно подумать и о другом заполнении). Итак, получаем таблицу word по номеру и заполняем значениями.
Рис. 6 Заполнение таблицы в Word
В итоге скажу, что работа с Microsoft Word может быть на очень высоком уровне, но для этого необходимо изучить документацию от Microsoft по Word. И тогда в ворде из 1С можно будет творить настоящие чудеса (как собственно и в Excel)!
Специалист компании «Кодерлайн»
Вадим Хоменко
(Здесь действие происходит в модуле формы)
&НаСервере
Функция ЗаполнитьМакетНаСервере()
ОбработкаОб = РеквизитФормыВЗначение("Объект");
АктивныйДокумент = ОбработкаОб.ПолучитьМакет("МакетДоговораActiveDocument"); //ОболочкаActiveDocument
КомОбъект = АктивныйДокумент.Получить(); //метод работает на сервере
////////////ПЕРВЫЙ ВАРИАНТ ЗАПОЛНЕНИЯ ПАРАМЕТРОВ////////////
//инициализируем переменные, чтобы если какие-то из них окажутся незаполненными, то не отображалась текстовая ошибка в документе
КомОбъект.Variables("ДатаПриема").Value = " ";
КомОбъект.Variables("Организация").Value = " ";
КомОбъект.Variables("ЮрАдрес").Value = " ";
КомОбъект.Variables("Должность").Value = " ";
КомОбъект.Variables("ИНН_КПП_ОГРН").Value = " ";
КомОбъект.Variables("Адрес").Value = " ";
КомОбъект.Variables("ФИОСотрудника").Value = " ";
//заполнение переменных реальными значениями
КомОбъект.Variables("ДатаПриема").Value = "22 сентября 2017г";
КомОбъект.Variables("Организация").Value = "Миросса";
КомОбъект.Variables("ЮрАдрес").Value = "Санкт Петербург, Невский пр, д. 102";
КомОбъект.Variables("Должность").Value = "Генеральный директор";
КомОбъект.Variables("Адрес").Value = "Санкт Петербург, Невский пр, д. 102";
КомОбъект.Variables("ФИОСотрудника").Value = "Сергей Петрович";
//Книга.ActiveWindow.Visible = Истина; //?
//Книга.Activate(); //?
КомОбъект.Fields.Update();
////////////ВТОРОЙ ВАРИАНТ ЗАПОЛНЕНИЯ ПАРАМЕТРОВ////////////
Replace = КомОбъект.Content.Find;
FindText = "<<ФиоСокр>>"; // что искать - имя_шаблона
MatchCase = Ложь; // использовать регулярные выражения
MatchWholeWord = Истина; // искать слово целиком
MatchWildcards = Ложь; // испоьзовать регулярные выражения
MatchSoundsLike = Неопределено; // искать созвучные
MatchAllWordForms = Неопределено; // искать все формы слова
Forward = Истина; // искать вперед
Wrap = Неопределено; // что должен вернуть Find-объект
Format_ = Ложь; // использовать форматирование
ReplaceWith = "С.П."; // текст, на который надо заменить имя_шаблона
//Replace.Execute(FindText,Ложь,Истина,Ложь,,,Истина,,Ложь,ReplaceWith );
Replace.Execute(
FindText,
MatchCase,
MatchWholeWord,
MatchWildcards,
MatchSoundsLike,
MatchAllWordForms,
Forward,
Wrap,
Format_,
ReplaceWith );
Replace = КомОбъект.Content.Find; //перед каждым вызовом Execute()
Replace.Execute(
"<<ИНН_КПП_ОГРН>>",
MatchCase,
MatchWholeWord,
MatchWildcards,
MatchSoundsLike,
MatchAllWordForms,
Forward,
Wrap,
Format_,
"7802022" );
имяФ = ПолучитьИмяВременногоФайла("doc");
КомОбъект.SaveAS(имяФ); //здесь возможна ошибка (http://infostart.me/public/568913/)
Двоичные = новый ДвоичныеДанные(имяФ);
//в web клиенте Двоичные.Записать() не работает, поэтому
//Адрес = новый ХранилищеЗначения(Двоичные);
//возврат Адрес;
//а затем на клиенте:
//ПолучитьФайл(Адрес, "ИмяФайла.doc", Истина); //файл скачивается в браузере
КомОбъект.Application.Quit(); //закрыть Word
КомОбъект = 0;
Возврат Двоичные;
КонецФункции
&НаКлиенте
Процедура ЗапускПриложения(КодВозврата, ДополнительныйПараметр) Экспорт
КонецПроцедуры
&НаКлиенте
Процедура Печать(Команда)
//Попытка
// Ворд = Новый COMОбъект("Word.Application");
//Исключение
// Сообщить("Установи Word..");
// Возврат;
//КонецПопытки;
Двоичные = ЗаполнитьМакетНаСервере();
имяФ = ПолучитьИмяВременногоФайла("doc"); //в web клиенте не работает
Двоичные.Записать(имяФ); //в web клиенте не работает
//ЗапуститьПриложение(имяФ); //error Использование синхронных методов на клиенте запрещено!
Оповещение = Новый ОписаниеОповещения("ЗапускПриложения", ЭтотОбъект);
НачатьЗапускПриложения(Оповещение, имяФ,, Ложь); //ложь - не дожидаемся завершения приложения (в процедуру ЗапускПриложения всё равно заходим, сразу же
КонецПроцедуры
Пример использования ActiveDocument _Word.
Как создать поля-параметры в Word
1 Выбираем участок(кусок текста) для параметра, например: «Организация»(на первой картинке она уже скрыта) , а можно удалить его и спозиционироваться на этом месте.
2 В меню Word, переходим на «Вставка», далее «Экспресс-блоки», далее «Поле»
3 В открывшемся диалоговом окне, выбираем тип «DocVariable»
4 Назначаем имя, в моем случае «NomerDogovora»
5. Жмем «Ок», когда окно закроется, вы скорей всего не увидите изменений, так как скрыт «Word kod», нажмите Alt+F9, что бы открыть код.
6. Таким образом создаете все нужные Вам параметры
Ссылки: http://www.modber.ru/catalog/item3340.html, http://j008.ru/ps/027_ActiveDocument
WordОвские файлы *doc, *docx — это ZIP-архивы ((*xls и *xlsx тоже)). Меняем расширение docx на zip и распаковываем архив. Получим структуру папокфайлов. Текст файлов в формате XML. Удобно редактировать текст, менять картинки(папка wordmedia). И собираем обратно, архивируем.
СоздатьКаталог(«C:времКаткат01»);
Архив = Новый ЧтениеZipФайла();
Архив.Открыть(«C:времКаткат01наименование.zip»);
Архив.ИзвлечьВсе(«C:времКаткат01Unpacked», РежимВосстановленияПутейФайловZIP.Восстанавливать);
Архив.Закрыть();
// что-то делаем
//ПутьИзменяемыйФайл = «C:времКаткат01Unpackedwordmediaimage1.png»; //для docx
//файл = новый файл(ПутьИзменяемыйФайл);
//Если НЕ Файл.Существует() Тогда
//
//КонецЕсли;
Архиватор = Новый ЗаписьZipФайла(«C:времКаткат01наименование2.zip», «», «»);
Архиватор.Добавить(«C:времКаткат01Unpacked*.*», РежимСохраненияПутейZIP.СохранятьОтносительныеПути, РежимОбработкиПодкаталоговZIP.ОбрабатыватьРекурсивно);
Архиватор.Записать();
УдалитьФайлы(«C:времКаткат01»);
В этом уроке мы научимся создавать шаблоны Word с предопределенными именованными полями, которые можно в дальнейшем заполнять программно из 1С (ссылка на пример кода).
Что это означает на практике?
К примеру, у нас есть типовая форма счёта на оплату, который мы выставляем покупателям.
Так вот — мы можем один раз создать шаблон такого счёта, прописать в нём поля id, date, organization, inn, kpp… и т.д. и затем программным способом создавать готовые для отправки покупателям счета на оплату.
Сейчас мы вместе в Word 2007 создадим такой шаблон, вернее я покажу сам принцип.
1. Первым делом создаём обычной документ Word.
2. Оформляем его как обычно.
3. Затем устанавливаем курсор в место, куда будет вставляться значение программно (пусть это будет номер счёта):
4. Переходим на закладку «Вставка» и выбираем «Экспресс-блоки»-«Поле…»:
5. В открывшемся диалоге выбираем тип поля «MergeField» и пишем имя поля (по которому мы его будем находит в 1с программно) — «number»:
6. Нажимаем «Ок» и в документ вставляется поля типа «MergeField» с именем «number»:
Отлично! Это то что надо
7. Оформляем весь документ в этом же стиле (вставляя нужные поля):
И, наконец, сохраняем этот документ в виде шаблона Word (с расширением dotx):
Готово!
Полученный файл с расширением dotx используем для программного создания документов.
С уважением, Владимир Милькин (преподаватель школы 1С программистов и разработчик обновлятора).
Как помочь сайту: расскажите (кнопки поделиться ниже) о нём своим друзьям и коллегам. Сделайте это один раз и вы внесете существенный вклад в развитие сайта. На сайте нет рекламы, но чем больше людей им пользуются, тем больше сил у меня для его поддержки.
Нажмите одну из кнопок, чтобы поделиться:
Много сталкивался с необходимостью печатать тот или иной документ с использованием и заполнением Word. Но использую наиболее распространенный механизм «замены» текста, с которым многие знакомы, сталкивался с различными ошибками, из-за которых ничего не получалось (хотя код написан 100% верно).
Раскажу о методе заполнения нужных нам Параметров в документе с использованием Параметров Word.
Я думаю программисты пойму, поэтому не буду размусоливать. Представьте Word документ —
1. Создаем документ Word, заполняем его так, как нам надо, в моем случае был «Агентский договор».
2. Определяем нужные нам для заполнения «места». например у меня — это Номер(NomerDogovora), Дата(DataDok), Организация(Organization), Менеджер(Menager), Контрагент(Principal)
3.Собственно сама замена (на примере Номера Документа):
3.1 В документе Выбираем участок для параметра, например: «АГЕНТСКИЙ ДОГОВОР №0101010101», в качестве участка нам нужно выделить сам номер, или удалить его и спозиционироваться на его месте.
3.2 В меню Word, переходим на «Вставка», далее «Экспресс-блоки», далее «Поле»
3.3 В открывшемся диалоговом окне, выбираем тип «DocVariable»
3.4 Назначаем имя, в моем случае «NomerDogovora»
3.5 Жмем «Ок», когда окно закроется, вы скорей всего не увидите изменений, так как скрыт «Word kod», нажмите Alt+F9, что бы открыть код.
4. Таким образом создаете все нужные Вам параметры.
5. После того как все параметры готовы, сохраняем и закрываем докмент Word.
ПЕРЕХОДИМ К 1С
1. В нашем нужном объекте конфигурации (ВН форма, ВН отчет и т.д.) добавляем макет, устанавливаем тип «Двоичные данные», и выбираем из файла наш созданный документ Word.
2. Программный код выглядит вот так:
Функция ПолучитьМакетСервер()
Возврат ПолучитьМакет(«Макет1»);
КонецФункции
ПРоцедура НапечататьДокумент(Объект)
Word = Новый COMОбъект(«Word.Application»);
Макет = ПолучитьМакетСервер();
временныйПуть = КаталогВременныхФайлов();
имяВременногоФайла = временныйПуть + «gph.doc»;
Макет.Записать(имяВременногоФайла);
ТекДок = Word.Documents.ADD(имяВременногоФайла);
СтруктураДоверенности = ПолучитьДанныеДоверенности(СсылкаНаОбъект.Менеджер);
НомерДатаДоверенности = «№ » + СтруктураДоверенности.Номер + » от » + СтруктураДоверенности.Дата;
///////////// Установка значений параметров Word
ТекДок.Variables(«NomerDogovora»).Value=СокрЛП(Строка(СсылкаНаОбъект.Номер));
ТекДок.Variables(«DateDok»).Value=Строка(Формат(СсылкаНаОбъект.Дата,»ДЛФ = ДД»));
ТекДок.Variables(«Organization»).Value=СокрЛП(СсылкаНаОбъект.Организация.НаименованиеПолное);
ТекДок.Variables(«Menager»).Value=Строка(СсылкаНаОбъект.Менеджер);
ТекДок.Variables(«NDateDov»).Value=Строка(НомерДатаДоверенности);
ТекДок.Variables(«Principal»).Value=Строка(СсылкаНаОбъект.Контрагент);
ТекДок.Fields.Update();
Word.ActiveWindow.View.ShowFieldCodes = False;
Word.Visible=Истина;
КонецПроцедуры
В работе программиста 1С, данный функционал требуется крайне редко, хотя благодаря нему можно решать довольно сложные задачи с динамическими и не постоянными печатными формами. При реализации данной задачи, работа по созданию шаблонов Word и расстановке закладок в шаблоне Word возлагается на пользователей 1C.
В данном примере будет показано, как используя механизмы 1С и документа Word в качестве шаблона, можно создать печатную форму для вывода данных, пользователям программы 1С.
Создадим шаблон на основе документа Word для 1С. Сначала необходимо включить показ закладок для более удобной работы с документом:
Использование шаблонов Word в 1С
Использование шаблонов Word в 1С
Далее необходимо в файл шаблона для 1С, добавить текст и пару закладок. Закладка добавляется через меню «Вставка» — «Закладка». Нужно выделить текст закладки, скопировать его, открыть меню «Вставка — Закладка», вставить скопированный текст закладки и нажать «Добавить»:
Установка закладки, шаблон Word для 1С
Когда файл шаблона Word готов, создаем новую внешнею обработку в 1С, добавляем форму и в модуле формы вставляем следующий код:
&НаКлиенте Процедура ПриОткрытии(Отказ) ЗаполнитьШаблонВорд(); КонецПроцедуры &НаКлиенте Функция ЗаполнитьШаблонВорд() //Попытка создать COM объект Попытка ОбъектВорд = Новый COMОбъект("Word.Application"); Исключение Сообщить("Ошибка при запуске Microsoft Word: " + ОписаниеОшибки(), СтатусСообщения.Внимание); Возврат Неопределено; КонецПопытки; //Путь к шаблону ОбъектВорд.Documents.Add("C:UsersКонстантинDesktopШаблон.docx"); ШаблонВорд = ОбъектВорд.ActiveDocument; //Получаем все закладки из шаблона Для каждого ЗакладкаВорд Из ШаблонВорд.Bookmarks Цикл Сообщить(ЗакладкаВорд.Name); КонецЦикла; //Заменяем закладку1 на текст ШаблонВорд.Bookmarks("Закладка1").Select(); ШаблонВорд.Application.Selection.TypeText("Текст для закладки №1."); //Заменяем закладку2 на текст ШаблонВорд.Bookmarks("Закладка2").Select(); ШаблонВорд.Application.Selection.TypeText("Текст для закладки №2."); //Заменяем закладку3 на текущую дату ШаблонВорд.Bookmarks("Закладка3").Select(); ШаблонВорд.Application.Selection.TypeText(ТекущаяДата()); ОбъектВорд.Application.Visible = Истина; ОбъектВорд.Activate(); //Закрытие документа //ОбъектВорд.Application.Quit(); КонецФункции
В результат запуска внешней обработки 1С по формированию печатной формы на основе шаблона в виде файла Word, мы получим следующий результат:
Результат использования шаблонов Word в 1С
Информацию по методам COM объекта Word, а так же дополнительные данные можно узнать из MSDN.
Скачать файл обработки 1С и шаблона Word.
Дополнение к заметке Использование шаблонов Word в 1С
Выражаю благодарность, всем тем, кто комментирует запись, благодаря вам, материал дополняется новыми данными и будет полезен более широкому кругу посетителей.
1. А как поменять размер шрифта во вставляемом тексте?
Достаточно изменить размер шрифта закладки, в шаблоне. А вот, если необходимо динамически менять размерность, тогда:
//Заменяем закладку3 на текущую дату ШаблонВорд.Bookmarks("Закладка3").Select(); ШаблонВорд.Application.Selection.Font.Bold = 1; ШаблонВорд.Application.Selection.Font.Size = 20; ШаблонВорд.Application.Selection.TypeText(ТекущаяДата());
2. Картинки есть возможность выгружать в шаблон?
Да, конечно. Примеры для C# и VB описаны по ссылке: https://msdn.microsoft.com/ru-ru/library/ms178792.aspx, а для 1С код будет следующий:
// Вставка изображения ШаблонВорд.Bookmarks("Закладка3").Select(); ШаблонВорд.Application.Selection.InlineShapes.AddPicture("C:UsersКонстантинDesktoplogo_1c.png");
3. При выполнении кода: ОбъектВорд.Documents.Add(«C:/Шаблон.docx») (туда я поместил Ваш документ) получаю ошибку : «Ошибка при вызове метода контекста (Add)» в чем может быть причина?
Может попробовать изменить путь на: «C:Шаблон.docx».
4. Подскажите пожалуйста еще почему при сохранении макета типа active document в файл word кодом:
ОбработкаОбъект = РеквизитФормыВЗначение("Объект"); Макет = ОбработкаОбъект.ПолучитьМакет("ШаблонПисьмаПросрочка"); ИмяФайла = КаталогВременныхФайлов() + ""файл.doc"; Макет.Записать(ИмяФайла);
Я получаю вместо нормального документа вот такой http://prntscr.com/eshgjk
Предполагаю, что метод Записать(< ИмяФайла>, < ТипФайлаТаблицы>) по умолчанию, записывает файл в формате MXL. Попробуйте вторым параметром установить значение: ТипФайлаТабличногоДокумента.DOCX, более подробно описано в «Синтакс-помощнике».
5. У меня в документе есть ссылки на файлы которые расположены на сетевом диске. Как в шаблоне сделать гиперссылку на эти файлы?
Интересный вопрос, если попробовать сделать запись макроса и посмотреть результат, то в Visual Basic добавление гиперссылки будет выглядеть следующим образом:
Sub Макрос1() ' ' Макрос1 Макрос ' ' Selection.MoveLeft Unit:=wdCharacter, Count:=15, Extend:=wdExtend ActiveDocument.Hyperlinks.Add Anchor:=Selection.Range, Address:= _ "C:UsersКонстантинDesktopТест.txt", SubAddress:="", ScreenTip:="", _ TextToDisplay:="ТестоваяСсылка" End Sub
Описание метода добавления в MSDN: https://msdn.microsoft.com/en-us/vba/word-vba/articles/hyperlinks-add-method-word
Соответственно код для 1С следующий:
Функция ЗаполнитьШаблонВорд() //Попытка создать COM объект Попытка ОбъектВорд = Новый COMОбъект("Word.Application"); Исключение Сообщить("Ошибка при запуске Microsoft Word: " + ОписаниеОшибки(), СтатусСообщения.Внимание); Возврат Неопределено; КонецПопытки; //Путь к шаблону ОбъектВорд.Documents.Add("C:Usersk.blaginDesktopШаблон.docx"); ШаблонВорд = ОбъектВорд.ActiveDocument; //Получаем все ссылки из шаблона Для каждого ЗакладкаВорд Из ШаблонВорд.Hyperlinks Цикл Сообщить(ЗакладкаВорд.Name); КонецЦикла; //Меняем адрес уже существующей ссылки ШаблонВорд.Hyperlinks("Logs.zip").Address = "C:Usersk.blaginDesktopMemory.zip"; //Заменяем закладку на ссылку ОбъектЗакладка = ШаблонВорд.Bookmarks("Закладка3"); ШаблонВорд.Hyperlinks.Add(ОбъектЗакладка.Range, "C:Usersk.blaginDesktopШаблон.docx", "", "Шаблон.docx", "C:Usersk.blaginDesktopШаблон.docx"); ОбъектВорд.Application.Visible = Истина; ОбъектВорд.Activate(); //Закрытие документа //ОбъектВорд.Application.Quit(); КонецФункции
Ключевые слова: Word, Active Document, ActiveDocument, Application, заполнение, поле
В Конфигураторе
Макеты — правый клик — Добавить
Тип макета: Active document
Создать новый — Документ Microsoft Word
Меню Вставка — Поле — Автоматизация — DocVariable
Написать имя поля в графе «Новое имя:» ДатаПриказа
В модуле формы документа создаем кнопку, и в ее обработчике пишем:
Процедура ОсновныеДействияФормыWord(Кнопка) АктивныйДокумент = ПолучитьМакет("Макет"); КомОбъект = АктивныйДокумент.Получить(); КомОбъект.Application.Visible=1; КомОбъект.Variables.Item("ДатаПриказа").Value="24.01.2007"; КомОбъект.Fields.UpDate(); КомОбъект.PrintOut(); //распечатать документ //Ожидание окончания отправки на печать... Пока objWord.Application.BackgroundPrintingStatus<>0 Цикл Предупреждение("Ожидание",1); КонецЦикла; КомОбъект.Application.Quit(); //закрыть Word КомОбъект = 0; КонецПроцедуры
Другой вариант: добавляем не поле, а Закладку
http://itland.ru/forum/index.php?showtopic=5238
Меню Вставка-Закладка… Задаем ее имя («КуКу»).
Процедура ОсновныеДействияФормыWord(Кнопка) АктивныйДокумент = ПолучитьМакет("Макет"); КомОбъект = АктивныйДокумент.Получить(); КомОбъект.Application.Visible=1; КомОбъект.Bookmarks(СокрЛП("КуКу")).Select(); КомОбъект.Application.Selection.TypeText(СокрЛП("крокодил")); КонецПроцедуры
Формирование и заполнение документов Microsoft Word ЛЮБОГО шаблона на основании документов и справочников системы. Любые документы и справочники 1С. Заполнение по реквизитам шапки и табличной части.
-
Основное
-
Совместимость
-
Прочее
Артикул | 358 |
Обновлено | 21.12.2022 |
Исходный код | Открыт |
Изменение конфигурации | Не требуется |
Покупок | 55 |
- BAS ERP (UA)
- BAS Комплексное управление предприятием 2 (UA)
- BAS Управление торговлей 3 (UA)
- Бухгалтерия предприятия 3.0
- Зарплата и управление персоналом 3.1
- Комплексная автоматизация 2.4 (BY)
- Комплексная автоматизация 2.4 (KZ)
- Комплексная автоматизация 2.4 и 2.5
- Управление нашей фирмой 1.6
- Управление нашей фирмой 3.0
- Управление предприятием ERP 2.4 и 2.5
- Управление торговлей 11.4 и 11.5
- Управление торговлей 3 (BY)
- Управление торговлей 3 (KZ)
Очень полезная внешняя обработка для всех типовых конфигураций 1С:Предприятие 8.3, позволяет формировать файл Word по выбранному шаблону из справочников и документов системы. С ее помощью вы можете распечатывать из 1С различные спецификации, трудовые договоры и договоры с контрагентами, гарантийные талоны и прочее прочее. Имея под рукой Word нужной структуры и чуть доработав его, вы получите возможность формировать его прямо из 1с с заполнением всех нужных параметров.
Принцип работы обработки следующий:
- выбираем Word нужной структуры,
- в тех местах файла, где необходимо вставить информацию из 1С, делаем закладки (bookmarks),
- после подготовки шаблона добавляем его в 1С (справочник Файлы),
- настраиваем заполнение шаблона печати в 1С,
- печатаем нужные документы/справочники, выбрав созданный шаблон.
Подготовка шаблона Word
Для демонстрации работы обработки настроим печать спецификации к договору из документа Заказ клиента. Допустим, у нас есть такой Word:
Из него будем формировать полноценную спецификацию. Необходимо из этого файла сделать универсальный макет, который бы каждый раз брал данные для заполнения из исходного заказа. Для этого выделяем нужные блоки в документе и для них делаем закладки:
Каждой закладке даем имя.
Имена закладок должны быть уникальными и не повторяться. В имени закладки нельзя использовать пробелы.
При печати также будем заполнять таблицу товаров. Чтобы она сформировалась красиво, оставим шапку и одну пустую строку:
Сохраняем Word, закрываем.
Настройка заполнения шаблона
Теперь в программе открываем журнал заказов клиента, заходим в меню печати и жмем кнопку для настройки печати по шаблону Word:
Настройка шаблонов доступна только пользователям с полными правами.
Окно настроек выглядит следующим образом:
В верхней части расположена таблица сохраненных шаблонов печати (которые относятся именно к заказу клиента). Добавляем новую строку таблицы, создаем новый шаблон. В строке указываем наименование шаблона (по которому впоследствии будет заполняться наименование файла). В этом наименовании можно использовать не только произвольные символы, но и заменяемые параметры (в квадратных скобках). Далее выбираем собственно файл Word (предварительно его надо добавить в справочник Файлы).
Если нужно сразу сохранить файл в присоединенные файлы заказа клиента, устанавливаем галку. В результате получится подобная картина:
При выборе файла автоматически заполняется расположенная ниже таблица закладок. Наша следующая задача — настроить источники значений для этих закладок.
Можно использовать как реквизиты исходного объекта печати (в данном случае заказа клиента), так и реквизиты реквизитов.
Для более быстрого заполнения поддерживается ввод названий с клавиатуры.
В случае работы с датой можно выбрать формат вывода.
В отдельной колонке сразу можно увидеть значение, которое будет подставлено в закладку макета Word.
Полный перечень доступных реквизитов выглядит внушительно:
Для объектов можно использовать не только значения собственных, но и дополнительных (созданных пользователями вручную) реквизитов. Для организаций и контрагентов можно использовать адреса, почту, телефоны и банковские реквизиты. Для физических лиц можно использовать паспортные данные.
В отдельной колонке таблицы закладок можно задавать падеж (для правильного склонения полученного значения), а также необходимость склонения ФИО.
На выходе получается такая таблица:
В шаблоне присутствует таблица товаров — для настройки ее заполнения переходим на вкладку Таблицы.
Выбираем из какой табличной части брать данные:
После этого через запятую перечисляем названия реквизитов табличной части, значениями которых необходимо заполнить таблицу нашего шаблона. Их количество должно совпадать с количеством колонок шаблона. Для справки в последней колонке приведены все возможные значения.
Для некоторых колонок можно просто прописать постоянное значение (на скрине выше это ШТ).
На этом настройка шаблона завершена, не забываем сохранить настройки.
Настройка шаблонов — задача одноразовая, один раз настроили и потом печатаете любые заказы сколько угодно раз.
Если нужно сохранить еще один шаблон, то проделываем повторно такую же работу.
Для редактирования шаблона выделяем его в верхней таблице (при этом таблица закладок заполняется автоматически из сохраненных настроек), вносим правки и сохраняем.
Для удаления шаблона выделяем его в списке и нажимаем Del, затем сохраняем настройки.
Для печати вызываем команду По шаблону Word (печать), в результате на экране появляется форма прикрепленного файла (т.к. мы включили сохранение файла).
Обратите внимание, что в названии файла заменяемые параметры исчезли — вместо них подставились значения документа.
Итоговый файл Word выглядит так (название файла тоже заполнилось согласно настройке):
Если для объекта создать несколько шаблонов печати, при нажатии на кнопку печати будет появляться окно с выбором нужной печатной формы.
Документы можно печатать как по отдельности, так и списком.
Чтобы оставить комментарий, зарегистрируйтесь и авторизуйтесь на сайте.