1с нет информации для вывода на печать 1с
Привет всем! В данной статье предлагаю рассмотреть методы вывода макета на печать любых документов (собственных или типовых) с помощью актуальной библиотеки стандартных подсистем (БСП). Данный небольшой обзор поможет снять вам вопросы типа "как прицепить макет печати к собственному документу или справочника?" или "как разместить кнопку печать на форме списка и форме документа или справочника". На момент написания статьи - середина февраля 2021 года - точка актуальности - это БСП версии 3.1.4.148.
Для кого-то этот материал не новшество, но отмечу, что данная статья будет полезна специалистам, желающим использовать последние возможности библиотеки стандартных подсистем в методах вывода на печать. Хорошо известно, что подсистема БСП постоянно меняется и усовершенствуется, и я могу сказать определенно, что старые методы и алгоритмы вывода на печать макетов печатных форм документов и справочников уже будут вряд ли применимы в современных конфигурациях на последних БСП.
Подготовка и настройка собственного документа конфигурации для использования в подсистеме печати в системе БСП.
Начнем с простого создания документа ТестоваяПечатьДокументов в конфигурации на БСП. В качестве конфигурации я беру чистую библиотеку стандартных подсистем версии 3.1.4.148. Разработка ведется на Платформе 1с 8.3.18.1208.
Основным и главным моментом после создания собственного документа будет необходимость прописать данный документ в общем модуле - процедуре УправлениеПечатьюПереопределяемый.ПриОпределенииОбъектовСКомандамиПечати(СписокОбъектов) Экспорт
выглядит это вот так:
ПриОпределенииОбъектовСКомандамиПечати(СписокОбъектов) ЭкспортДалее, что нам потребуется. Создаем 2 формы в документе ТестоваяПечатьДокументов - это "ФормаСписка" и "ФормаДокумента". В каждой из этих форм создаем и привязываем процедуру ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
выглядит она вот так:
Далее, для "формы списка" добавляем внутренние БСП подключаемые процедуры:
"ФормаСписка" в документе "ТестовыйДокумент"А для "формы документа" добавляем вот такие внутренние БСП подключаемые процедуры:
"ФормаДокумента" в документе "ТестовыйДокумент"Хочу отметить, что данные процедуры я копирую из типовых документов БСП - их будет достаточно, чтобы активировать кнопку системы печати на формах документа. Ничего лишнего добавлять не нужно.
Далее, заполним модуль менеджера нашего документа. Напишем в нем такой код:
Здесь функция - ПечатнаяФормаТестовогоДокумента(МассивОбъектов, ОбъектыПечати) - формирует заполненный макет печатной формы и возвращает пользователю.
Процедура - Печать(МассивОбъектов, ПараметрыПечати, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт - типовая процедура печати БСП.
Тут нет ничего сложного, но особое внимание хочу обратить на вот эту процедуру добавления команд
Открываем код БСП и смотрим какие возможности предоставляет нам функция УправлениеПечатью.СоздатьКоллекциюКомандПечати() - она используется для "наполнения" объекта КомандыПечати(). Возможности широчайшие:
Как мы видим, основные параметры - Идентификатор, Представление. Остальные являются необязательными.
Правильно разместив вышеуказанный код в конфигурации вы получите необходимый результат - вывод кнопки "Печать" для формы документа и формы списка для документа ТестоваяПечатьДокументов.
Перейдем к разделу заключений и выводов по данной статье.
Заключение и выводы
В данной статье мы рассмотрели основной алгоритм БСП для размещения команд печати на любых документах конфигурации, в основе которой лежит современная библиотека стандартных подсистем. Напомню, что разработка примера велась на "чистой" библиотеке стандартных подсистем версии 3.1.4.148 и Платформе 1с 8.3.18.1208.
Ну и конечно, знание данных методов позволит вам ускорить разработку и доработку любых типовых конфигураций 1с (БУХ, ЗУП, Розница, УНФ и т.п. ), основой которых является библиотека стандартных подсистем. И самое главное - это правильно и по стандарту профессиональных разработчиков.
Другие мои материалы по БСП
Так же прошу ознакомиться с другими моими статьями по функционалу библиотеки стандартных подсистем и типовым конфигурациям:
Большинство обучающих материалов по программированию в системе 1С при описании формирования печатных форм на основе объекта «Табличный документ» ограничиваются выводом готовой формы на экран. Для пользователей же куда более важным является то, как документ будет выглядеть в распечатанном виде. Здесь, кроме хорошо сверстанного макета, играют роль и установки параметров печати.
Почти все параметры, доступные в диалогах настройки печати (настройки принтера, свойства страницы), можно указать непосредственно при формировании табличного документа.
Рассмотрим свойства и методы табличного документа, относящиеся к настройкам печати (в приведенных примерах «ТабДок» это объект типа «Табличный документ»).
Свойство «ИмяПринтера» позволяет задать для печати принтер, отличный от установленного по умолчанию. Имя должно совпадать с именем принтера, заданным в системе:
ТабДок . ИмяПринтера = "HP LaserJet 3050 Series PCL 6" ;
При печати пакета документов можно сэкономить время, установив признак разбора по копиям:
ТабДок . РазборПоКопиям =истина;
Число копий можно указать так:
ТабДок . КоличествоЭкземпляров = 5 ;
Разумеется, можно задать поля:
ТабДок . ПолеСлева = 20 ; //Поле слева 20мм, остальные поля 10мм (по умолчанию)
Еще несколько свойств страницы:
При необходимости можно указать конкретное значение масштабирования в процентах (свойство «МасштабПечати»).
Для нестандартного размера бумаги (Custom) можно указать значения высоты и ширины страницы (в мм):
Также в табличном документе доступно управление выводом колонтитулов и их содержимым. Для этого служат свойства «ВерхнийКолонтитул» и «НижнийКолонтитул». Например:
Сформированный документ отправляется на печать с помощью метода «Напечатать()». Возможно два варианта вызова.
1) Непосредственно на принтер:
ТабДок . Напечатать ( РежимИспользованияДиалогаПечати . НеИспользовать );
ТабДок . Напечатать (истина);
2) Перед печатью будет выведен диалог печати:
ТабДок . Напечатать ( РежимИспользованияДиалогаПечати . Использовать );
ТабДок . Напечатать (ложь);
Кроме того можно управлять и разбиением документа на страницы. Оценить количество страниц в документе по настройкам текущего принтера можно так:
С помощью методов «ПроверитьВывод()» и «ПроверитьПрисоединение()» можно определить, умещается ли табличный документ или массив областей табличного документа на странице в высоту и в ширину при текущих настройках принтера.
Надо иметь ввиду, что работа последних трех методов зависит от установленного принтера. Если методу не удается его найти, вызывается исключение.
Таким образом, можно управлять постраничным выводом на печать и контролировать заполнение страницы:
Важной характеристикой платформы «1С:Предприятие 8.2» является строгое разделение свойств и методов по контексту исполнения. Если все приведенные выше свойства доступны в любом контексте, то перечисленные методы недоступны на тонком клиенте. Исключением является метод «Напечатать()», доступность которого по понятным причинам ограничена клиентской частью. Это означает, что формирование табличного документа должно происходить на сервере, а отправлять его на печать следует в клиентской процедуре.
основном все информационные материалы по программированию в 1С при описании создания печатных форм на основе "Табличный документ" ограничиваются простым выводом готовой формы документа на экран. Но этого не всегда достаточно, и на много важнее то, как этот документ будет выглядеть в распечатанной форме на листе бумаги.
Далее будем рассматривать свойства и методы табличного документа, которые непосредственно относятся к настройкам печати. Тут помимо хорошо составленного макета, немаловажную роль играют и сами настройки печати, которые мы меняем в диалоговых окнах. К ним относятся настройки принтера и свойства страницы. Почти все из них можно определить заранее при формировании табличного документа.
Ниже рассмотрим более подробно свойства и методы табличного документа, которые имеют отношение к настройкам печати (В приведенном примере "ТабличныйДок" это объект типа "Табличный документ")
Для того что бы задать принтер для печати, отличный от того, что по умолчанию установлен в системе, используется такое свойство как "ИмяПринтера", причем имя должно полностью совпадать с принтером который установлен в системе:
Можно сэкономить немало времени при печати пакета документов, прописав признак разбора по копиям:
Число копий указывается так:
Также возможно задать поля:
Вот еще несколько свойств страницы, которые нам доступны:
Если необходимо, то используя описание «МасштабПечати» можно указать конкретное значение для масштабирования, измеряемое в процентах.
Помимо этого имеется возможность задать и нестандартные размеры бумаги (Custom). Для этого задаются значения высоты и ширины страницы в миллиметрах:
В дополнение к вышеуказанным свойствам, в табличном документе присутствует возможность управлять выводом на печать колонтитулов и указывать их содержимое. Для этого используются свойства «ВерхнийКолонтитул» и «НижнийКолонтитул»:
1. Непосредственно на принтер
Есть возможность управлять разбиением документа на страницы. Оценка количества страниц в документе относительно настроек текущего принтера выполняется так:
Используя такие методы, как «ПроверитьВывод()» и «ПроверитьПрисоединение()» можно заранее определить, умещается ли документ или массив документов на странице по ширине и высоте относительно текущих настроек принтера.
Стоит обратить внимание, что последние три метода ориентируются на настройки текущего установленного принтера, и если методу не удается его найти, вызывается исключение.
Это позволяет управлять постраничным выводом и контролировать заполнение страницы:
Разделение методов и свойств по контексту исполнения является важной особенностью платформы. Если вышеуказанные свойства доступны в любом контексте, то методы на тонком клиенте не доступны, за исключением метода «Напечатать()» . То есть формирование табличного документа происходит на сервере, а отправляется он при помощи клиентской процедуры.
Разберемся в причинах возникновения этой ошибки. В большинстве случаев она не связана напрямую с 1С и возникает при переустановке сетевого принтера. Для старых версий 1С 7.7 при первой печати из 1С программа записывала информацию о принтере, на который производилась печать в особый каталог реестра:
- Компьютер\HKEY_CURRENT_USER\Software\1C\1Cv7\7.7\Defaults PDF
Поэтому, после замены принтера на новый или переустановке его на другой компьютер, 1С все равно пыталась печатать на старый.
Для новых версий 1С информация о принтере, что использует 1С, берется из каталога реестра:
Правильное «лечение» этой ситуации — правка реестра Windows, где хранятся настройки принтера: прописанный в реестре старый принтер нужно заменить на новый.
Но это может сделать только «подкованный» пользователь. Поэтому прежде чем перейти к корректировке реестра, мы предлагаем выполнить более простую операцию. Выбрать в 1С переустановленный принтер перед запуском печати: кнопка Главное меню — Файл — Печать .
Иногда простого открытия формы печати достаточно, чтобы данные о принтере обновились и дальше печать выполнялась нормально.
Явный выбор принтера можно использовать только в случае, если при просмотре списка доступных принтеров данный принтер показывается. В противном случае придется вернуться к исправлению реестра.
Исправление реестра Windows
В реестре Windows хранится информация о параметрах системы, программ и устройств, которые подключены к компьютеру.
Изменяя реестр, можно нанести системе вред, поэтому, если вам не хватает опыта и знаний, предоставьте выполнение этой операции профессионалу.
Пошаговая инструкция работы с реестром
Шаг 1. Открытие системной утилиты Выполнить.
По кнопке Пуск — Выполнить или комбинации клавиш Win+R запустите системную утилиту Выполнить.
Шаг 2. Запуск встроенного редактора реестра.
В командной строчке наберите команду Regedit и нажмите на кнопку ОК.
Откроется окно редактора реестра.
Шаг 3. Поиск в реестре ветки 1С.
Данные, относящиеся к принтерам будем искать в ветке:
Для этого выберите команду Найти в меню Правка и укажите строку поиска.
Если информация о принтере HP LaserJet 400 MFP M425 dw UPD PS не соответствует действительности, измените ее.
Шаг 4. Корректировка реестра.
Для корректировки реестра вы должны обладать соответствующими правами. Если вы запустили утилиту под системными правами Администратора, то у вас есть возможность редактировать записи реестра. Для этого двойным кликом мышки по строчке в правом окне откройте окно редактирования.
Укажите в поле Значение информацию о новом принтере HP LaserJet 400 MFP M425dn UPD PS и нажмите на кнопку ОК.
Результат операции должен выглядеть так.
Исправление реестра часто помогает решить подобную проблему.
Если вы решите исправлять реестр, помните, что при некорректном выполнении операции это может привести к ошибкам в работе системы. Поэтому предварительно не поленитесь создать резервную копию реестра, чтобы можно было восстановить его, если что-то пойдет не так.
Обращаем внимание, что операционная система Windows и программа 1C постоянно обновляются, поэтому будут возникать новые причины появления этой ошибки у сетевых принтеров и принтеров, установленных на сервере.
Помогла статья?
Получите еще секретный бонус и полный доступ к справочной системе БухЭксперт8 на 14 дней бесплатно
Похожие публикации
-
У вас нет доступа на просмотр Чтобы получить доступ:Оформите коммерческую.У вас нет доступа на просмотр Чтобы получить доступ:Оформите коммерческую.У вас нет доступа на просмотр Чтобы получить доступ:Оформите коммерческую.У вас нет доступа на просмотр Чтобы получить доступ:Оформите коммерческую.
Карточка публикации
(4 оценок, среднее: 3,00 из 5)
Данную публикацию можно обсудить в комментариях ниже.Обратите внимание! В комментариях наши кураторы не отвечают на вопросы по программам 1С и законодательству.
Задать вопрос нашим специалистам можно по ссылке >>
Добавить комментарий Отменить ответ
Для отправки комментария вам необходимо авторизоваться.
Вы можете задать еще вопросов
Доступ к форме "Задать вопрос" возможен только при оформлении полной подписки на БухЭксперт8
Вы можете оформить заявку от имени Юр. или Физ. лица Оформить заявкуНажимая кнопку "Задать вопрос", я соглашаюсь с
регламентом БухЭксперт8.ру >>
Читайте также: