В новой платформе пропала кнопка "Печать". Имитируем БСП

03.12.19

Разработка - Работа с интерфейсом

"Приятным" сюрпризом для многих пользователей 1С стало то, что при обновлении платформы (начиная с 8.3.15) полностью поменялся интерфейс. Можно долго спорить о целесообразности этого новшества, но самым главным минусом стало то, что пропали стандартные кнопки на панели инструментов. Разработчики предполагают повсеместное использование БСП, но что делать тем, кто давно и успешно использует самописные конфигурации, в которых формирование печатной формы происходит по ТабДок.Показать(), и не желает их "утяжелять"? Добавим общую форму с нужными нам кнопками.

Сразу оговорюсь, что целиком и полностью поддерживаю продвижение БСП. Идея хороша, но за универсальность приходится расплачиваться объемами кода, в котором не так-то просто разобраться. Я честно пытался пройтись отладчиком по процедуре печати, но после "стопятьсотой" процедуры решил, что буду делать свою форму, с минимумом нужных мне функций. Что же для этого потребуется? (Конечно же сохранить копию базы и все эксперименты вести исключительно в ней!)

Постараюсь объяснять все подробно, т.к. рассчитываю на читателя, не особо продвинутого в 1С. Гуру моя информация не интересна, они используют стандартные подсистемы. Имейте ввиду, что реквизит ТабДок у вас может называться иначе.

Первым делом переносим из любой типовой конфигурации общую форму ПечатьДокументов (я воспользовался конфигурацией Бухгалтерия Предприятия 3.0). Делается это в Конфигураторе. Для начала выгружаете конфигурацию донора (Конфигурация - Сохранить конфигурацию в файл), а затем загружаете в своей базе (Конфигурация - Сравнить, объединить с конфигурацией из файла). В окне с выбором необходимых модулей снимаем ВСЕ флажки. Раскрываем дерево, находим общую форму ПечатьДокументов (далее буду называть ее сокращенно ПД) и помечаем ее. Соглашаемся с изменениями и сохраняем свою конфигурацию.

Далее из модуля формы ПД удаляем все. Потом напишем собственные процедуры.

На самой форме оставляем только самое необходимое. На мой взгляд, достаточно кнопок: Печать, предварительный просмотр, выбор количества копий и запрет редактирования. Из реквизитов нам потребуются только Копий и ТекущаяПечатнаяФорма. Из Команд - ПереключитьРедактирование и сама команда Печать.

Настройки печатной формы

В модуле располагаем следующие процедуры:

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	ТекущаяПечатнаяФорма = Параметры.ТабличныйДокумент;
	ЭтаФорма.Заголовок = Параметры.ЗаголовокФормы;
	Копий =  ТекущаяПечатнаяФорма.КоличествоЭкземпляров;
КонецПроцедуры

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	ПереключитьРедактирование(Неопределено)
КонецПроцедуры

&НаКлиенте
Процедура КопийПриИзменении(Элемент)
	ТекущаяПечатнаяФорма.КоличествоЭкземпляров = Копий;
	
КонецПроцедуры

&НаКлиенте
Процедура ПереключитьРедактирование(Команда)
	Элементы.ТекущаяПечатнаяФорма.Редактирование = НЕ Элементы.ТекущаяПечатнаяФорма.Редактирование;
	ПереключитьПометкуКнопкиРедактирование();
КонецПроцедуры

&НаКлиенте
Процедура ПереключитьПометкуКнопкиРедактирование()
	
	Элементы.КнопкаРедактирование.Пометка = НЕ Элементы.КнопкаРедактирование.Пометка;
	
КонецПроцедуры


&НаКлиенте
Процедура Печать(Команда)
	ТекущаяПечатнаяФорма.Напечатать(РежимИспользованияДиалогаПечати.Использовать);
КонецПроцедуры

Коротко поясню их назначение. В процедуру ПриСозданииНаСервере() в качестве параметров будем передавать наш табличный документ и его название. Второй параметр не обязателен, но я его сделал для красоты и удобства, потом объясню причины. Здесь же мы инициализируем количество копий. Если у вас настройки печати сохраняются, то значением будет последнее использованное при печати.

В процедуре ПриОткрытии() я переключаю режим редактирования на Истина. Если вам не требуется редактировать по-умолчанию, можете вообще убрать эту процедуру, а режимы переключать вручную кнопкой.

Далее все понятно: при изменении на форме количества копий, соответственно меняются параметры печати табличного документа, при нажатии на кнопку Редактирование, ее значения меняются на противоположные, меняя заодно и пиктограмму. Ну, и главная процедура Печать(), которая и распечатает нам всю красоту с предварительным выводом диалогового окна.

Затем создадим в Общих модулях новую процедуру. Эта процедура должна работать только на клиенте, поэтому смотрите свойства модуля, в котором создаете процедуру. Можно для верности предварить процедуру директивой #Если Клиент Тогда
У меня модуль называется ОбработкиКлиента, у вас будет другое название, не перепутайте.

#Если Клиент Тогда
Процедура ПолучитьПечатнуюФорму(ТабДок,ТекстЗаголовка) Экспорт
	КоллекцияПечатныхФормСтруктура = Новый Структура;
	КоллекцияПечатныхФормСтруктура.Вставить("ТабличныйДокумент"   	, ТабДок);
	КоллекцияПечатныхФормСтруктура.Вставить("ЗаголовокФормы"   		, ТекстЗаголовка);
	ОткрытьФорму("ОбщаяФорма.ПечатьДокументов",КоллекцияПечатныхФормСтруктура);

КонецПроцедуры	
#КонецЕсли

Здесь мы формируем структуру и отправляем в общую форму ПД.
Подготовительные работы закончены. Теперь ищем место, где выводится наш табличный документ. Для примера, у меня есть документ Доверенность. В нем команда ПечатьДоверенности, модуль которой выглядит следующим образом:

&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
	ТабДок = Новый ТабличныйДокумент;
	Печать(ТабДок, ПараметрКоманды);
	ТабДок.ОтображатьСетку = Ложь;
	ТабДок.Защита = Ложь;
	ТабДок.ТолькоПросмотр = Ложь;
	ТабДок.ОтображатьЗаголовки = Ложь;
	ТабДок.АвтоМасштаб = Истина;
	ТабДок.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
	ТабДок.Показать("Печать: Доверенность М-2 " + ПараметрКоманды);
	
КонецПроцедуры

&НаСервере
Процедура Печать(ТабДок, ПараметрКоманды)
	ТабДок.ИмяПараметровПечати = "ПечатьДоверенности_"+Строка(ПараметрыСеанса.ТекущийПользователь);
	Документы.Доверенность.ПечатьДоверенности(ТабДок, ПараметрКоманды);
КонецПроцедуры

Осталось заменить строчку
 

	ТабДок.Показать("Печать: Доверенность М-2 " + ПараметрКоманды);

на

	ОбработкиКлиента.ПолучитьПечатнуюФорму(ТабДок,"Печать: Доверенность М-2 " + ПараметрКоманды);

Как видите, название у новой формы останется прежним, а вставлять новый код просто: копируем левую часть до запятой и вставляем в нужные места нашей базы, где есть ТабДок.Показать().

Осталось только сохранить конфигурацию и проверить, как все работает.

Конфигурация кнопка Печать новый интерфейс

См. также

Богатый редактор картинок, хранимых в базе, с возможностью РИСОВАНИЯ. Редактор внешних файлов картинок. Объект, расширяющий возможности работы с картинками из встроенного языка (Три в одном) + Обработка «Стандартизация картинок»

Работа с интерфейсом Рабочее место Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Платные (руб)

Обработка предназначена для редактирования картинок в режиме «Предприятие», с возможностью РИСОВАТЬ на них. Поддерживается работа как в обычных формах (толстый клиент) так и на управляемых формах (тонкий клиент). Обработка позволяет редактировать как картинки, хранимые в базе, так и графические файлы с диска на файловой системе. Помимо базовых функций (изменение размеров, преобразование формата, обрезание картинки, повороты и т.п.) – редактор имеет богатый набор инструментов для рисования. Доступна функция вставки изображения из буфера обмена. Также обработка может быть использована из встроенного языка как объект для редактирования картинок. Объект может быть использован: на стороне клиента, на стороне сервера, из внешнего соединения. Данная обработка будет особенно полезна тем, кто вносит картинки в базу (изображения номенклатуры, фотографии физических лиц и т.п.). Функционал реализуется с использованием JavaScript и бесплатного ПО ImageMagick (без использования внешних компонент).

6000 руб.

16.01.2015    61699    43    59    

80

[Расширения] Динамическое управление видимостью и доступностью элементов форм (УФ) (8.3.6+)

Работа с интерфейсом Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Платные (руб)

Механизм «Динамическое управление доступом к элементам форм объектов 1С8» предназначен для обеспечения возможности оперативного управления видимостью и доступностью элементов форм документов и справочников продуктов фирмы «1С» «1С:Предприятие 8». Решение универсальное, встраивается в любую конфигурацию с минимальными доработками, что позволяет без проблем обновлять типовые решения.

5000 руб.

14.01.2016    54317    16    21    

42

Управление дашбордами

Работа с интерфейсом Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Обработка предназначена для создания и управления дашбордами.

2400 руб.

29.06.2020    16623    21    4    

35

Новогоднее оформление для 1С

Работа с интерфейсом Платформа 1С v8.3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 Бесплатно (free)

Добавьте новогоднего настроения! Расширение создает декорацию в виде гирлянды на некоторых формах объектов.

27.12.2023    10564    745    elcoan    45    

106

Конструктор HTML, CSS и javascript

Инструментарий разработчика Работа с интерфейсом Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Подходит для создания web-страниц для замены управляемых форм 1С, красивых отчетов, интерфейса мобильного приложения на платформе 1С и для простых страниц веб-сайтов.

2 стартмани

10.04.2023    9485    150    acces969    31    

115

Модель состояния для MVC

Работа с интерфейсом Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

"MVC плохо применима в 1С" - познакомьтесь с моделью состояния и, возможно, ваше мнение поменяется! Представленное решение является эволюционным развитием идеи реализации MVC для 1С. В новой версии добавлены DSL для описания модели состояния, а также параметризация свойств параметров и элементов формы.

1 стартмани

05.07.2022    3579    kalyaka    2    

27

Табло очереди заказов на экран телевизора

WEB-интеграция Работа с интерфейсом Платформа 1С v8.3 1С:Розница 2 Платные (руб)

Связка из веб-приложения и расширения для 1С: Розница 2.3.

3600 руб.

29.04.2022    12010    1    5    

10
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. VmvLer 03.12.19 11:46 Сейчас в теме
Я честно пытался пройтись отладчиком по процедуре печати, но после "стопятьсотой" процедуры решил, что буду делать свою форму, с минимумом нужных мне функций


стопятьсот переходов сделаны не просто чтобы вас запутать, а скорее чтобы исключить несанкционированный доступ к печати при попытках "химичить" с накладными или в целях
выполнения законов о доступе к персональным данным.

посему, лепить свой лисапед печати никто вам запретить не может, но ответственность
за "химию" и нарушения закона о перс. данных вы берете на себя.
2. Vlan 36 03.12.19 11:59 Сейчас в теме
(1) Я понимаю, что БСП не взялась из ниоткуда. Были на то причины. Возможно, это связано и с персональными данными, хотя я больше склоняюсь, что сложность из-за универсальности. Только речь идет о уже работающей конфигурации. Если раньше персональные данные не разглашались, то дополнительная кнопка никак на это повлиять не может.
whitedeath; unknown181538; +2 Ответить
3. VmvLer 03.12.19 12:04 Сейчас в теме
(2) мне не совсем понятен ход ваших мыслей.

у меня он более простой:
дополнительная кнопка печати - это обход штатных блокировок для мошенников и злоумышленников. Взамен мы получаем сомнительное удовольствие более быстрой отладки, а для рядового пользователя никаких бонусов нет, кроме той, что мы открыли для него дыры к тому, что скрыто.

собственно это более четкое выражение мысли из сообщения № 1.
4. Vlan 36 03.12.19 12:18 Сейчас в теме
(3) Ход мысли такой:
1) Там, где БСП есть, пусть работает, ее эмулировать не надо.
2) Там, где БСП нет, пропала возможность быстрой печати по одной кнопке. Нужно нажать справа кнопку меню, в ней Файл, далее Печать. Это очень неудобно пользователю. Можно воспользоваться горячими клавишами, но люди все разные: одни их помнят, другим надо напоминать каждый час. Мне было проще сделать кнопку, которая сразу перед глазами Внедрять БСП в работающую годами систему не вижу необходимости..
Созинов; whitedeath; unknown181538; Dimasik2007; oninfostart; KRJ; ben19791010; yku; Il; BigB; +10 Ответить
25. dajen 10.12.19 09:59 Сейчас в теме
(3) В этом вся и проблема, богатая фантазия, слишком простой ход мысли и полное отсутствие практики в данном вопросе, только "в интернете почитайте".
26. VmvLer 10.12.19 10:39 Сейчас в теме
(25) Не надо тут каяться, бросайте пить, больше читатйте и жизнь наладиться!
31. dajen 10.12.19 14:14 Сейчас в теме
(26) о, господи, оно еще и шутить пытается)
Yimaida; Ladoslav; Neuroproton; defini; +4 Ответить
34. TerveRus 13.12.19 14:56 Сейчас в теме
(3) Умное БСП скрывает кнопки от злоумышленников? Что за бред?
приведите пример, как БСП защищает от мошенников, иначе это все пустое балабольство на пустом месте.
35. VmvLer 13.12.19 15:31 Сейчас в теме
(34) выше я уточнил свою позицию, посему если вам охота некропостить, то ждите вечерних ток-шоу ну или "Поле чудес" сегодня - будут опять дарить огурцы, не переключайтесь с 1-го.
5. sikvel2012 96 03.12.19 13:19 Сейчас в теме
(1). Попахивает бредом
MaximSh; oninfostart; KRJ; ben19791010; semagin@gmail.com; yku; ice-net; Il; +8 Ответить
6. VmvLer 03.12.19 13:23 Сейчас в теме
(5) когда к вам прийдут с проверкой соблюдения закона о перс. данных, то так и скажете.
7. rusmil 262 03.12.19 14:01 Сейчас в теме
(6) А как связан вывод формы на печать и закон о персональных данных? Можете привести пример?
8. WalterMort 241 03.12.19 14:07 Сейчас в теме
(7) Ну... злоумышленник не смог подделать персональные данные в печатной форме, потому что не осилил БСП...
unknown181538; accounting_cons; pavelpribytkin96; Dimasik2007; Trucker; rusmil; +6 Ответить
10. Vlan 36 03.12.19 14:57 Сейчас в теме
(8) Самое смешное, что БСП даже позволяет редактировать макеты и пресылать файлы по электронке, а я эту возможность убрал. Я таки соблюдаю закон 152-ФЗ? :-)
Dimasik2007; +1 Ответить
14. VmvLer 04.12.19 11:14 Сейчас в теме
(10) При наличии прав да, но если в ИБ проходной двор и все с правами админа, то это совсем другая история и на БСП пенять нет смысла.
9. VmvLer 03.12.19 14:18 Сейчас в теме
(7) почитайте закон, поищите примеры в интернете, вы ведь уже закончили школу и можете искать информацию самостоятельно?
11. sikvel2012 96 03.12.19 20:57 Сейчас в теме
(6)приходили, проверяли, только ни кто не проверяет бсп

И защита перс данных это не их подделка в печатной форме, а немного другое, читайте закон

И если у вас все подряд имеют к ним доступ и могут выводить на печать то никакая бсп вас от штрафа не спасет
13. VmvLer 04.12.19 11:12 Сейчас в теме
(11) я ничего про "нас" не писал, так что ваши фантазии попахивают непорядочностью и манипуляцией.

Кратко еще раз - дополнительная кнопка печати со своим функционалам - это дополнительная возможность получить данные на печать в обход штатных запретов.

Тот же ЗУП фиксирует любые попытки доступа к пер. данным - печать, просмотр, открытие карточек.
"Своя" печать, наверняка, будет не учтена как попытка доступа и получивший печ. форму человек(например паспортные данные сотров) может ее унести и ЗУП об этом ничего не будет знать.
Я считаю, что такое решение задачи и будет нарушением закона.
Если вы так не считаете, то обоснуйте без фантазий у кого что болит?
15. Vlan 36 04.12.19 11:49 Сейчас в теме
(13) Вам же все все твердят, что ограничивать пользователей надо на уровне прав на печать, а не способов ее запуска. Если пользователю позволено печатать, он напечатает табличный документ с помощью БСП или просто штатными средствами платформы. Он сфотографирует экран или банально запишет в блокнотик. Значит, не надо ему показывать лишнее, вот и все. В моей конфигурации нет никаких персональных данных, но есть сведения, представляющие коммерческую тайну. Поэтому также есть разграничение прав доступа. Но это уже совсем другая история... (с)
16. VmvLer 04.12.19 12:05 Сейчас в теме
(15) Аппеляцию "вам же все все твердят..." отставьте для телешоу, там этот тип манипуляций прокатывает.

Я же обращаю ваше внимание но то, что пользователь не сможет ни увидеть, ни распечатать, ни сфотографировать данные по той простой причине, что у него не будет прав на чтение этих данных.
И даже если будет, то хорошая система зафиксирует эти факты.

Когда же "прикрутичвать" свои печ.формы и процедуры печати, то очень просто обойти и права доступа,
и протоколирование доступа к тем или иным данным. Ваша обработка как раз это и делает - кладет болт на правила и регламент.
Посему я и против подобных поделок - это прошлый век.
17. Vlan 36 04.12.19 12:39 Сейчас в теме
(16) Ну, я тоже против кардинального перекроя платформы, однако разработчикам это не интересно. Так что у нас 1:1

В описании русским по белому написано, что предназначено для собственных разработок, которые изначально строились не по правилам. Кто хочет хорошо - напишет новую конфигурацию (Подумаешь! Ерунда какая!), кого устраивает плохо, все равно сделает по-своему.
18. sikvel2012 96 04.12.19 18:39 Сейчас в теме
(13) вот и славно, это ближе к истине, так как изночально вы говорили о их модификации перед печатью

В тоже время, как сказали ниже ограничивать доступ к перс. данным нужно правами, и если пользователь видит их значит он имеет на это право

Бсп это унификация не болен
37. avasl 73 31.12.19 13:26 Сейчас в теме
12. _alex1974 04.12.19 08:28 Сейчас в теме
Злоумышленник сфотографирует экран на смартфон.
Кстати, 90% пользователей именно так делают скриншоты для общения с поддержкой.
user774630; +1 Ответить
19. dhurricane 04.12.19 23:10 Сейчас в теме
В принципе, можно еще больше упростить форму, если есть желание. Достаточно оставить обработчики "ПриСозданииНаСервере" и "КопийПриИзменении". Все остальные команды можно найти среди стандартных команд табличного документа и программирование их не требуется.
20. Vlan 36 05.12.19 07:08 Сейчас в теме
(19) Не спорю. Я оставил то, что хотелось бы иметь перед глазами, не рыская по меню.
21. dhurricane 05.12.19 07:14 Сейчас в теме
(20) Не, я имел ввиду другое. Например, для вывода кнопки "Редактирование" Вы добавили новую команду формы, в обработчике которой реализовали алгоритм переключения режима редактирования. Так вот в новой команде не было необходимости, можно было бы вытащить нужную кнопку на панель из стандартных команд табличного документа. И реализация обработчика не потребовалась бы.
Прикрепленные файлы:
22. Vlan 36 05.12.19 08:00 Сейчас в теме
(21) Можно и так. Только хотелось имитации БСП, чтобы пользователь сразу видел знакомые кнопки.
23. HanterVol 8 06.12.19 09:08 Сейчас в теме
ИМХО. если в самописной конфигурации есть печатные формы, формирующиеся из формы документа/справочника по "Таб.Показать()", то нужно выбрать время и переписать их, а не заниматься садомазохизмом.
24. Vlan 36 06.12.19 11:10 Сейчас в теме
(23) Так они и переписаны теперь. Все элегантно и удобно. :-)
27. 7OH 69 10.12.19 11:36 Сейчас в теме
А не проще ли тогда уж на 8.3.16 пересесть ?
Там у ТабДок есть уже меню и в нём печать.
28. Vlan 36 10.12.19 11:50 Сейчас в теме
(27) Меню везде есть. Или я что-то не знаю? Попробую новые платформы на досуге, что там еще придумали.
29. freeze_9096 10.12.19 12:28 Сейчас в теме
Спасибо Вам добрый человек! Так гораздо удобнее!
30. Vlan 36 10.12.19 13:23 Сейчас в теме
(29) Очень рад, что кому-то пригодилось.
32. GROOVY 2503 10.12.19 22:36 Сейчас в теме
Там есть кнопочка с тремя точечками. В каждой форме. Все.
33. Vlan 36 11.12.19 06:47 Сейчас в теме
36. ssfedkin 6 13.12.19 20:09 Сейчас в теме
Спасибо что опередили! Тоже хотел сделать что-то подобное для небольшой самописки.
38. user1348061 25.01.20 09:29 Сейчас в теме
32. GROOVY 2512 10.12.19 22:36
Там есть кнопочка с тремя точечками. В каждой форме. Все.

Спасибо вам огромное. Я обычный бух. Делаю декларацию по НДС, вчера программист обновление сделал. Думаю куда делась кнопка печати. Сначала делала принскрин вставляла в ворд и печатала. Зашла на эту страницу, думала уже все... пошло оно лесом. Но тут единственный нормальный человек GROOVY нормально ответил что делать. Большое ему человеческое бухгалтерское СПАСИБО,
41. Vlan 36 13.02.20 07:32 Сейчас в теме
(38) Странный у вас программист, который не знает про три точки. :-)
39. Semak76 27.01.20 13:31 Сейчас в теме
Добрый день!
Небольшой вопрос про "три точки".
В некоторых документах в прошлой версии платформы печатали через меню Файл/Печать (которая была в левом верхнем углу рабочего окна 1С. В новых версиях платформы (8.3.15.х, 8.3.16.х) это меню "переместилось" в "три точки" в правом верхнем углу документа. Но почему-то меню "Файл" в этих "трех точках" есть не для всех документов. То есть, меню-то есть, но опции "Файл" в нем - нету. Если создать новый табличный документ, то там будет полное меню в этих "трех точках", с опцией "Файл". Вопрос: как добавить опцию "Файл" в это типовое меню для тех документов, где его нет (а раньше было)? Заранее спасибо.

P.S. Можно, конечно, выделить все и скопировать информацию для печати в новый табличный документ - и из него уже напечатать. Но это как-то совсем неудобно. Возможно, есть простой способ активировать меню "Файл" в новом меню?
Прикрепленные файлы:
42. user683637_vlad 27.02.20 15:55 Сейчас в теме
(39) Нажмите на Кнопку Справка и закройте открывшееся окно, появиться меню Файл. Либо дважды на ... (три точки)
40. пользователь 03.02.20 10:37
Сообщение было скрыто модератором.
...
43. Nickon 02.03.20 13:26 Сейчас в теме
Вот спасибо! Теперь можно и под себя заточить механизм. Все доступно и понятно. Теперь "обвешу" своими модулями и процедурами и буду копипастить из конфы в конфу.
44. whitedeath 29 06.05.20 22:20 Сейчас в теме
Спасибо, помогло в одной самописке.
Единственное, чтобы форма открывалась в новом окне.
Это:

ОткрытьФорму("ОбщаяФорма.ПечатьДокументов",КоллекцияПечатныхФормСтруктура);

Заменил на это:

ОткрытьФорму("ОбщаяФорма.ПечатьДокументов",КоллекцияПечатныхФормСтруктура,,Истина);
45. Бирмингем 27.10.20 17:15 Сейчас в теме
У команды Печать есть горячие клавиши Ctrl+P.
Может кто ни-будь знает, что-то подобное для команды Предварительный просмотр?
Оставьте свое сообщение