В этой статье мы научимся создавать шаблоны в формате xlsx. Документы, созданные с помощью этих шаблонов печати можно редактировать и распечатывать.
Важно: Для создания шаблона в формате xls используется тот же принцип. При создании шаблонов xls для нашей программы рекомендуем использовать Excel версии не ниже 2007.
Важно: На данный момент значения из подтаблиц могут некорректно отображаться в версии Microsoft Office 2013. Если Вы столкнулись с такой проблемой, попробуйте открыть сформированный файл в другом текстовом редакторе (например, Libre Office или Open Office).
Важно: В шаблонах печати Excel можно использовать только изображения в формате "png", "jpg", в противном случае изображения при печати выводиться не будут!
Важно: Если у вас возникнут вопросы по использованию функций Excel, рекомендуем почитать варианты решения, воспользовавшись поиском в справке по Excel на сайте Microsoft.
Сохраните документ, но не закрывайте – в дальнейшем нам еще нужно будет его редактировать. Вы также можете скачать шаблон любого Excel документа из интернета. Возьмем, для примера, счет на оплату.
Теперь в программе "Клиентская база" перейдем в "Настройки" —> "Конфигурация".
Выберите категорию "Счета", затем перейдите в таблицу "Счет". Перед вами отобразится окно с настройками, здесь нажмите на кнопку "Шаблоны печати".
После загрузки файла появится ссылка "Скачать файл". При нажатии на нее будет скачан последний загруженный файл. Также появятся новые поля "Название поля", "Ориентация", "Размер страницы", "Мультистраничный шаблон"
Название файла — Название файла документа при его сохранении. В название файла можно внедрять переменные полей по аналогии с телом шаблона html. Например, «Счет № {Номер счета}» будет сохранен как «Счет № 10», если значение поля «Номер счета» в текущей записи равно 10.
Нужно в нашем файле Excel разместить переменные полей в тех местах, куда должны подставляться значения из базы. Для этого в окне "Создание шаблона" есть список всех полей, которые можно разместить в шаблоне. Копируем из списка название поля целиком, включая фигурные скобки, и вставляем в Excel файл в нужное место. Удобно это делать, нажав на иконку справа от переменной.
Обратите внимание: Вы можете использовать поля не только из текущей таблицы, например {Номер счета}, но и любые поля из связанных таблиц - они пишутся через точку, например, {На кого.Название}.
Важно: Задайте ячейкам нужный формат, чтобы Excel корректно отображал данные. Например, ячейкам, в которых должен выводиться ИНН или КПП, лучше задать текстовый формат, т.к. Excel может воспринять номер ИНН как слишком большое число и выводить его некорректно.
Примечание: Для шаблонов .xls можно задать ориентацию и размер страниц. Выберем ориентацию страниц шаблона: альбомную или книжную. Зададим размер страницы нашего шаблона, выбрав его из предустановленных.
Если нужно печатать многостраничные шаблоны, отметим опцию "Мультистраничный шаблон"
Нажимаем на кнопку "Сохранить".
Примечание. В целях безопасности редактировать шаблоны печати Excel могут только пользователи с правами администратора.
Распечатать в программе можно несколькими способами. Например, переходим в таблицу, выбираем запись. В режиме просмотра нажимаем кнопку "Распечатать". Или находясь в таблице отмечаем галочками одну или несколько нужных записей, а затем нажимаем на кнопку "Распечатать" на верхней панели.
Далее выбираем нужный шаблон печати.
По умолчанию, имя файла совпадает с названием шаблона печати. Данный файл будет сохранен на вашем компьютере в той папке, которая указана для вашего браузера, как папка для загружаемых файлов. Всё, документ готов. Можно его открыть и убедиться, что в нем проставлены значения полей из базы.
Используя наш список переменных, вы также можете свободно работать с данными из подтаблиц. Это часто бывает нужно при печати бухгалтерских документов, где используются позиции актов, позиции счетов и т. д. В случае если вы будете использовать в шаблоне переменные из подтаблицы, которая содержит несколько строк, то все значения, соответствующие основной записи при печати будут вставлены автоматически. Вот так будет выглядеть счет со скидками, распечатанный вместе с позициями:
Шаблоны печати, созданные в формате xls, могут иметь проблемы с отображением в новых версиях Microsoft Office Excel версий старше 2007.
Если вы столкнулись с такой проблемой:
откройте скачанный шаблон в Microsoft Office Excel
Щелкните по розовой плашке.
Следуя инструкциям отключите флажок "Включить защищенный режим для файлов из Интернета".
Сохраните изменения в файле.
Заново загрузите файл в шаблон печати и нажмите на "Сохранить".
Либо создайте новый шаблон печати в программе, выбрав формат xlsx (Excel версии от 2007) и сохраните его. Настройки шаблона формата xlsx идентичны настройкам шаблонов xls.
Шаблоны полей, условия, функции в ячейки xlsx-файла нужно вставлять в фигурных скобках, например, {Наша компания.Адрес}. Внутри фигурных скобок можно использовать круглые скобки, например, {(Сумма*(1+Наша компания. Ставка НДС/100))}
ПрописьюДата(Дата) - предназначена для вывода даты прописью. Например: Если поле "Дата" имеет значение "21.11.23", функция Прописью(Дата) будет возвращать значение "21 ноября 2023г".
ПрописьюМесяц(Дата) - предназначена для вывода месяца прописью. Например: Если поле "Дата" имеет значение "21.11.23", функция ПрописьюМесяц(Дата) будет возвращать значение "ноября".
ДатаЧисло(Дата) - возвращает значение числа. Например: Если поле "Дата" имеет значение "21.11.23", функция ДатаЧисло(Дата) будет возвращать значение "21".
ДатаМесяц(Дата) - возвращает значение месяца. Например: Если поле "Дата" имеет значение "21.11.23", функция ДатаМесяц(Дата) будет возвращать значение "11".
ДатаГод(Дата) - возвращает значение года. Например: Если поле "Дата" имеет значение "21.11.23", функция ДатаМесяц(Дата) будет возвращать значение "2023".
ЧислоФормат(Шаблон поля) - возвращает число с двумя знаками после запятой с округлением. Например, ЧислоФормат(3.068) возвращает 3,07.
ЧислоФормат(Шаблон поля,n) - возвращает число с n-знаками после запятой с округлением. Например, ЧислоФормат(3.068,1) возвращает 3,1.
ЧислоФормат(Шаблон поля,n,1) - возвращает число с n-знаками после запятой с округлением и с разделением разрядов. Например, ЧислоФормат(35200.068,2,1) возвращает 35 200,07.
ПрописьюРублей(Шаблон поля) - возвращает значение числа прописью в рублях и копейках. Например, ПрописьюРублей(3.068) возвращает "три рубля 07 копеек".
ПрописьюРублей(Шаблон поля,'', 'none') - возвращает значение числа прописью в рублях без копеек. Например, ПрописьюРублей(3.23, '', 'none') возвращает "три рубля".
_ИмяПодтаблицы.НомерСтроки - возвращает значение номера строки в подтаблице. Например, если нужно вывести в табличном виде все строки подтаблицы "Позиции Счета", то в ячейке, в которой должен выводиться номер строки, нужно прописать {Позиции Счета.НомерСтроки}.
_КоличествоСтрок('Имяподтаблицы') - возвращает значение количества строк в подтаблице. Например, если после распечатанных в табличном виде позиций счета необходимо вывести общее количество строк, то в ячейке нужно прописать: Всего наименований {КоличествоСтрок('Позиции счета')}
Кроме того, там где это уместно, можно использовать функции Excel и задавать формат ячеек.
Условия в ячейках xlsx-файла можно добавить с помощью краткой записи условного оператора if php.
Cинтаксис краткой записи условного оператора if:
expression ? true_value : false_value
То есть сначала записываем наше условие, которое нужно проверить, затем ставим вопросительный знак, после этого то значение, которое должно быть подставлено, в случае если проверка прошла успешно и условие выполнилось, потом двоеточие и то значение, которое должно быть подставлено, если условие не выполнилось. Все выражение заключается в скобки фигурные и круглые.
Например:
{(Наша компания.Ставка НДС && Наша компания.НДС включен в стоимость == 'Да'?(Позиции счет-фактуры.Цена*(1-(Наша компания.Ставка НДС/(100+Наша компания.Ставка НДС)))):Позиции счет-фактуры.Цена)}
В программе "Клиентская база" есть возможность печати многостраничных документов. Для создания такого шаблона нужно проделать те же действия, которые описаны выше в пункте "Создание шаблонов печати на основе документа Excel". Однако документ, который необходимо будет подготовить перед созданием шаблона будет иметь другой вид:
Нужно добавить в шаблон четыре новых листа, чтобы общее количество листов в документе составило 5.
Лист №1 - это лист, где будет содержаться тело шаблона. Назовем его, например, "Body";
Лист №2 - это лист, где будет указываться общий заголовок всего документа. Назовем его "Header";
Лист №3 - это лист, где будет указывается общий подвал шаблона. Назовем его "Footer";
Лист №4 - это лист, где будет указываться заголовок отдельно взятой страницы. Назовем его "Table header";
Лист №5 - это лист, где будет указываться подвал отдельно взятой страницы. Назовем его "Table footer".
Важно: Порядок листов, указанных здесь нарушать нельзя. это приведет к некорректной печати шаблонов.
Распределим все данные по листам шаблона. После распределения, загрузим шаблон обратно в программу и на выходе мы получим шаблон, скомпонованный из листов документа. Например, компоновка при печати шаблона на два листа будет происходить следующим образом:
Лист №2
Лист №4
Лист №1
Лист №5
Лист №4
Лист №1
Лист №5
Лист №3
или так
Header;
Table header;
Body;
Table footer;
Table header;
Body;
Table footer;
Footer.
При добавлении такого шаблона, состоящего из пяти листов, необходимо проставить галочку в графе "Мультистраничный шаблон" для корректного отображения документа при печати.
Давайте разберем создание сложного многостраничного документа на примере шаблона ТОРГ-12. Мы хотим, чтобы при печати накладной она выглядела следующим образом:
Теперь нам нужно разделить этот документ на части: заголовок документа, окончание (подвал) документа, его основная часть (тело шаблона), а также заголовок и подвал таблицы, которая будет повторяться на нескольких страницах документа (перечень позиций накладной).
Итак, в качестве заголовка документа мы отмечаем то, что будет в начале первой страницы документа и больше нигде повторяться не будет. Шаблон этой части должен быть расположен на листе №2 — Header.
В качестве подвала документа мы выделяем то, что будет в самом конце последней страницы документа. Шаблон этой части должен быть расположен на листе №3 — Footer.
Далее выделяем заголовок таблицы — это та часть, которая должна быть напечатана на каждой странице документа, содержащей данные. То есть, если у нас будет много позиций по накладной, то часть из них будут перенесены на вторую страницу, в начале которой тоже должен стоять заголовок таблицы с названиями столбцов. Шаблон этой части должен быть расположен на листе №4 - Table header.
Теперь давайте посмотрим на окончание (подвал) таблицы (на рисунке выделен фиолетовый цветом), которая должна быть также на каждой странице, но в отличие от заголовка располагаться не до, а сразу же после основной части. В примере с шаблоном печати по форме ТОРГ-12 это одна строка итога. Шаблон этой части должен быть расположен на листе №5 - Table footer.
Затем обратим внимание на ту часть, которая является основной. В нашем примере - это непосредственно сами позиции накладной. На каждой странице эти данные будут обрамлены сверху той частью, которая помещена в лист "Table header", а снизу той частью, которая размещена в листе "Table footer". Шаблон этой части должен быть расположен на листе №1 - Body. Данные из этой части дублироваться не будут.
Примечание: Указанные названия для листов в файле шаблона выбраны для удобства, вы можете их переименовать, если это необходимо. На печать шаблона это не повлияет.
В сложных многостраничных шаблонах используются несколько дополнительных функций, связанных с особенностями суммирования не по всему документу, а по конкретной странице. Так же как и для обычных функций в Excel шаблонах данные функции нужно вставлять в фигурных скобках, внутри фигурных скобок можно использовать круглые скобки.
Печать.СтрНомер — предназначена для вывода номера страницы документа.
CуммаПоПолюНаСтраницеМинусНДС(Сумма,Отправитель.НДС включен в стоимость,Отправитель.Ставка НДС) — предназначена для вывода суммы по столбцу данных за вычетом НДС, считает сумму для конкретной страницы.
Сумма - название поля, по которому необходимо посчитать сумму;
Отправитель.НДС включен в стоимость - название поля, в котором содержатся данные о том включен НДС в стоимость или нет, по нему система определяет нужно ли вычитать из суммы ставку НДС;
Отправитель.Ставка НДС - название поля со значением ставки НДС в процентах, необходимо для подсчета и вычета.
CуммаПоПолюНаСтраницеНДС(Сумма,Отправитель.НДС включен в стоимость,Отправитель.Ставка НДС) — предназначена для вывода суммы НДС по значениям на конкретной странице.
Сумма - название поля, по которому необходимо посчитать сумму
Отправитель.НДС включен в стоимость - название поля, определяющее вычитать ли сумму НДС из стоимости (должно быть Да или Нет), если он включен или если НДС не включен в стоимость, то сумма должна остаться неизменной.
Отправитель.Ставка НДС - название поля со значением для вычета в процентах
CуммаПоПолюНаСтранице(Сумма) — предназначена для вывода суммы по выбранному полю
Сумма - название поля, по которому необходимо посчитать сумму
Примечание: Функции, которые считают суммы по странице нельзя помещать в какой-либо другой лист, кроме Листа № 5 — Table footer.
Давайте разберем их применение также на примере ТОРГ-12:
Примечание: Если необходимо добавить шаблон печати, в котором на каждой странице документа будут повторяться верхняя (заголовок) и нижняя (подвал) части, то в файле шаблона достаточно оставить три листа: Лист №1 — Body, Лист №2 — Header и Лист №3 — Footer. Однако, в таком шаблоне нельзя использовать функции расчета по странице. Теперь если включить параметр "Разрыв строк", то в случае многостраничного документа шапка и подвал будут напечатаны на каждой странице. Если параметр "Разрыв строк" не включить, то шапка будет только на первом листе, а подвал только на последнем.