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

03.12.19

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

на

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

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

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

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

См. также

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

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

2400 руб.

29.06.2020    18428    26    6    

40

Работа с интерфейсом Программист Стажер Платформа 1С v8.3 Бесплатно (free)

Это инструкция по дизайну форм в среде 1С. Гайд охватывает рекомендации и стандарты для оптимизации пользовательского интерфейса. В гайде содержатся указания по использованию элементов интерфейса, включая как основные, так и продвинутые аспекты. Предоставляются также примеры и антипримеры для наглядного понимания принципов дизайна

20.08.2024    13984    mrXoxot    43    

114

Работа с интерфейсом Программист Платформа 1С v8.3 Бесплатно (free)

Пример простого и симпатичного прогресс-бара в динамическом списке, без картинок, используя редактирование запроса.

27.05.2024    6395    smielka    37    

98

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

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

27.12.2023    13810    831    elcoan    47    

114

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

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

2 стартмани

10.04.2023    11385    161    acces969    31    

122

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

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

1 стартмани

05.07.2022    5162    kalyaka    6    

33

Работа с интерфейсом Программист Пользователь Платформа 1С v8.3 8.3.14 Конфигурации 1cv8 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Абонемент ($m)

Ещё с времен платформы 8.3.13 можно изменять цвет стилей интерфейса главного окна. Данное расширение позволит вам выбрать из подготовленных десятка стилей на свой вкус.

1 стартмани

01.07.2022    23454    380    rpgshnik    67    

94
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
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 246 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 75 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 70 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 2510 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 30 06.05.20 22:20 Сейчас в теме
Спасибо, помогло в одной самописке.
Единственное, чтобы форма открывалась в новом окне.
Это:

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

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

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