Отладка внешних печатных форм на тонком клиенте
Разработка - Универсальные функции
Статья была инициирована поиском способа отладить одну из нескольких печатных форм, которую не доделал внештатный программист, который, затем, как это обычно бывает, пропал. Погуглил - везде предлагают использовать обработку. Но это долго и не удобно..
А мысль была использовать механизмы привычные еще по работе в толстом клиенте.
Описываемый пример был сделан на конфигурации УТ 11 (печатная форма для документа Заказ клиента)
Все оказалось очень просто. Поискав в коде вызов метода печать, я просмотрел необходимые параметры к нему, добавил во внешнюю обработку форму (конечно, управляемую), реквизит формы со ссылкой на документ и кнопку печать.
Форму, которая получилась, можно увидеть на скрншоте.
А текст формы ниже:
&НаКлиенте
Процедура Печать(Команда)
ТабДок=Новый ТабличныйДокумент;
ЗаголовокТабДок="";
ПечатьНаСервере(СсылкаНаДок,ТабДок,ЗаголовокТабДок);
ТабДок.Показать(ЗаголовокТабДок);
КонецПроцедуры
&НаСервере
Процедура ПечатьНаСервере(СсылкаНаДок, ТабДок, ЗаголовокТабДок)
Массив=Новый Массив;
Массив.Добавить(СсылкаНаДок);
КоллекцияПечатныхФорм=Новый ТаблицаЗначений;
КоллекцияПечатныхФорм.Колонки.Добавить("ИмяВРЕГ");
КоллекцияПечатныхФорм.Колонки.Добавить("ИмяМакета");
КоллекцияПечатныхФорм.Колонки.Добавить("Картинка");
КоллекцияПечатныхФорм.Колонки.Добавить("ПолныйПутьКМакету");
КоллекцияПечатныхФорм.Колонки.Добавить("СинонимМакета");
КоллекцияПечатныхФорм.Колонки.Добавить("ТабличныйДокумент");
КоллекцияПечатныхФорм.Колонки.Добавить("Экземпляров");
КоллекцияПечатныхФорм.Колонки.Добавить("ИмяФайлаПечатнойФормы");
ПечФорма=КоллекцияПечатныхФорм.Добавить();
ПечФорма.ИмяВРЕГ=ВРег("СЧЕТ НА ОПЛАТУ_1");
ПечФорма.Экземпляров=1;
ПараметрыОтправки=Новый Структура;
ПараметрыОтправки.Вставить("Получатель");
ПараметрыОтправки.Вставить("Текст","");
ПараметрыОтправки.Вставить("Тема","");
ПараметрыВывода=Новый Структура;
ПараметрыВывода.Вставить("ДоступнаПечатьПоКомплектно",Ложь);
ПараметрыВывода.Вставить("ПараметрыОтправки",ПараметрыОтправки);
ОбъектыПечати=Новый СписокЗначений;
ОбъектДляСервера = РеквизитФормыВЗначение("Объект");
ЗаполнитьЗначенияСвойств(ОбъектДляСервера, Объект);
ОбъектДляСервера.Печать(
Массив,
КоллекцияПечатныхФорм,
ОбъектыПечати,
ПараметрыВывода
);
// Проверим, все ли макеты были сформированы
Для Каждого Стр Из КоллекцияПечатныхФорм Цикл
Если Стр.ТабличныйДокумент = Неопределено Тогда
ТекстСообщенияОбОшибке = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'В обработчике печати не был сформирован табличный документ для: %1'"),
Стр.ИмяМакета
);
ВызватьИсключение(ТекстСообщенияОбОшибке);
КонецЕсли;
Стр.ТабличныйДокумент.КоличествоЭкземпляров = Стр.Экземпляров;
КонецЦикла;
ТабДок=КоллекцияПечатныхФорм[0].ТабличныйДокумент;
ЗаголовокТабДок=КоллекцияПечатныхФорм[0].СинонимМакета;
КонецПроцедуры
Короче, все просто.
Пытливый ум может попробовать использовать все параметры, которые отправляются в процедуру Печать, но это надо далеко не всегда ))
Да, с тем табличным документом, что возвращает обработка, можно в принципе сделать что-то еще, не только Показать, но для целей отладки этого обычно не требуется.
Вступайте в нашу телеграмм-группу Инфостарт
отладка внешняя печатная форма
Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
См. также
Универсальные функции 1С 8.3 1С:Документооборот Россия Платные (руб)
ДО+ — расширение конфигурации, в котором собран постоянно пополняемый набор из 33 востребованных доработок для 1С:Документооборот КОРП 3.0: согласование задач прямо из мессенджеров MAX и Telegram, отзыв согласования и исполнения, гибкие повторные круги, эскалация с точностью до минут, контроль исполнительской дисциплины, выгрузка вложений в ZIP и склейка PDF, реестр документов в Excel, проверка дублей контрагентов и регистрационных номеров. Каждая возможность активируется отдельным флажком в режиме предприятия — включается только то, что нужно конкретной организации. Список функций расширяется с каждым релизом — текущая версия 2.1.0. Режим AddOn: типовая конфигурация не модифицируется, обновления ДО ставятся штатно, дополнительные лицензии и внешние компоненты не требуются. Внедрение силами администратора — около часа.
30000 руб.
09.07.2026 1455 1 0
Загрузка и выгрузка в Excel Универсальные функции Разработчик 1С:Предприятие 8 Россия Бесплатно (free)
Описанный ниже подход позволяет в три шага заполнять формулы в Excel файлы, вне зависимости от ОС сервера (MS Windows Server или Linux). Подход подразумевает отказ от работы с COM-объектом в пользу работы через "объектную модель документа" (DOM).
30.10.2025 8808 Abysswalker 11
Универсальные функции Работа с интерфейсом Разработчик 1С:Предприятие 8 Бесплатно (free)
Порой необходимо временно отключить расширение 1С, не удаляя его, чтобы не потерять данные. Но в этом случае при каждом запуске всем будет лезть уведомление о неактивном расширении, хотя очевидно, это техническая информация, которой не стоит лишний раз пугать пользователей.
14.05.2025 14588 DeerCven 16
Инструментарий разработчика Универсальные функции Запросы Разработчик 1С:Предприятие 8 1C:Бухгалтерия 1С:Бухгалтерия 3.0 1С:Зарплата и Управление Персоналом 3.x Бесплатно (free)
Внешняя обработка для создания запроса на основании табличных данных.
22.07.2024 11990 278 ixijixi 10
Универсальные функции Разработчик 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)
Благодаря этим пяти строчкам можно больше не заморачиваться с загрузкой из внешних файлов. Пользуюсь везде, всегда и постоянно.
21.05.2024 68955 dimanich70 87
Универсальные функции Разработчик 1С:Предприятие 8 1C:Бухгалтерия Абонемент ($m)
Задача: вставить картинку из буфера обмена на форму средствами платформы 1С.
1 стартмани
18.03.2024 9340 7 John_d 13
Универсальные функции Разработчик Стажер 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)
Пришлось помучиться с GUID-ами немного, решил поделиться опытом, мало ли кому пригодится.
12.02.2024 85995 atdonya 31
Универсальные функции Разработчик 1С:Предприятие 8 Бесплатно (free)
На заключительных этапах, когда идет отладка или доработка интерфейса, необходимо много раз переоткрыть внешний объект. Вот один из способов автоматизации этого.
30.11.2023 13515 ke.92@mail.ru 18
То есть в данных обработки он есть, но в кодинге я его не трогаю))) приноровилась уже)))
А всё от чего? В предыдущей ветке я уже говорил - нужно ДО ознакомиться со стандартом разработки печатных форм в БСП. И тогда не нужно будет приноравливаться к чему-то. Я вам алгоритм писал, как можно получить доступ к ИТС, для ознакомления с документацией. Вы получили его? Если нет - то обязательно получите. А то Ваш бубен скоро от танцев может порваться уже :)
Потом ссылка на объект надо в данных давать, а ведь можно и без неё обойтись, и будет все работать)))
А так да.. иногда приходится ставить ссылку на объект, если в процедуре формирования макета что-то не так выводится и не так читается.. а потом все равно как успешно отлажу, я делаю заново обработку, чтобы уже не было лишних форм(если они не нужны).
&НаСервере
Функция ПечатьНаСервере()
КоллекцияПечатныхФорм = УправлениеПечатью.ПодготовитьКоллекциюПечатныхФорм("ВПФ_ПечатьСчетФактуры");
ОбработкаОбъект = РеквизитФормыВЗначение("Объект");
ОбработкаОбъект.Печать(СписокОбъектов.ВыгрузитьЗначения(),
КоллекцияПечатныхФорм,
новый СписокЗначений,
Неопределено);
КоллекцияПечатныхФормМассив = ОбщегоНазначения.ТаблицаЗначенийВМассив(КоллекцияПечатныхФорм);
Возврат КоллекцияПечатныхФормМассив;
КонецФункции
&НаКлиенте
Процедура Печать(Команда)
//Этим способом все формы в одном табличном документе как в стандартном механизме печати,
//При необходимости можно сделать чтобы было в разных
КоллекцияПечатныхФормМассив = ПечатьНаСервере();
УправлениеПечатьюКлиент.ПечатьДокументов(КоллекцияПечатныхФормМассив);
КонецПроцедуры ПоказатьКоллекцияПечатныхФорм.Колонки.Добавить("ИмяФайлаПечатнойФормы");
Огромное человеческое спасибо.
Для ЗУП КОРП 3.1.10.50 нужна еще колонка
КоллекцияПечатныхФорм.Колонки.Добавить("ИмяФайлаПечатнойФормы");
использовал
УправлениеПечатью.ПодготовитьКоллекциюПечатныхФорм("АктВыполненныхУслугВнешн");
вылетает ошибка:
Значение не является значением объектного типа (Найти)
{ОбщийМодуль.УправлениеПечатью.Модуль(36)}: Возврат КоллекцияПечатныхФорм.Найти(ВРег(ИмяМакета), "ИмяВРЕГ") <> Неопределено;
ошибку разрулил используя код автора поста:
КоллекцияПечатныхФорм.Колонки.Добавить("ИмяВРЕГ");
ПечФорма.ИмяВРЕГ="АктВыполненныхУслугВнешн";
но при этом когда процедура Печать обработки доходит до функции проверки
УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "АктВыполненныхУслугВнешн")
то она благополучно возвращает ложь и печать дальше не идёт.
Вы можете заказать платную консультацию или разработку у автора. Будет создан приватный заказ на «Бирже заказов» для автора.
№ 239624
Создание 10.12.13 10:00
Обновление 25.01.20 19:06
Просмотры 31410
Загрузки 0
Рейтинг
57
Комментарии 43
Код открыт Да
Рубрики Универсальные функции
Кому Разработчик
Тип файла Нет файла
Платформа 1С:Предприятие 8
Конфигурация 1C:Бухгалтерия
Операционная система Windows
Страна Не имеет значения
Отрасль Не имеет значения
Налоги Не имеет значения
Вид учета Не имеет значения
Доступ к файлу Бесплатно (free)