Отладка внешних печатных форм на тонком клиенте

25.01.20

Разработка - Универсальные функции

Отладка внешних печатных форм для тонкого клиента без дополнительных обработок.

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

А мысль была использовать механизмы привычные еще по работе в толстом клиенте.

Описываемый пример был сделан на конфигурации УТ 11 (печатная форма для документа Заказ клиента)

Все оказалось очень просто. Поискав в коде вызов метода печать, я просмотрел необходимые параметры к нему, добавил во внешнюю обработку форму (конечно, управляемую), реквизит формы со ссылкой на документ и кнопку печать.

Форму, которая получилась, можно увидеть на скрншоте.

А текст формы ниже:

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

&НаСервере
Процедура ПечатьНаСервере(СсылкаНаДок, ТабДок, ЗаголовокТабДок)
	Массив=Новый Массив;
	Массив.Добавить(СсылкаНаДок);
	
	КоллекцияПечатныхФорм=Новый ТаблицаЗначений;
	КоллекцияПечатныхФорм.Колонки.Добавить("ИмяВРЕГ");
	КоллекцияПечатныхФорм.Колонки.Добавить("ИмяМакета");
	КоллекцияПечатныхФорм.Колонки.Добавить("Картинка");
	КоллекцияПечатныхФорм.Колонки.Добавить("ПолныйПутьКМакету");
	КоллекцияПечатныхФорм.Колонки.Добавить("СинонимМакета");
	КоллекцияПечатныхФорм.Колонки.Добавить("ТабличныйДокумент");
	КоллекцияПечатныхФорм.Колонки.Добавить("Экземпляров");
        КоллекцияПечатныхФорм.Колонки.Добавить("ИмяФайлаПечатнойФормы");
	
	ПечФорма=КоллекцияПечатныхФорм.Добавить();
	ПечФорма.ИмяВРЕГ=ВРег("СЧЕТ НА ОПЛАТУ_1");
	ПечФорма.Экземпляров=1;
	
	ПараметрыОтправки=Новый Структура;
	ПараметрыОтправки.Вставить("Получатель");
	ПараметрыОтправки.Вставить("Текст","");
	ПараметрыОтправки.Вставить("Тема","");
	
	ПараметрыВывода=Новый Структура;
	ПараметрыВывода.Вставить("ДоступнаПечатьПоКомплектно",Ложь);
	ПараметрыВывода.Вставить("ПараметрыОтправки",ПараметрыОтправки);
	
	ОбъектыПечати=Новый СписокЗначений;
	
	ОбъектДляСервера = РеквизитФормыВЗначение("Объект");
	ЗаполнитьЗначенияСвойств(ОбъектДляСервера, Объект);
	
	ОбъектДляСервера.Печать(
		Массив,
		КоллекцияПечатныхФорм,
		ОбъектыПечати,
		ПараметрыВывода
	);
	
	// Проверим, все ли макеты были сформированы
	Для Каждого Стр Из КоллекцияПечатныхФорм Цикл
		Если Стр.ТабличныйДокумент = Неопределено Тогда
			ТекстСообщенияОбОшибке = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
				НСтр("ru = 'В обработчике печати не был сформирован табличный документ для: %1'"),
				Стр.ИмяМакета
			);
			ВызватьИсключение(ТекстСообщенияОбОшибке);
		КонецЕсли;
		
		Стр.ТабличныйДокумент.КоличествоЭкземпляров = Стр.Экземпляров;
	КонецЦикла;

	ТабДок=КоллекцияПечатныхФорм[0].ТабличныйДокумент;
	ЗаголовокТабДок=КоллекцияПечатныхФорм[0].СинонимМакета;
КонецПроцедуры

Короче, все просто.

Пытливый ум может попробовать использовать все параметры, которые отправляются в процедуру Печать, но это надо далеко не всегда ))

Да, с тем табличным документом, что возвращает обработка, можно в принципе сделать что-то еще, не только Показать, но для целей отладки этого обычно не требуется.

 

отладка внешняя печатная форма

См. также

Вставляем картинку из буфера обмена (платформа 1С 8.3.24)

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

Задача: вставить картинку из буфера обмена на форму средствами платформы 1С.

1 стартмани

18.03.2024    2655    0    John_d    8    

53

GUID в 1С 8.3 - как с ними быть

Универсальные функции Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Пришлось помучиться с GUID-ами немного, решил поделиться опытом, мало ли кому пригодится.

12.02.2024    4589    atdonya    22    

44

Переоткрытие внешних обработок

Универсальные функции Платформа 1С v8.3 Бесплатно (free)

На заключительных этапах, когда идет отладка или доработка интерфейса, необходимо много раз переоткрыть внешний объект. Вот один из способов автоматизации этого.

30.11.2023    3950    ke.92@mail.ru    16    

61

Валидация JSON через XDTO (включая массивы)

WEB-интеграция Универсальные функции Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

При работе с интеграциями рано или поздно придется столкнуться с получением JSON файлов. И, конечно же, жизнь заставит проверять файлы перед тем, как записывать данные в БД.

28.08.2023    8798    YA_418728146    6    

141

Печать непроведенных документов для УТ, КА, ERP. Настройка печати по пользователям, документам и печатным формам

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

Расширение для программ 1С:Управление торговлей, 1С:Комплексная автоматизация, 1С:ERP, которое позволяет распечатывать печатные формы для непроведенных документов. Можно настроить, каким пользователям, какие конкретные формы документов разрешено печатать без проведения документа.

2 стартмани

22.08.2023    2069    21    progmaster    7    

3

Расширение: Быстрые отборы через буфер [Alt+C] Копировать список, [Alt+V] Вставить список, [Ctrl+C] Копировать из файлов

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

Копирует в буфер значения из списков, из ячеек отчетов, таблиц, настроек списков, других отборов и вставляет в выбранную настройку отбора. Работает с Объект не найден. Работает как в одной так и между разными базами 1С. Использует комбинации [Alt+C] Копировать список, [Alt+V] Вставить список. Также для копирования данных используется стандартная [Ctrl+C] (например из открытого xls, mxl, doc и т.п. файла скопировать список наименований)

1 стартмани

13.10.2022    16139    133    sapervodichka    112    

129

Система контроля ведения учета [БСП]

Универсальные функции Механизмы типовых конфигураций БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

В данном материале рассмотрим типовой алгоритм подсистемы контроля учета БСП в конфигурациях на примерах.

18.07.2022    7241    quazare    8    

109
Вознаграждение за ответ
Показать полностью
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. bborisko 10.12.13 12:06 Сейчас в теме
Тоже так всегда делаю.
2. Borisych 503 11.12.13 04:09 Сейчас в теме
есть более интересные обработки на эту тему
3. МимохожийОднако 141 11.12.13 07:20 Сейчас в теме
(2) Borisych, скинь ссылки на лучшее.
4. Поручик 4670 11.12.13 08:10 Сейчас в теме
(3) Гугл в помощь не предлагать?
8. МимохожийОднако 141 11.12.13 10:25 Сейчас в теме
(4) Гугл мне всегда помогает)). В контексте (2) придерживаюсь правила подтверждать слова аргументами, то бишь ссылками. То что найду я зачастую не совпадает с поиском оппонента. А терять время на доказательства его слов непрактично.
Sword; Olga_Mil; Phoenix4565; rutadmeen; +4 Ответить
10. Bukaska 140 11.12.13 10:32 Сейчас в теме
(8) МимохожийОднако, Мне один раз тыкнули ссылкой по изготовлению ВПФ.. а потом я захотела избавиться от ссылки на объект - вотт тогда и начались танцы с бубном... но сейчас-то я уже в курсе этих мелочей))))
11. МимохожийОднако 141 11.12.13 10:55 Сейчас в теме
(10) Bukaska, вероятно отвечали не мне )). СсылкаНаОбъект - это обязательный реквизит ВПФ.
12. Bukaska 140 11.12.13 11:00 Сейчас в теме
(11) МимохожийОднако, Да.. реквизит нужен.. но для корректной работы форма не нужна.. Я имела в виду что в кодинге можно обойтись без данного реквизита..
То есть в данных обработки он есть, но в кодинге я его не трогаю))) приноровилась уже)))
13. rutadmeen 80 11.12.13 12:07 Сейчас в теме
(11) МимохожийОднако, Это верно для толстого клиента. Для тонкого клиента все не так, ссылка на массив с доками передается в параметрах к методу Печать.
14. Bukaska 140 11.12.13 13:37 Сейчас в теме
(13) rutadmeen, Да.. То что реквизит ссылкаНаОбъект обязателен, так это для обычных форм как например бух 2.0.. там ВПФ без данного реквизита не воспользуешься)
20. paybaseme 14 13.12.13 23:42 Сейчас в теме
(10) Bukaska,
То есть в данных обработки он есть, но в кодинге я его не трогаю))) приноровилась уже)))

А всё от чего? В предыдущей ветке я уже говорил - нужно ДО ознакомиться со стандартом разработки печатных форм в БСП. И тогда не нужно будет приноравливаться к чему-то. Я вам алгоритм писал, как можно получить доступ к ИТС, для ознакомления с документацией. Вы получили его? Если нет - то обязательно получите. А то Ваш бубен скоро от танцев может порваться уже :)
21. Bukaska 140 13.12.13 23:47 Сейчас в теме
(20) paybaseme,
А то Ваш бубен скоро от танцев может порваться уже :)



С ВПФ - нет.. Другие потяжелее темы есть.. а ВПФ - это не тяжело)))
15. Borisych 503 12.12.13 05:31 Сейчас в теме
17. МимохожийОднако 141 12.12.13 06:59 Сейчас в теме
(15) Borisych, спасибо..А Поручик постеснялся ))
18. Borisych 503 12.12.13 07:44 Сейчас в теме
(17) МимохожийОднако, когда сообщение писал - под рукой не было обработки - чтобы ссылку выяснить
6. rutadmeen 80 11.12.13 09:50 Сейчас в теме
(2) Тут соль не в интересности, а в простоте и доступности
7. Bukaska 140 11.12.13 10:17 Сейчас в теме
(6) rutadmeen, Просто форма она не всегда нужна, тем более для ВПФ.
Потом ссылка на объект надо в данных давать, а ведь можно и без неё обойтись, и будет все работать)))
А так да.. иногда приходится ставить ссылку на объект, если в процедуре формирования макета что-то не так выводится и не так читается.. а потом все равно как успешно отлажу, я делаю заново обработку, чтобы уже не было лишних форм(если они не нужны).
9. rutadmeen 80 11.12.13 10:29 Сейчас в теме
(7) Bukaska, может я ошибаюсь, но форма никаким образом не мешает функциональности ВПФ
5. Alex 100 11.12.13 09:44 Сейчас в теме
Во всяком случае это заработало. Не то что у Порутчика :)
16. Borisych 503 12.12.13 05:33 Сейчас в теме
(5) Alex, а у Поручика что не работает?
19. Поручик 4670 12.12.13 12:04 Сейчас в теме
(5) Кто там ещё гавкает? Что не заработало?
22. Chif13 1248 16.12.13 22:41 Сейчас в теме
Черт, а мою форму для внешних печатных тонких даж не протестил никто... Ладно слишком видно тежеловата была или статья написана, или сама форма )))) Жаааль....
23. Zamik 5 26.03.14 18:43 Сейчас в теме
Спасибо помогло. Это наверное самое простое объяснение про отладку для УТ 11.И без всяких обработок.
24. rutadmeen 80 01.04.14 11:04 Сейчас в теме
Всегда велкам )) Сам периодически обращаюсь обратно к этой статье. Рад, что выложил свободно – всегда можно подсмотреть!
25. mikhailovaew 127 05.05.14 12:00 Сейчас в теме
(24) кстати, большое спасибо, что именно в формате статьи. Просто, полезно, доступно, и скачивать ничего не нужно )
26. meier8th 05.05.14 13:49 Сейчас в теме
27. Isperator 13.05.14 13:44 Сейчас в теме
Спасибо, статья помогла.
28. ilia3003 1 02.10.14 14:16 Сейчас в теме
Хорошая Публикация как раз для конфигураций стронних не от 1с
29. Yashazz 4709 29.10.14 20:05 Сейчас в теме
Наверно, я чего-то не понимаю, но по-моему, это очевидные вещи, которые можно элементарно за минуту найти отладкой механизма печати и за 3 минуты выдрать из типового модуля БСП. Зачем это делать отдельной публикацией - не осознал.
30. Никулин Леонид 4 10.11.14 14:03 Сейчас в теме
Использовал Ваш метод. Получилось. Работает. Спасибо!
31. Phoenix4565 13.12.14 14:47 Сейчас в теме
а для ЗУПА метод подходит?
32. rutadmeen 80 08.01.15 18:02 Сейчас в теме
Метод подходит для любой конфы на управляемых формах
33. jobkostya1c_ERP 100 27.04.15 19:22 Сейчас в теме
Да, хорошая вещь, особенно для УТ 11.1 :)
34. invertercant 22 24.06.15 15:20 Сейчас в теме
Использую похожую конструкцию для печатных форм под БСП

&НаСервере
Функция ПечатьНаСервере()
	
	КоллекцияПечатныхФорм = УправлениеПечатью.ПодготовитьКоллекциюПечатныхФорм("ВПФ_ПечатьСчетФактуры");
	ОбработкаОбъект = РеквизитФормыВЗначение("Объект");
	ОбработкаОбъект.Печать(СписокОбъектов.ВыгрузитьЗначения(),
										КоллекцияПечатныхФорм,
										новый СписокЗначений,
										Неопределено);
	КоллекцияПечатныхФормМассив = ОбщегоНазначения.ТаблицаЗначенийВМассив(КоллекцияПечатныхФорм);	
	Возврат КоллекцияПечатныхФормМассив;
	
										
КонецФункции

&НаКлиенте
Процедура Печать(Команда)
	
	//Этим способом все формы в одном табличном документе как в стандартном механизме печати,
	//При необходимости можно сделать чтобы было в разных
	КоллекцияПечатныхФормМассив = ПечатьНаСервере();
	УправлениеПечатьюКлиент.ПечатьДокументов(КоллекцияПечатныхФормМассив);

КонецПроцедуры
Показать
shetill; eViLL; GATTUSO; Nuuq; jobkostya1c_ERP; +5 Ответить
47. eViLL 22.09.21 16:37 Сейчас в теме
(34)

Всегда мечтал учиться таким классным штукам с БСП НЕ из интернета. Как вы это делаете? )) Спасибо!
35. malinko.vasiliy 7 22.08.15 12:27 Сейчас в теме
В бух 3.0.38.55 пришлось добавить еще колонку
КоллекцияПечатныхФорм.Колонки.Добавить("ИмяФайлаПечатнойФормы");
info1ctart; +1 Ответить
36. kvant-62 22.12.16 10:45 Сейчас в теме
Автору огромный респект. Очень полезная статья.
40. пользователь 14.01.20 15:27
Сообщение было скрыто модератором.
...
41. пользователь 14.01.20 15:50
Сообщение было скрыто модератором.
...
42. пользователь 14.01.20 15:51
Сообщение было скрыто модератором.
...
43. пользователь 14.01.20 15:52
Сообщение было скрыто модератором.
...
37. dinopopyys 151 28.11.17 10:35 Сейчас в теме
Братан ты красавчек реально!!!
38. shetill 30 05.12.18 20:05 Сейчас в теме
Просто, доступно и главное выручила. А то куча статей и везде или ссылка на платные и не пойми какие обработки или просто флуд и "стёб" "знатаков", над теми кто задал вопрос по отладке ВПФ. Сохранили себе как шаблон.
Огромное человеческое спасибо.
39. Starikova_NK 01.07.19 10:44 Сейчас в теме
Пользуюсь этим способом, очень довольна!
Для ЗУП КОРП 3.1.10.50 нужна еще колонка
КоллекцияПечатныхФорм.Колонки.Добавить("ИмяФайлаПечатнойФормы");
44. newvideo 14.01.20 15:54 Сейчас в теме
всё классно не работает

использовал
УправлениеПечатью.ПодготовитьКоллекциюПечатныхФорм("АктВыполненныхУслугВнешн");

вылетает ошибка:
Значение не является значением объектного типа (Найти)
{ОбщийМодуль.УправлениеПечатью.Модуль(36)}: Возврат КоллекцияПечатныхФорм.Найти(ВРег(ИмяМакета), "ИмяВРЕГ") <> Неопределено;

ошибку разрулил используя код автора поста:

КоллекцияПечатныхФорм.Колонки.Добавить("ИмяВРЕГ");
ПечФорма.ИмяВРЕГ="АктВыполненныхУслугВнешн";

но при этом когда процедура Печать обработки доходит до функции проверки

УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "АктВыполненныхУслугВнешн")

то она благополучно возвращает ложь и печать дальше не идёт.
45. rutadmeen 80 16.01.20 14:19 Сейчас в теме
Возможно пришло от 1С изменение БСП и надо что-то подшаманить. На выходных посмотрю
46. rutadmeen 80 25.01.20 19:40 Сейчас в теме
Подправил два момента

Новая колонка:
КоллекцияПечатныхФорм.Колонки.Добавить("ИмяФайлаПечатнойФормы");
(это заметила и Лариса Starikova_NK)

А также явно добавил преобразование в верхний регистр, т.е. для newvideo будет примерно так:
ПечФорма.ИмяВРЕГ=ВРег("АктВыполненныхУслугВнешн");
Оставьте свое сообщение