1с распечатать документ на двух языках
В массе своей, в прикладных задачах нужно вывести на печать какие-либо данные оформленные нужным образом (например, счет, торговую накладную, акт сверки и т.п.). Для вывода на печать в 1С 8.3. можно использовать табличные документы. В предыдущей статье я показал, как создать макет табличного документа и как правильно его оформить. Нам осталось научиться заполнять его данными и выводить на просмотр для последующей печати. Материал по выводу табличного документа на печать, я решил разбить на две части. В первой части мы разберем простой пример (я бы назвал его учебным), а во втором случае реализуем пример приближенный к реальному. Эта статья — первая часть, в ней мы реализуем простой пример: будем выводить табличный документ на печать, используя команду управляемой формы. Этот вариант имеет следующий недостаток: нельзя вывести печатную форму из списка документов, можно это сделать, только открыв форму документа. Для того, чтобы можно было вывести печатную форму из списка документов, необходимо создать команду документа. Этот вариант мы рассмотрим в следующей статье.
И так, сам макет документа мы уже создали, как это сделано, вы можете узнать в соответствующей статье.
Сейчас мы получим ранее созданный макет, заполним табличный документ 1С по этому макету, и нам останется вывести табличный документе 1С на просмотр для последующей печати.
Мы сделаем упрощенный (учебный) вариант: формирование всего нашего табличного документа будет осуществляться на модуле управляемой формы. Для этого мы на форме документа создадим команду «ПечатьДокумента», которую разместим в командной панели формы.
Для команды ПечатьДокумента создадим два обработчика в клиентском и серверном контексте.
Серверный обработчик переименуем в функцию, в нем мы создадим программно табличный документ 1С, который она и будет возвращать.
Теперь нужно получить макет, созданный в предыдущей статье, для этого мы будем использовать метод менеджера документа ПолучитьМакет.
Имейте в виду, что метод ПолучитьМакет напрямую доступен только или в модуле документа, или в модуле менеджера документа. Еще этот метод можно применить, используя менеджер конкретного объекта, как я сделал выше. Непосредственно на форме его использовать нельзя!
Алгоритм заполнения табличного документа будет следующим: мы будем получать нужную область макета, если необходимо заполнять эту область какими-нибудь данными, а потом выводить полученную область в табличный документ.
Напомню, что макет у нас имеет четыре области: Шапка, ШапкаТаблицы, СтрокаТаблицы, Подвал. Области Шапка, ШапкаТаблицы и Подвал будут выведены в табличный документ всего один раз, а область СтрокаТаблицы будет выведена столько раз, сколько строк в табличной части обрабатываемого документа.
Весь код ниже я выполняю между кодом получения макета и возвратом табличного документа.
Получим самую первую область макета, при помощи метода ПолучитьОбласть, где в качестве параметра следует указать название получаемой области.
В этой области мы используем шаблон, в котором имеются два параметра: НомерДок и ДатаДок передадим номер документа и дату документа в соответствующие параметры области, используя свойство Параметры нужной нам области. Данное свойство содержит коллекцию параметров табличного документа, и мы можем обращаться к нужному параметру через оператор «.».
Мы закончили с областью Шапка, и нам нужно вывести её в табличный документ, делается это при помощи метода Вывести табличного документа, где в качестве параметра указывается выводимая область.
Точно также получим область, которая соответствует шапке таблицы, заполнять его не нужно, а мы просто выведем его сразу же в табличный документ.
Следующим шагом выведем область СтрокаТаблицы, причем эта область должна быть выведена столько раз, сколько строк в табличной части документа. Поэтому мы сначала получим эту область, а потом циклом будем обходить табличную часть, заполнять параметры области и выводить область в табличный документ.
В коде выше, мы обошли табличную часть документа, обратившись к ней через основной реквизит Объект управляемой формы (основной формы документа).
Обратите внимание, я использовал метод Заполнить, потому что названия параметров макета совпадают с названиями реквизитов табличной части документа.
Нам осталось получить область Подвал и вывести её в табличный документ.
На этом мы закончим работать с функцией на сервере, весь ее код будет выглядеть следующим образом.
Нам осталось доделать клиентскую процедуру ПечатьДокумента: мы будем выводить на просмотр полученный табличный документ при помощи метода табличного документа Показать().
В качестве первого параметра метода Показать, я указал название, которое выйдет на форме табличного документа.
Проверим, как работает наш код.
Напомню, что я рассмотрел самый простой (учебный) пример вывода печатной формы, следующие примеры будут более приближенные к реальным.
Более подробно и основательно разработка в 1С дается в моей книге: «Программировать в 1С за 11 шагов»
Изучайте программирование в 1С в месте с моей книги «Программировать в 1С за 11 шагов»
- Книга написана понятным и простым языком — для новичка.
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Научитесь понимать архитектуру 1С;
- Станете писать код на языке 1С;
- Освоите основные приемы программирования;
- Закрепите полученные знания при помощи задачника;
О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
Одной из задач в рамках проекта «Доминикана» является обеспечение многоязычности системы в самом широком понимании этого слова. Хочу выделить и обсудить с сообществом некоторые аспекты, связанные с этой темой.
Здесь основные трудности скорее не технологического, а методологического плана – как понять контекст переводимой фразы, как организовать работу переводчика, как обеспечить корректный и единообразный перевод специальной терминологии и т.д.
Очевидно, что соблюсти все эти требования одинаково полно невозможно, поэтому надо искать разумный компромисс. Так, например, гибкость и простоту поддержки обеспечивает реализация механизма с помощью регистров сведений, но это на корню убивает производительность системы, или, наоборот, создание доп. реквизитов объекта метаданных для каждого языка данных обеспечивает хорошую производительность, но плохую гибкость.
Ниже приведу один из возможных способов такого компромисса, с уточнениями по каждому из этих пунктов (к публикации прикреплена база с конфигурацией, в которой можно посмотреть описываемую реализацию)
1) Производительность – для обеспечения этого показателя, для каждого объекта метаданных, который поддерживает многоязычность, добавлен дополнительный строковый реквизит, в котором хранится сериализованная структура представления разных реквизитов на разных языках. В обработке получения полей представления менеджера объекта, данный реквизит добавляется в список полей представления.
Представление реквизита на языке, который является основным в базе хранится непосредственно в самом реквизите. Если в представление входят многоязычные реквизиты и текущий язык данных не является основным для базы, то данные по берутся из десериализованной структуры представления многоязычных реквизитов.
Для обеспечения производительности подбора элемента на разных языках (а также для взаимодействия с разноязычными представлениями в запросах) в объект метаданных добавлена специальная табличная часть с индексацией по реквизиту «Представление».
2) Гибкость – набор языков данных хранится в справочнике, набор представлений на разных языках сохраняется перед записью объекта в специальные табличную часть и реквизит. Дополнительные реквизиты формы, визульно отображающие многоязычные строковые реквизиты на текущем языке, создаются интерактивно на форме при разработке объекта, по определённым правилам (отказ от программного добавления позволяет кастомизировать визуальное представление многоязычных реквизитов под каждый объект). Для удобного доступа к реквизитам на разных языках в отчётах в пользовательском режиме подключён механизм характеристик (видами характеристик являются пары «Язык» + «Имя реквизита», объединённые в единый ссылочный ключ, а значением – представление). Ограничение текущей реализации – набор строковых реквизитов для которых требуется поддержка многоязычности закладывается при разработке объекта метаданных и жёстко зашит в коде.
3) Простота поддержки – при разработке объекта метаданных с поддержкой многоязычности, определяется обязательный набор реквизитов и процедур, которые он должен содержать, вся логика процедур, обеспечивающая механизм, выносится в универсальные общие функции, в модулях объекта происходит только их вызов с нужными параметрами. Спец. реквизиты формы, необходимые для поддержки механизма, добавляются при создании формы программно, если не требуется их визуального отображения на форме (см. пункт 2).
4) Опциональность механизма – в системе создана функциональная опция «Поддерживать многоязычность данных», если она выключена, то обращение к процедурам механизма многоязычности не происходит, все события отрабатывают стандартным образом, данные по представлению берутся непосредственно из реквизитов.
Мультиязычность данных можно рассмотреть и под другим углом: система должна говорить с пользователем не только на одном языке, но и понятными ему терминами. Отсюда вытекает новая задача - заложить в систему механизмы обеспечивающие поддержку профессионального сленга данных.
Поясню, что имеется в виду на примере:
Выводы
Т.о. на многоязычность системы можно смотреть с разных точек зрения, в комментариях предлагаю обсудить бизнес потребности в таких механизмах и их техническую реализацию.
Настройка 2-х сторонней печати позволяет печатать отчеты и печатные формы документов из 1С на обеих сторонах листа, что очень удобно. По умолчанию в 1С настроена односторонняя печать и пользователи часто задают вопрос: как и где это можно изменить?
Подскажите, как можно настроить печать 2-й стороны документа? При печати авансового отчета 1С печатает два листа вместо одного! Не могу напечатать на оборотной стороне. Помогите!
Для использования 2-х сторонней печати требуется выполнения двух условий:
- У принтера должна быть предусмотрена печать листа с двух сторон. Если такой возможности нет — настроить в 1С 2-х стороннюю печать не получится.
- В настройках печати 1С должна быть выставлена 2-х сторонняя печать.
Самый удобный способ настройки 2-х сторонней печати — через настройку Параметров страницы .
Вызов настройки различается для:
Выполненная настройка сохраняется после перезапуска 1С.
Двусторонняя печать для документов
В печатной форме документа реализована возможность настраивать печать через специальную форму предварительного просмотра. Рассмотрим пошаговую инструкцию.
Шаг 1. Вызов формы предварительного просмотра
Сформируйте печатную форму документа. Для настройки 2-х сторонней печати нажмите на кнопку предварительного просмотра документа перед печатью («лупа»).
Шаг 2. Вызов настройки параметров страницы
В форме предварительного просмотра нажмите на кнопку настройки Параметров страницы («перекрещивающиеся стрелки») для перехода в форму настройки печати.
Шаг 3. Установка 2-х сторонней печати
В форме параметров страницы переключите значение параметра Двусторонняя печать со значения Нет на одно из двух (как вам удобно):
Шаг 4. Сохранение настройки
Нажмите на кнопку ОК в форме настройки. Настройка 2-х сторонней печати для документа закончена!
Двусторонняя печать для отчетов
В форму отчетов настройка параметров страницы не вынесена, поэтому настройка 2-х сторонней печати будет идти из Главного меню программы. Рассмотрим пошаговую инструкцию.
Шаг 1. Вызов настройки Параметров страницы
Сформируйте отчет. Для вызова настройки печати воспользуйтесь общей командой Параметры страницы : кнопка Главное меню – Файл – Параметры страницы .
Шаг 2. Установка 2-х сторонней печати
В форме параметров страницы переключите значение параметра Двусторонняя печать со значения Нет на одно из двух (как вам удобно):
Шаг 3. Сохранение настройки
Нажмите на кнопку ОК в форме настройки. Настройка 2-х сторонней печати для документа закончена!
Ответы на вопросы
А теперь ответы на блиц-вопросы, чтобы закрепить и дополнить данный материал.
На рабочем месте стоит принтер HPLaserJetMFP, который поддерживает 2-х стороннюю печать. Принтер отлично печатает из всех приложений, но только не в 1С. И что не так?
Проверьте перед печатью настройку принтера в 1С: в параметрах страницы должна быть указана настройка двусторонней печати.
У меня не работает 2-х сторонняя печать, хотя в параметрах страницы все выставлено верно. С чем это может быть связано?
Проверьте Платформу, на которой работает программа.
2-х сторонняя печать не работает на Платформе 8.3.8.2054: код ошибки 10167935. Начиная с Платформы 8.3.10, ошибку исправили. Команда отлично работает на Платформах:
А можно настроить 2-х стороннюю печать так, чтобы новые документы начинались с новой страницы, а не печатались подряд.
Нет. Настройка отлично работает только когда мы выводим на печать одну печатную форму одного документа или распечатываем один отчет. А когда их несколько — например, если мы печатаем сразу два и более документа, то второй документ начинает печататься на обратной стороне листа первого документа, если тот содержит нечетное количество страниц.
В этом случае требуется доработка печати комплекта документов программистом 1С.
Помогла статья?
Получите еще секретный бонус и полный доступ к справочной системе БухЭксперт8 на 14 дней бесплатно
Похожие публикации
-
У вас нет доступа на просмотр Чтобы получить доступ:Оформите коммерческую.Печать штрихкодов в 1С осуществляется через компоненту 1C:Печать штрихкодов. Если компонента...
(6 оценок, среднее: 5,00 из 5)
Публикацию можно обсудить в комментариях ниже.
Обратите внимание!
В комментариях наши эксперты не отвечают на вопросы по программам 1С и законодательству.
Задать вопрос нашим специалистам можно в Личном кабинете
Добавить комментарий Отменить ответ
Для отправки комментария вам необходимо авторизоваться.
Вы можете задать еще вопросов
Доступ к форме "Задать вопрос" возможен только при оформлении полной подписки на БухЭксперт8
Нажимая кнопку "Задать вопрос", я соглашаюсь с
регламентом БухЭксперт8.ру >>
Изменения в 2022 году, о которых нужно знать бухгалтеру
6-НДФЛ за 1 квартал 2022 в 1С
Санкции и контрмеры: как работать организации и ее бухгалтеру в новой реальности. Часть 2
Учет малоценных ОС и запасов (ОСН)
Отчетность за 1 квартал 2022
Спасибо большое! Как всегда,бесподобный вебинар с исчерпывающими ответами для нас «бедных» бухгалтеров! Всем лекторам благодарность.
Чаще всего в документах распечатанных из программы 1С да и не только, окончательная сумма прописывается прописью. С одной стороны это никак не регламентируется но для всех документов является обязательным, сначала сумму прописывают цифрами а потом прописью. Это касается практически всех документов, договоров, счет факту, Актов и т.д. В 1С реализовать вывод суммы прописью очень просто, можно даже написать её на разных языках.
Как в 1С сделать сумму прописью в печатной форме
Для примера я возьму документ «Поступление» у которого есть печатная форма, следующего вида, в конец выводиться итоговая сумма документа. Давайте сделает так чтобы она выводилась прописью с копейками.
Так как у меня данный макет сформирован с помощью конструктора печати, мне необходимо открыть процедуру «Печать» и изменить формат вывода параметра «Сумма Документа». Для этого необходимо дописать вот такую строку в раздел вывода и заполнения подвала.
Подвал.Параметры.СуммаДокумента = ЧислоПрописью(Выборка.СуммаДокумента, ,»рубль, рубля, рублей, м, копейка, копейки, копеек, ж»);
Сохраняем и проверяем что получилось, видим что итоговая сумма документа теперь выводиться прописью с копейками.
Если у вас цена например в долларах то тогда пишем вот так.
Теперь итоговая сумма прописью будет выглядеть следующим образом.
Можно также реализовать вывод итоговой суммы на другом языке например английском.
Подвал.Параметры.СуммаДокумента = ЧислоПрописью(Выборка.СуммаДокумента,»L=en_US»,»dollar, dollars, cent, cents, 2″);
Язык можно изменить на любой например, белорусский be_BY, французский fi_FI или казахский kk_KZ.
Как видите все достаточно просто, если нужна более подробная информация то её можно найти в синтаксис помощнике.
В некоторых случаях на документах должна быть нумерация страниц, например, в договорах. В 1С добавить её достаточно просто. Это можно сделать как в типовых конфигурациях так и в самописных. Вариантом добавления два используя графическую оболочку конфигуратора и программно. Сегодня рассмотрим оба варианта, так же добавим нумерацию в типовую конфигурацию УТ.
Нумерация страниц при печати Табличного документа 1С
Для начала я покажу на простом примере, возьму конфигурацию из прошлых статей, в которой есть документ «Поступление» и простая печатная форма. Для того чтобы добавить нумерацию страниц необходимо зайти в конфигуратор, открыть нужный документ, в нашем случае «Поступление» перейти во вкладку «Макеты» и открыть сам макет.
Далее на панели инструментов заходим в «Таблицы» далее выбираем пункт «Настройка печати» и «Колонтитулы».
В открывшемся окне можно выбрать расположение нумерации, сверху снизу, слева справа или по центру а так же указать необходимый шрифт и номер первой страницы. Для того чтобы просто выводился номер текущей страницы пишем следующий код.
Не забудьте отметить пункт «Выводить с».
Для того чтобы отображался не просто номер а еще и общие количество страниц документа, можно написать следующие.
В результате в печатной форме будет показываться номер текущей станицы и общие количество, лучше использовать этот вариант для документов, тех же договор.
Добавление нумерации в типовой конфигурации 1С
Давайте теперь посмотрим как добавить нумерацию в типовую конфигурацию. Я возьму для примера «Управление торговлей, редакции 11» и документ «Авансовый отчет». Делаем все тоже самое открываем конфигуратор, ищем нужный документ и открываем макет.
Далее открываем «Колонтитулы» и пишем то же самое.
И проверяем что получилось.
Как видим нумерация добавилась.
Программное добавление нумерации страниц в 1С
Для того чтобы добавить нумерацию страниц программно нужно сделать следующие. Зайти в конфигуратор, найти нужный документ открыть процедуру «Печать» которая находиться в «Модуле менеджера» и дописать код.
В качестве примера поменяем расположение нумерации и сделаем её в правом верхнем углу, а в левый добавим вывод текущей даты.
Сохраняем и проверяем что получилось.
Возможностей настройки внешнего вида и расположения очень много с этим думаю Вы уже разберетесь сами. Эти основы должен знать каждый начинающий 1С программист, их вполне достаточно для решения задач по дополнению нумерации на страницы.
Нумерация страниц в 1С : 2 комментария
Добрый день! Спасибо Вам большое за статью, все очень доходчиво рассказали!)
Читайте также: