Заполнение шаблонов в Word и Excel
Учетные задачи - Печатные формы
Файлы
ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний
Оформите подписку на компанию для решения рабочих задач
Оформить подписку и скачать решение со скидкойВы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
В комплекте идет пример работы для ТиС, печать обычной накладной, тупо чтобы показать принцип работы.
Как ставить: Копируем в каталог внешних печатных форм "ExtForms\PrnForms" и через встроенную обработку "Регистрация внешних печатных форм..." добавляем для нужных документов / справочников.
Можно и просто открывать как внешнюю обработку, но тогда доступна работа только со своим списком значений. Список шаблонов настраивается для каждого вида документов/справочников.
Что из себя представляет и как работает:
Создаете любой документ в Word или Excel, оформляем как душе угодно. В любом месте документа куда надо вставить значения из 1С просто пишем:
для Word: формулу 1С заключенную в фигурные скобки { и } (Если фигурные скобки используется в вашем документе, то их можно заменить на любые другие символы в конце текста модуля), например: {"Текущая дата: "+ТекущаяДата()} или {Конт.ДатаДок} и т.п.
для Excel: добавляем в ячейку примечание (правой кнопкой мыши и выбрать "создать примечание"), в тексте примечания пишем формулу 1С
Новое! Колонтитулы в Word и Excel обрабатываются по правилам оформления шаблона Word, то есть формулы 1С заключаются в фигурные скобки, например {Конт.ДатаДок}
Контекст формы из которой вызвана обработка хранится в переменной Конт, соответственно ее можно использовать в формуле в Word, например: {Конт.Контрагент.ЮрФизЛицо.ПолнНаименование}
Если необходимо вывести табличную часть документа, то оформляем таблицу как вам надо (шапка, подвал и т.д.), и в строке куда надо вставить данные из 1С, так же как и выше вставляем формулы 1С и в первой формуле в начале строки ставим знак доллара $, все. При заполнении, эта строка будет размножена и заполнена. При этом если поля находятся в таблице, будут добавлены строки таблицы, если просто строка не в таблице, то она будет скопирована. То же самое относится и к константам имеющие тип "ТаблицаЗначений" (присваивается из внешних отчетов/обработок). При заполнении табличной части в Excel можно отключить вставку новых строк, для этого необходимо указать не один, а два знака доллара.
Так же можно определять свои собственные константы любого типа (Строка, Число, справочник и т.п.) И изменять их перед печатью. Список констант хранится отдельно для каждого шаблона. Использовать константы просто, используем их в формулах как переменные в 1с, например:
{"1-а константа: "+Конст1+" 2-я константа: "+Конст2.Наименование}
Если константа определена как отчет/обработка, то перед заполнение шаблона будет вызвана эта обработка/отчет с передачей в него контекста формы из которой была вызвана печать. После выполнения внешнего отчета/обработки значение переданное из нее в Форма.Параметр присваивается константе и может использоваться в шаблоне. Возвращаемое значение может иметь тип "ТаблицаЗначений", тогда его можно использовать для формирования табличной части, точно так же как и с контекстом документа (см. выше).
Если что спрашивайте, буду рад, если кому-нибудь пригодится.
Изменения от 25.04.2009
Если необходимо размножить более одной строки, то после знака $ указывается еще один символ ">", если надо чтобы каждая строка табличной части документа начиналась с новой страницы, добавляем еще один символ ">". В последней строке, которую необходимо размножить указываем последовательность "$<". Примеры:
Размножение одной строки шаблона с заполнением из табличной части:
{$НомерСтроки} | {Конт.Номенклатура} | {Конт.Количество}
Размножение двух строк шаблона между "командами" {$> и {$<:
{$>}Номер строки документа: {НомерСтроки}
Наименование товара: {Конт.Номенклатура}{$<}
То же самое, но каждая строка документа будет идти с новой строки:
{$>>}Номер строки документа: {НомерСтроки}
Наименование товара: {Конт.Номенклатура}{$<}
Изменения от 08.07.2009
Добавлена обработка колонтитулов документов (для Word'а учитываются настройки страницы и различия первой и нечетной страниц). Правила оформления формул 1С аналогично оформлению шаблонов в Word'е. Все формулы заключаются в фигурные скобки (открывающая и закрывающая команда, могут быть изменены), например: Накладная № {Конт.НомерДок} от {Конт.ДатаДок}
Изменения от 29.09.2010
По просьбе пользователей внес небольшие изменения: теперь при открытии обработки, просто как внешнего отчета, выводится список метаданных (документов, справочников) текущей конфигурации. Что позволяет работать с любой, даже нестандартной конфигурацией без каких-либо изменений со стороны программиста. Хоть и не совсем удобно (приходится сначала выбирать тип данных "Справочник" или "Документ", затем вид и только потом сам объект, с которым необходимо работать).
Изменения от 20.10.2010
Исправлена проблема при заполнении колонтитулов в некоторых версиях Excel'я. Спасибо за описание ошибки и терпение Весниной Оле
Изменения от 09.09.2015
По просьбе Ивановой Дониэлы добавлена возможность сортировать список шаблонов и группировать шаблоны. Вспомогательная форма перенесена в основной файл, поэтому файл extprint_.ert удален за ненадобностью.
Вступайте в нашу телеграмм-группу Инфостарт
См. также
Банковские операции Загрузка и выгрузка в Excel Бухгалтер Пользователь 1С:Предприятие 7.7 1C77 Россия Бухгалтерский учет Платные (руб)
Решение предоставляет комплексную загрузку банковской выписки из CSV, XLS, TXT файла в 1С 7.7 любой конфигурации. Позволяет создавать документы выбранного вида, например "Строка выписки банка (приход/расход)", или многострочный табличный документ, например Выписка, для каждой операции из загружаемого файла банковской выписки. Загружает реквизиты документа, а также создаёт контрагентов и другие необходимые элементы справочников.
5999 руб.
29.07.2021 28853 23 27
Печатные формы Бухгалтер Пользователь 1С:Предприятие 7.7 1С:Предприятие 8 1С:Бухгалтерия 3.0 1С:Бухгалтерия 7.7 1С:Комплексная 7.7 1С:Торговля и склад 7.7 1С:Производство+Услуги+Бухгалтерия 1С:Управление производственным предприятием 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 1.х 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 1.6 1С:Управление торговлей 11 1С:Розница 2 Россия Бухгалтерский учет Налоговый учет Абонемент ($m)
Внешние печатные формы Счета-Фактуры( СФ ) и Универсального Передаточного Документа( УПД ) (в редакции постановления Правительства Российской Федерации от 2 апреля 2021 г. № 534) для большинство конфигураций (УТ,БП,УПП,УСО,ЕРП,УНФ,Розница,КА) одним архивом. . Бонус печатные формы Счета-фактур и УПД для Бух.учета, ТиС, Комплексная конфигурация 4.5 1С 7.7; универсального корректировочного документа (УКД) для УТ10/УПП1/КА1 Внешние печатные формы (УПД, счет фактура) за поставщика из Управление торговли 10.3 (все релизы); УПП 1.3; УСО 1.3; КА 1.1; БП 2.0. Так же формы для прослеживаемых товаров с колонками (c РНПТ) . *поправлено от 19.12.2023
2 стартмани
25.06.2021 101940 1322 Kontakt 319
Разработка внешних компонент Загрузка и выгрузка в Excel Разработчик 1С:Предприятие 7.7 1C77 Абонемент ($m)
Внешняя компонента 1С 7.7. для сохранения таблиц в формате Excel 2007.
1 стартмани
21.03.2019 35403 88 MadDAD 347
Печатные формы Оптовая торговля Производство готовой продукции (работ, услуг) Бухгалтер 1С:Предприятие 7.7 1С:Бухгалтерия 7.7 1С:Торговля и склад 7.7 Россия Бухгалтерский учет НДС Абонемент ($m)
Еще одна поделка на заданную тему. Отличается от аналогичных разработок и от типового решения тем, что не только выводится новая строка в шапке "Идентификатор государственного контракта, договора (соглашения)", но и печатается этот самый идентификатор госконтракта. Может пригодиться тем, кто осуществляет поставки по госконтрактам - с 01.07.2017 они обязаны указывать ИГК в счетах-фактурах и УПД, а не просто печатать пустографку.
1 стартмани
04.07.2017 44044 337 Cooler 49
Загрузка и выгрузка в Excel Математика и алгоритмы Разработчик 1С:Предприятие 7.7 1С:Предприятие 8 Бесплатно (free)
Статья посвящена распространённому вопросу - как сохранить несколько таблиц (отчетов) в формате MXL, с которым работает 1С, на отдельные листы одного Excel файла. Освещается простой алгоритм решения проблемы штатными средствами, без использования внешних модулей и библиотек (не относящихся к 1С и Excel).
23.11.2015 21506 etmarket 14
Загрузка и выгрузка в Excel Оптовая торговля Печатные формы Бухгалтер Бухгалтерский учет 7.7 1С:Бухгалтерия 7.7 Бухгалтерский учет Платные (руб)
Обработка загружает из файла Excel документы "Поступление", "Отгрузка", "Счет на оплату". Возможно сохранение настройки соответствия полей. Есть демоверсия. Есть интересная функция загрузки сразу и поступления, и отгрузки (цены в отгрузке будут установлены больше на выбранный процент). Элементы номенклатуры ищутся по полям поиска и могут создаваться новые, если не найдены.
9516 руб.
02.06.2015 45422 3 5
Печатные формы Документооборот и делопроизводство (СЭД) Логистика, склад и ТМЦ Бухгалтер Бухгалтерский учет 7.7 1С:Бухгалтерия 7.7 Россия Бухгалтерский учет Абонемент ($m)
Внешняя обработка, позволяющая выводить на печать УПД из документа "Поступление товаров". Сделано в виде внешней обработки, а не печатной формы, потому что в типовой форме поступления отсутствует кнопка "Печать".
2 стартмани
06.05.2015 26958 37 cargobird 5
Загрузка и выгрузка в Excel Разработчик 1С:Предприятие 7.7 1С:Предприятие 8 1C:Бухгалтерия 1C77 Бесплатно (free)
Все пользователи 1С всех версий (начиная с 7-й) сталкиваются с проблемой нормальной работы с данными, сохраненными в Excel файл. Есть некоторые хитрости, которые позволяют облегчить работу с сохраненными данными из 1С в формат Excel.
16.01.2015 125930 shmellevich 41
Во всех офисах до 2007 его легко найти на панели "Формы": Меню "Вид" - "Панели инструментов" - "Формы"
А в Word 2007 я не нашел такой панели, на память я точно не помню как называется команда, но
раз "Вставить поле" у тебя выдает диалог с типами полей, значит это не то, ищи команду "Вставить текстовое поле" или "Вставить поле формы" или "InsertFormField"
Так как очень часто поступали вопросы: "Как добавить поле?", я переделал обработку, теперь нет необходимости ничего дополнительно вставлять. Просто пишем формулу 1С заключенную в фигурные скобки и все! Никаких дополнительных действий делать не надо!
Если фигурные скобки используются в тексте документа, то их можно заменить на любые другие символы или строки в конце текста модуля, например заменить на:
НачКоманды="{*";
КонКоманды="*}";
Тогда одинарные скобки будут игнорироваться.
Успехов!
Спасибо, Александр masterprint@aplus.by
- Работа с документами Excel
- привязка списка шаблонов к виду документов/справочников
- получение значений констант из внешних отчетов/обработок
- работа со значениями констант типа "ТаблицаЗначений"
- проверка прав доступа к объектам в списке констант
подробнее в описании программы
Пишите!
Сам ковырялся с подобной проблемой, но шел другим путем и не туда ушел. У нас на базе платформы 1С7 самописная база для учета и ведения заявок по ремонту, из этой же базы планировалось формировать договор и доки для контрагента.
Так что обработка В ТЕМУ. Спасибо
Вообще я начинал писать эту обработку для кадровиков в контору в которой нет своего программиста. Они хотели делать личные карточки, трудовые договоры и т.п.
Им хотелось чтобы они сами могли создать любой документ в Office и заполнить его из 1С. Поэтому и была сделана такая обработка. Потом уже она дорабатывалась и превратилась в то, что вы сейчас видите.
Есть еще много идей по развитию этой обработки, так что если кому-то нравится и есть свои идеи, подкидывайте, буду дорабатывать!
1. передавать в обработку значение типа "СписокЗначений"
2. в списке значений должен быть передан контекст вызываемой формы
Пример вызова для Вашего случая:
Сп = СоздатьОбъект("СписокЗначений");
Сп.Установить("Контекст",Контекст);
ОткрытьФормуМодально("Отчет",Сп,"..\extprint.ert");
Все настройки хранятся в файле extprint.ini и имеют вид:
[Наименование шаблона]
Файл=ПУТЬ_ДО_ФАЙЛА_ШАБЛОНА
Контекст=Тип контекста, например: Документ.Реализация
СПИСОК КОНСТАНТ
Список констант имеет вид:
ИмяКонстанты=ТипКонстанты:Значение_Константы
ТипКонстанты имеет вид: ТипЗначения.Длина.Точность
Значение_Константы: это строковое представление значения полученное функцией ЗначениеВСтроку()
Например:
ДокументДатаНомер=Строка.60.0.0:{"Строка","Номер"}
Если возникнут проблемы или пожелания, пишите буду рад помочь.
Строка.ДлинаСтроки.ПризнакМногострочногоТекста.ПризнакСтрокиНеограниченнойДлины
Если ПризнакСтрокиНеограниченнойДлины = 1, то параметр "ДлинаСтроки" не имеет смысла но всеравно должен присутствовать
Еще раз большое спасибо. Из всего, что здесь представлено использую в своей работе :
1.FormEx
2.OSV252
3.Группировки
Ваша разработка в ряду этих действительно нужных, полезных и умных для меня разработок. Еще раз спасибо.
{?(конт.рекв=1,"строка1","строка2")} в Word.
т.е. в зависимости от условия надо напечатать ту или иную строку.
Подскажите, если такое возможно,
а вообще обработка отличная, большое спасибо!!!
Если необходимо размножить более одной строки, то после знака $ указывается еще один символ ">", если надо чтобы каждая строка табличной части документа начиналась с новой страницы, добавляем еще один символ ">". В последней строке, которую необходимо размножить указываем последовательность "$<".
Примеры:
Размножение одной строки шаблона с заполнением из табличной части:
{$НомерСтроки} | {Конт.Номенклатура} | {Конт.Количество}
Размножение двух строк шаблона между "командами" {$> и {$<:
{$>}Номер строки документа: {НомерСтроки}
Наименование товара: {Конт.Номенклатура}{$<}
То же самое, но каждая строка документа будет идти с новой строки:
{$>>}Номер строки документа: {НомерСтроки}
Наименование товара: {Конт.Номенклатура}{$<}
Жду новых пожеланий и замечаний! :)
Чтобы сделать заполнение Word и Excel из документа, в котором нет кнопки "Печать" и при этом не переделывать конфигурацию, необходимо открыть обработку просто как внешний отчет через меню в 1С "Файл-Открыть..." или скопировать ее в папку ExtForms и добавить в разделе "Сервис-Дополнительные возможности" обозвав, например "Внешняя печать" или еще как.
Действия в обработке следующие:
1. ДОбавляем шаблон (Word или Excel)
2. Добавляем константу, назвав, например "Док" и выбираем ее тип как "Документ" нужного вида.
3. В шаблоне вместо "Конт." перед реквизитами документа, указываем имя константы "Док." и все. Все остальное как обычно.
Разница в том, что перед заполнением надо будет два раза щелкать в ячейке "Значение" рядом константной "Док" и выбирать нужный документ. Потом только жать "Заполнить". Будут вопросы пишу, отвечу сразу :)
_____________________
№ | Товар | Кол-во|...
_____________________
[сего: | |...
{Конт.Итог(] | 0 |
------------------------
Хрюша про сп2
Ворд 2003
Выделяет на один символ позже и с начала и с конца, хотя сами НачПоз и КонПоз вычисляются правильно (с учетом табов). Видимо сам ворд криво проглатывает символ табуляции при переходе в др. колонку.
У меня тоже таблица 1х2, просто для оформления, причем в колонтитуле (не спрашивайте меня зачем).
Моя обработка подключается как внешняя печатная форма. Нет необходимости писать для этого что-то свое. Достаточно проделать следующее:
1. Скопировать все файлы из архива в папку ExtForms\PrnForms в вашей конфигурации 1С.
2. Непосредственно при работе в 1С:Предприятии открыть пункт меню "Сервис - Регистрация внешних печатных форм"
3. Выбрать нужный вид документа/справочника
4. Нажать кнопку "Изменить" и выбрать "Внести в список" и выбрать "extprint"
5. Открыть любой документ выбранного вида в журнале документов, и нажать стрелку рядом с кнопкой печати, чтобы выбрать мою обработку.
6. Далее все по инструкции из описания к моей обработке на этой странице
Если всетаки есть необходимость вызывать мою обработку из своей, то используем тот же принцип, что и при вызове внешней печатной формы, а именно:
Сп = СоздатьОбъект("СписокЗначений");
Сп.Установить("Контекст",КонтекстДокументаИлиСправочника);
ОткрытьФормуМодально("Отчет",Сп,"ПутьКМоейОбработке\extprint.ert");
Но что-то мне подсказывает, что Вы просто не можете сделать шаблон непосредственно в Word'е / Excel'е и называете его внешним отчетом...
Если это так, то пришлите мне Ваш шаблон на почту zsrg@yandex.ru я внесу коррективы и добавлю комментарии к Вашим ошибкам.
Заходите в режиме конфигуратора, открывайте соответствующий документ и смотрите структуру. Тут уже моя обработка совсем не причем. Скорее всего там реквизит имеет наименование "Клиент" или "Плательщик" или еще что, это уже конкретную конфигурацию смотреть надо.
В прикрепленном файла пример Вашего шаблона для постраничного заполнения. Я только ФИО заполняю, там по аналогии можете все остальное заполнить. Действия следующие:
1. Запускаете мою обработку как внешний отчет, либо из контекста нужного документа. Пример делался для обычного режима через "Файл - Открыть". Когда спросит тип метаданных, жмите "Отмена"
2. Добавляете в список шаблонов мой пример
3. Добавляете константу "Сотр" с видом "Внешний отчет" и выбираете файл из архива с примером - "ВыборСотрудника".
Жмете "Заполнить". Появится диалог выбора сотрудников, указываете нужных сотрудников и жмете "Сформировать". Все. Должно заполниться постранично.
Фишка в том, что обработка "ВыборСотрудника" возвращает значение "ТаблицаЗначений" в которой перечислены сотрудники. Я создал там несколько колонок, в частности "Фамилия", "Имя", "Отчество". Данные из которых и заполняются в шаблон.
Успехов! :)
Что произойдет при заполнении: Начиная со строки {$>>Сотр} будет запущена внешняя обработка, затем начнется выборка из табличной части, которую вернулся внешняя обработка. Копировать будет блок до строки {$<}.
Как заполняются данные - так как значение Сотр содержит таблицу значений, то обращаемся к ее колонкам. В примере, во внешней обработке, добавлено четыре колонки: "Сотрудник" - элемент справочника, "Фамилия", "Имя", "Отчество" - составляющие выделенные из наименования сотрудника.
Таким образом, чтобы вывести, например, Фамилию, пишем в шаблоне: {Сотр.Фамилия}
Для Имени: {Сотр.Имя} и т.д.
В результате при первом формировании документа возникает ошибка
Сотр<<?>>.Фамилия
Переменная не определена (Сотр)
И вполе фамилия - [Сотр.Фамилия].
А если, не закрывая, еще попытаться сформировать, то вроде нет ошибки.
69. Оля, Вам спасибо за терпение :)
Ошибка.doc
Результат.doc
Работаю прямо из 1С, ручками потрудиться только один раз над нужной формой, а потом "клик" и все в "ожуре"
Спасибо огромное. +++++
Я пользуюсь давно Вашей обработкой "Заполнение шаблонов в Word и Excel"
очень успешная работа !!!!
Сделала много шаблонов и с вязи с этим разросся список шаблонов и трудно отыскать нужный.
Долго мучилась, как прописать процедуру: Переместить Шаблоны (вверх, вниз)
(или сортировать)
но ничего у меня не получается.
Большая просьба!
напишите мне эту процедуру пжл!
и вышлите мне на мой tathr@mail.ru
или обновите обработку, добавить эту процедуру.
Моя бухгалтерия очень будет рада.
Заранее благодарна. Доня
Сдвиг Константы я сделала, правда коряво.
Но Вы как-то упоминали о замечаниях
Так вот:
Когда формирую Договор, то первой строкой в Дог. идет вставленный номер: № {НомерДог}
и при "заполнить" выбрасывает:
НомерДоговора<<?>>
Переменная не определена (НомерДоговора),
а вот при повторном "заполнить" уже все в порядке.
Может там с первой строкой что-то посмотреть
правда, все это мелочи.
Обработка SUPER !!!!
Спасибо
а вот сдвиг Константы очень корявый
посмотрите пжл:
//******************************************************************************
Процедура ИзменениеПорядкаГрупп(НаправлениеСдвига)
ТекСтр = ВыбКонст.ТекущаяСтрока();
ПослСдвигСтр = ВыбКонст.ТекущаяСтрока() - 1;
//Если ТекСтр <= ПослСдвигСтр Тогда
Если не((НаправлениеСдвига = 1) и (ТекСтр = ПослСдвигСтр)) Тогда
ВыбКонст.СдвинутьСтроку(НаправлениеСдвига,ТекСтр);
КонецЕсли;
//Иначе
// Предупреждение("Группировка ""По документам"" всегда находится
// |в конце списка и не перемещается.");
//КонецЕсли;
КонецПроцедуры // ИзменениеПорядкаГрупп
//******************************************************************************
Рейтинг: 347
Вы можете заказать платную консультацию или разработку у автора. Будет создан приватный заказ на «Бирже заказов» для автора.
№ 16466
Создание 01.10.08 10:59
Обновление 09.09.15 00:48
Просмотры 55508
Загрузки 1692
Рейтинг
141
Комментарии 91
Код открыт Не указано
Рубрики Загрузка и выгрузка в Excel Печатные формы
Кому Для всех
Тип файла Внешняя обработка (ert,epf)
Платформа 1С:Предприятие 7.7
Конфигурация 1C77
Операционная система Windows
Страна Не имеет значения
Отрасль Не имеет значения
Налоги Не имеет значения
Вид учета Не имеет значения
Доступ к файлу Абонемент ($m)