кнопка печать в форме списка в 1с
1С УХ 3.0: Подключение ПодключаемыхКоманд и Печати к новому документу
Эту и другие технические статьи написали наши программисты 1С и получили за них премии. Если вы тоже работаете с 1С и любите делиться опытом, приходите разработчиком в Neti → |
Рассмотрим подключение к новому документу ПодключаемыхКоманд и Печати на примере конфигурации Управление холдингом 3.0.6.8 с номером версии Библиотеки стандартных подсистем 3.0.1.428.
Для того чтобы подключить печатную форму к новому документу конфигурации, нужно (*код, который нужно добавить в процедуры, можно посмотреть в формах типовых документов конфигурации):
1. Добавить механизм ПодключаемыхКоманд к форме документа ФормаДокумента:
1.1. Добавить код в процедуру ПриСозданииНаСервере.
1.2. Добавить код в процедуру ПриЧтенииНаСервере.
1.3. Добавить код в процедуру ПриОткрытии.
1.4. Добавить три процедуры: Подключаемый_ВыполнитьКоманду, Подключаемый_ВыполнитьКомандуНаСервере, Подключаемый_ОбновитьКоманды.
2. Добавить механизм ПодключаемыхКоманд к форме документа ФормаСписка:
2.1. Добавить код в процедуру ПриСозданииНаСервере.
2.2. Добавить код в процедуру СписокПриАктивизацииСтроки ([ИмяТаблицыНаФорме]ПриАктивизацииСтроки).
2.3. Добавить три процедуры: Подключаемый_ВыполнитьКоманду, Подключаемый_ВыполнитьКомандуНаСервере, Подключаемый_ОбновитьКоманды.
3. Прописать процедуры печати в Модуле менеджера документа:
3.1. Добавить экспортную процедуру ДобавитьКомандыПечати (название и параметр должны быть именно такими).
Предположим, что хотим добавить печатную форму Предложения по лизингу с идентификатором ПредложенияПоЛизингу:
3.2. Добавить экспортную процедуру Печать (название и параметры должны быть именно такими):
3.3. Добавить функцию ПечатьДокумента (имя процедуры и параметры, как прописано в процедуре Печать):
4. В Общем модуле УправлениеПечатьюПереопределяемый в процедуру ПриОпределенииОбъектовСКомандамиПечати добавить новый документ, например,
В итоге на форме списка и на форме документа появится кнопка печати Предложения по лизингу (рис. 1–2):
Библиотека стандартных подсистем 1С 8.3. Печать
Рассмотрена подсистема Печать из библиотеки стандартных подсистем (БСП) 3.1.3.
Примеры приведены на конфигурации Управление торговлей 11.4.13.
В пользовательском режиме
Настройка видимости команд печати
В открывшемся окне можно галочками настроить видимость команд печати в подменю Печать:
Например, сейчас для авансового отчета доступны 2 печатные формы:
Если снять галочку для печатной формы Извещение и переоткрыть форму списка авансовых отчетов, то останется только одна печатная форма:
Форма печати
Форма печати выглядит следующим образом:
Рассмотрим кнопки командной панели:
По кнопке Печать печатная форма будет отправлена на принтер.
По кнопке Предварительный просмотр будет открыто окно для предварительного просмотра печатной формы, там же можно выполнить настройку параметров печати:
В поле Копий можно указать количество копий печатной формы. Указанное количество будет сохранено в настройках и при следующей печати данной печатной формы заполнится автоматически.
Рядом находится кнопка для включения/выключения режима редактирования печатной формы. По умолчанию режим редактирования включен, можно изменить печатную форму вручную. Изменения затронут только печатную форму, в документе все останется как было.
Кнопка с дискетой позволяет сохранить печатную форму. Будет открыто окно, где можно выбрать требуемые форматы для сохранения и каталог, куда будут сохранены файлы печатной формы:
Печатная форма будет сохранена во всех выбранных форматах. Можно сразу поместить все файлы в архив и транслитерировать имена файлов, чтобы файл назывался не Авансовый отчет № 1 от 27.04.2017, а Avansovyy otchet № 1 ot 27.04.2017.
Если установить переключатель Присоединить к документу, то файлы выбранных форматов будут прикреплены к документу в 1С:
Кнопка с письмом позволяет отправить файл печатной формы на почту (при условии, что в программе настроен почтовый клиент). Для каждого выбранного формата к письму будет добавлено вложение с печатной формой выбранного формата.
Сохранение файлов в различных форматах и отправка по почте не требует установленной программы просмотра файлов данного формата на компьютере.
Последнее поле позволяет подсчитать сумму, количество, среднее, минимум или максимум выделенных ячеек:
Если в настройках установить галку Все показатели:
То внизу будет строка, где будут рассчитаны все показатели для выделенных ячеек:
Печать комплекта
Поддерживается печать сразу нескольких печатных форм. Например, в документе Реализация товаров и услуг можно выбрать команду Комплект документов с настройкой:
Сначала будет показана форма, в которой можно галочками отметить какие печатные формы печатать и указать количество экземпляров:
Список печатных форм будет отображаться слева, можно переключаться между ними, чтобы посмотреть на саму печатную форму:
Редактирование макетов печатных форм
В открытой форме будут перечислены все макеты печатных форм и документ, из которого можно распечатать данную печатную форму:
По кнопке изменить можно отредактировать макет. Например, добавим в счет на оплату надпись «Внимание! Изменились реквизиты оплаты!»:
Сохраним макет. Теперь при печати счета на оплату будет печататься измененный макет:
В списке всех макетов есть специальные кнопки для переключения использования стандартного или измененного макета:
Для редактирования макетов, созданных в офисных программах (например Word) нужно чтобы офисная программа была установлена на компьютер.
В конфигураторе
Новая команда печати в существующем документе
На примере документа СчетНаОплатуКлиенту.
Базовое понимание внедрения механизма печати в любом документе конфигурации на БСП
Введение
Для кого-то этот материал не новшество, но отмечу, что данная статья будет полезна специалистам, желающим использовать последние возможности библиотеки стандартных подсистем в методах вывода на печать. Хорошо известно, что подсистема БСП постоянно меняется и усовершенствуется, и я могу сказать определенно, что старые методы и алгоритмы вывода на печать макетов печатных форм документов и справочников уже будут вряд ли применимы в современных конфигурациях на последних БСП.
Подготовка и настройка собственного документа конфигурации для использования в подсистеме печати в системе БСП.
Начнем с простого создания документа ТестоваяПечатьДокументов в конфигурации на БСП. В качестве конфигурации я беру чистую библиотеку стандартных подсистем версии 3.1.4.148. Разработка ведется на Платформе 1с 8.3.18.1208.
выглядит это вот так:
выглядит она вот так:
Далее, для «формы списка» добавляем внутренние БСП подключаемые процедуры:
А для «формы документа» добавляем вот такие внутренние БСП подключаемые процедуры:
Далее, заполним модуль менеджера нашего документа. Напишем в нем такой код:
Тут нет ничего сложного, но особое внимание хочу обратить на вот эту процедуру добавления команд
Заключение и выводы
В данной статье мы рассмотрели основной алгоритм БСП для размещения команд печати на любых документах конфигурации, в основе которой лежит современная библиотека стандартных подсистем. Напомню, что разработка примера велась на «чистой» библиотеке стандартных подсистем версии 3.1.4.148 и Платформе 1с 8.3.18.1208.
Другие мои материалы по БСП
Так же прошу ознакомиться с другими моими статьями по функционалу библиотеки стандартных подсистем и типовым конфигурациям:
1с кнопка печать в печатной форме
Изменение существующих или создание новых печатных форм – задача довольно распространённая. Как правило, в таких случаях создаётся внешняя печатная форма и подключается через стандартную подсистему дополнительных отчётов и обработок. Однако, иногда возникают задачи, в которых печатная форма должна формироваться с учётом данных, вводимых пользователями непосредственно перед печатью. То есть, сначала должна открыться форма, в которую пользователь вводит данные, и только потом выполняется команда «Печать».
Допустим, нам нужно создать печатную форму некой справки, часть данных которой вводятся в форме перед печатью. Кнопка «Печать» должна располагаться на форме.
Обычно для внешних печатных форм параметру «Вид» присваивается значение «Печатная форма», но так как у нас сначала должна открываться форма, то устанавливаем значение «Дополнительная обработка».
В этой же функции СведенияОВнешнейОбработке () при обращении к процедуре ДобавитьКоманду () для внешних печатных форм в параметр «Использование» обыкновенно передаётся значение «ВызовСерверногоМетода» или «ВызовКлиентскогоМетода». Здесь же мы укажем значение «ОткрытиеФормы».
В итоге функция будет выглядеть так:
Создаём макет печатной формы.
Далее создаём основную форму обработки и необходимые реквизиты формы. Создаём и размещаем на форме команду «Печать». Формировать табличный документ для печати будем в обработчике этой команды. В зависимости от того, какие данные требуются для печатной формы, организовываем заполнение табличного документа либо на клиенте, либо на сервере. В данном примере заполняем на сервере и затем возвращаем табличный документ на клиент.
Итак, в модуле формы:
Табличный документ сформирован, осталось вывести его для печати в предназначенную для этого общую форму «Печать документов». Сделаем это с помощью стандартных механизмов БСП.
Дополним обработчик команды «Печать»:
Теперь в результате выполнения команды «Печать» из формы нашей внешней обработки, табличный документ будет выводиться в форму «Печать документов», которая предоставляет удобный интерфейс для печати:
Продолжаем изучать программу 1С Предприятие. Сегодня будем добавлять кнопку печати в документ 1С. В предыдущих статьях посвященных 1С программированию я уже писал про то как создать новую базу, как этой базе создать новый документ так же мы с вами писали процедуры которые рассчитывали сумму по колонке и общий итог. Теперь создадим кнопку печати для нашего документа.
Создаем кнопку печати в документе 1C 8.2
Для того чтобы наш документ можно было распечатать необходимо в него добавить соответствующею кнопку. Создавать кнопку печати мы будем с помощью специального конструктора, не углубляюсь в написание процедур и функций.
И так начинаем, для начала запускаем нашу базу открываем документ и переходим во вкладку Макеты. Далее снизу кликаем Конструктор и выбираем Конструктор печати.
В открывшемся окне не чего не трогаем и кликаем Далее.
В следующем окне нужно выбрать то что будет печататься в шапке документа. Мы выбираем все три пункта Номер, Дата, Поставщик и кликаем далее.
Теперь нужно выбрать то что будет печататься в середине документа. Также отмечаем все пункты и переносим их в правую часть и жмем далее.
Теперь нужно указать то что будет печататься в подвале, отметим например дату.
Тут не чего не меняем и кликаем ОК.
После чего открывается макет печати.
Теперь запускаем 1С и проверяем, что у нас получилось. Ну, во-первых, в документе должна появиться кнопка печати.
После нажатия на нее должен открыться предварительный просмотр.
Ну вот мы и добавили возможность печати документа в 1С. Сделали мы это с помощью конструктора, в следующем уроке попробуем усложнить печатную форму и добавить туда несколько полей. А пока на этом все.
Скриншоты, опубликованные в данной статье, являются цитатами и иллюстрациями программного продукта «1C:Предприятие», авторское право на который принадлежит ЗАО 1С.
В стандартном документе отсутствует кнопка команд печати (группа командной панели).
На что следует обратить внимание для решения проблемы
В случае, лежащем в основе статьи, проблема оказалась на последнем этапе:
верно указанная группа, но не указан тип параметра команды — должен быть ДокументСсылка.УстановкаЦенНоменклатуры.
Скорее всего документ был в эту базу скопирован из другой конфигурации и данное свойство очистилось, либо другая невыясненная причина.
Как проверить остальные варианты:
Для начала определитесь была ли эта кнопка вообще или же пропала кнопка печати в 1с после каких-либо действий (вспомните их). Проверьте: у всех пользователей проявляется, либо же у отдельных, форме объекта, в форме списка (в обоих) не видна? Все команды отсутствуют или же нет одной конкретной? Ответы на эти вопросы локализует проблему быстрее.
Команды объекта находятся в дереве метаданных (под формами, над макетами)
Права на команду доступны из диалога роли, а также по вкладке дополнительно при активной команде (правой кнопкой или же горячими клавишами Alt+Shift+Enter)
Затем справа в панели свойств перейти на вкладке права и найти требуемое/проверяемое полномочие:
Использовать стандартные команды в карточке объекта на вкладке «Команды» (внизу под списком)
В диалоге редактирования управляемой форме при активной командной панели объекта, нажимаете свойства и проверяете установку флаг «Автозаполнение»
У меня во всех вышестоящих примерах объекты недоступны для редактирования не по причине нахождения на поддержке, а использования хранилища конфигурации — для самописной конфигурации всё будет доступно для правки.
Если же у вас обычные формы, возможно вам поможет эта статья
Легче сочинить десять правильных сонетов, чем хорошее рекламное объявление.
Программирование в 1С для всех
В предыдущей статье мы научились выводить табличный документ на печать, применяя при этом команду формы, что, согласитесь, может быть неудобно: мы не можем распечатать документ из списка, мы не можем распечатать несколько документов из того же списка документов, если это нужно. Поэтому, в этой статье я покажу, как реализовать более универсальную возможность печати табличного документа, используя команду объекта. Для этого мы создадим подчиненную нужному объекту команду, при выполнении которой будет показываться один или несколько табличных документов.
С тем, как был создан макет табличного документа (его мы и будем использовать), можете ознакомиться в этой статье:
А как было реализовано заполнение табличного документа, и осуществлен простой способ его вывода можете ознакомиться в этой статье:
И так, создадим подчиненную нашему документу команду печати.
После выполнения команды Добавить контекстного меню, будет создана подчиненная документу команда, открыт модуль этой команды, и справа откроется окно палитры свойств вновь созданной команды.
Назовем новую команду ПечатьНакладной.
Следующим шагом, нам нужно выбрать группу, в которой эта команда будет отображаться. Поскольку команду должна быть доступна на управляемой форме (или в форме документа, или в форме списка), то и группу нужно выбрать, связанную с формой. Поэтому выберем группу «Командная панель формы. Важное», если мы так сделаем, то кнопка команды печати будет отображаться в командной панели управляемой формы.
Теперь, необходимо выбрать тип параметра, который будет передан в команду при её выполнении. Мы выберем ссылку на документ, которому эта команда подчинена.
В следующий параметр — «Режим использование параметра» установим значение Множественный, чтобы можно было выделить в форме списка несколько документов, и к ним применить команду.
На этом мы закончим настройку свойств команды и перейдем к основной разработке: получению данных документов и заполнение табличного документа этими данными.
Делать всю эту работу мы будет в модуле менеджера документа. В принципе, всю эту работу можно было сделать и в модуле команды, но мы сделаем в модуле менеджера, чтобы потенциально этот код можно было применять и в других случаях. В модуле команды мы будем просто выводить табличный документ на просмотр. Поэтому откроем модуль менеджера документа.
В этом модуле напишем экспортную функцию, в которую в качестве параметров будет передан массив документов (как мы его будем получать, разберем ниже).
В этой функции первым делом создадим программно табличный документ 1С и получим макет, который был создан ранее в статье.
О том как этот макет сделан, читайте здесь: Создание макета табличного документа в 1С 8.3
Теперь я сделаю иерархический запрос, в котором в верхнем уровне иерархии будут документы, на детальном уровне данные из табличной части.
Заметьте, в качестве параметра в запрос был передан массив документов, который был передан в нашу функцию также в качестве параметра.
Теперь получим итоговую выборку по документу, будем обходить эту выборку, а если документ не проведен, то выведем сообщение и ни чего дальше делать не будем.
Если всё нормально, то мы выводим шапку документа и таблицы, как мы это делали в предыдущей статье.
Нам осталось получить выборку табличной части документа, обойти её и заполнить соответствующую область.
Получим и выведем подвал, а также выведем горизонтальный разделитель таблиц, чтобы каждый документ печатался на отдельном листе.
Закончим работать с циклом и вернем табличный документ, если он заполнился (для проверки этого факта, я создал переменную, которой присваиваю истина, если табличный документ заполняется данными).
На этом мы закончим работать с функцией в менеджере модуля. Она в целом будет иметь следующий вид.
Откроем модуль команды, которую мы создали ранее.
В этом модуле уже будет существовать обработка команды в клиентском контексте, которая была образована при создании команды.
Обратите внимание на параметр ПараметрКоманды, в этом параметре и содержится массив документов. Это именно массив, потому что при создании команды мы в свойстве команды «Режим использования данных» указали Множественный. Именно этот массив мы и передадим в функцию, которую создали в модуле менеджера объекта.
Создадим в модуле команды функцию в серверном контексте, которая будет обращаться к ранее созданной функции из модуля менеджера документа и возвращать табличный документ. А если документ заполнен, то выведем его на просмотр.
Теперь мы можем распечатать сразу несколько документов из формы списка документов.
Для распечатывания нескольких документов, необходимо выделить мышкой нужные документы и выполнить команду печати.
Если Вы всё еще «плаваете» в конструкциях языка запросов, и у Вас вызывают трудности даже самые простые запросы, то рекомендую вам мой курс «Запросы в 1С от новичка до профи». Где эти и многие другие вопросы рассматриваются более подробно.
В чем особенность этого курса:
• Курс рассчитан на тех, кто не знаком с языком запросов в 1С;
• Учебный материал грамотно скомпонован и прост в освоении;
• Несколько десятков уроков;
• Полезные практические примеры;
• Все уроки изложены понятным и простым языком
Для моих читателей, купон на скидку 25%: hrW0rl9Nnx
Более подробно и основательно разработка в 1С дается в моей книге: «Программировать в 1С за 11 шагов»
Изучайте программирование в 1С в месте с моей книги «Программировать в 1С за 11 шагов»
О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
Промо-код на скидку в 15% — 48PVXHeYu