Подключаем внешнюю печатную форму в режиме отладчика

23.03.20

Разработка - Инструментарий разработчика

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

Конфигурация у меня УТ 11.4 + CRM, короче УТ11.4, я сделал выгрузил рабочую базу через конфигуратор в файл dt. Затем создал папку тестовая база, открыл программу и создал новую базу без конфигурации, каталогом разумеется указал, выше созданную папку, далее открыл новую базу в режиме конфигуратора и загрузил тот dt файл который мы выгрузили, кстати, все это я сделал на учебной (демо) платформе.

Но этот метод можно использовать и на серверной базе.

 База у нас находится нп поддержке 1с, т.е. она типовая, следовательно изменять конфигурацию мы не будем, но для решения моего метода, нужно внести изменения в код конфигурации и что же блин делать, а вот что создаем расширение: нажимаем Конфигурация-Расширения конфигурации, далее нажимаем на беленький плюсик на зеленом фоне (добавить) в открывшемся окне пишем как будем называть свое расширение у меня VID назначение оставляем адаптация.

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

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

После этого у нас откроется пустое окно, а именно это модуль который мы добавили, но только он в расширении и он пустой, поэтому теперь ищем в том же модуле конфигурации функцию ПодключитьВнешнююОбработку и процедуру ПриПолученииРегистрационныхДанных, над функцией добавляем атрибут Вместо, а над процедурой После, а также переименовываем процедуру и функцию, чтобы они не дублировались с основной конфигурации, я добавил свой идентификатор и сокращение расширение, т.е. VID_Расш

 Далее открываем данную функцию и меняем часть кода на этот, а оригинальный код комментируем:

ИмяОбработки = Менеджер.Создать ("C:\ВашаФорма.epf", Ложь);
ИмяОбработки = "ВашаФорма"

 Скопировать путь фашей формы можно следующим способом, находите вашу форму и удерживая клавишу Shift нажимаем ПКМ (правая кнопка мыши - это та которую вы будете видит справа от левой)))), и у вас появится там надпись "копировать как путь", ее и нажимаете, путь у Вас копируется в буфер обмена компьютера, а вам остается только вставить в код, опять же правой кнопкой мыши или нажимая Ctrl + V. 

Далее открываете процедуру и также вносите изменения в код:

ВнешнийОбъект = Менеджер.Создать ("С:\ВашаФорма.epf", Ложь);

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

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

Я установил точку останова с помощью клавиши F9, также можно клацнуть мышкой по серенькой полоске в модуле два раза она тоже появиться, установил я ее на функцию СведенияОВнешнейОбработке, затем открыл программу 1С в режиме отладчика, Нажал: НСИ и администрирование - Печатные формы, отчеты и обработки - -Дополнительные отчеты и обработки, затем нажал на кнопку добавить и обновить из файла, указываем именно ту обработку к которой указывали путь в модуле!

Разумеется из-за того, что точку мы установили на функцию СведенияОВнешнейОбработке, то при добавлении обработки, нас сразу перенесло в режим конфигуратора и появилась та нужная нам белая стрелка на красном кружке.

Не обессудьте, хорошего всем дня и главное не болеть! 

См. также

SALE! 20%

Infostart Toolkit: Инструменты разработчика 1С 8.3 на управляемых формах

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

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

13000 10400 руб.

02.09.2020    122159    670    389    

714

SALE! 25%

Infostart PrintWizard

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

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

18000 15300 руб.

06.10.2023    7293    21    6    

39

SALE! 20%

Infostart УДиФ: Управление данными и формами

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

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

10000 8000 руб.

10.11.2023    3537    11    1    

34

SALE! 30%

PowerTools

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

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

3600 2520 руб.

14.01.2013    177749    1073    0    

849

Многопоточность. Универсальный «Менеджер потоков» 2.1

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

Восстановление партий или взаиморасчетов, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!

5000 руб.

07.02.2018    99347    239    97    

296

[ЕХТ] Фреймворк для Расширений 1С

Инструментарий разработчика Платформа 1С v8.3 Управляемые формы Платные (руб)

"Фреймворк для Расширений 1С" это универсальное и многофункциональное решение, упрощающее разработку и поддержку создаваемых Расширений. Поставляется в виде комплекта из нескольких Расширений с открытым исходным кодом. Работает в любых Конфигурациях в режиме Управляемого приложения с режимом совместимости 8.3.12 и выше без необходимости внесения изменений в Конфигурацию.

3000 руб.

27.08.2019    18113    6    8    

39

1С HTML Шаблоны / HTML Templates

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

Быстрая и удобная обработка для работы с шаблонами HTML. Позволяет легко и быстро формировать код HTML.

2040 руб.

27.12.2017    28110    3    10    

15

Выполнение произвольного кода или запроса с параметрами через Web-сервис (замена COM-подключений)

Инструментарий разработчика Обмен между базами 1C Платформа 1С v8.3 Платные (руб)

В процессе работы в 1С часто возникает потребность получить данные из другой базы.  Обычно это делается через COM-соединение, и время выполнения запроса при этом оставляет желать лучшего. В данной публикации представлено универсальное решение, позволяющее практически моментально выполнить произвольный код или запрос с параметрами в другой информационной базе через Web-сервис.

2400 руб.

24.09.2019    23602    15    15    

32
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. nomad_irk 71 23.03.20 16:14 Сейчас в теме
(0) Т.е. добавить форму в обработке с полем выбора нужного вида объекта и кнопкой, выполняющим формирование печатной формы, не получилось?
Sedaiko; Бэнни; +2 Ответить
2. VID1234 108 23.03.20 16:15 Сейчас в теме
3. VmvLer 23.03.20 16:37 Сейчас в теме
очередной костыль и по коду ясно, что только в толстом клиенте, почему только в толстом - мне лень его запускать, да и забыл когда использовал.

РежимОтладки и увеличенный пулл портов отладки, иногда F11 - решают задачу отладки на 100%.

Если есть желание извращаться с внешним файлом
- в любом клиенте современной БСП
- с внешними отчетами с комами и прочей щняжкой
-...
, то я прикрутил в расширение код попроще

просто бросаем этот код в расширяемый модуль(указано в комментах),
никаких полей и шамантва больше не нужно

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


#Область Расш1_ОтладкаВнешнихОбъектовБСП_ОбщийМодуль_ДополнительныеОтчетыИОбработки

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

&Вместо("ПриПолученииРегистрационныхДанных")
Процедура Расш1ПриПолученииРегистрационныхДанных(Объект, РегистрационныеДанные, ПараметрыРегистрации, РезультатРегистрации)
	
	ПродолжитьВызов(Объект, РегистрационныеДанные, ПараметрыРегистрации, РезультатРегистрации);
	
	// Расширяем метод основной конфигурации если у внешнего объекта включен режим отладки и указано имя файла объекта отладки в поле "Комментарий".
	ОбъектОтладкиФайлПолноеИмя = Расш1ПолучитьПолноеИмяФайлаВнешнегоОбъектаОтладки(Объект.Ссылка);
	Если НЕ ПустаяСтрока(ОбъектОтладкиФайлПолноеИмя) Тогда
		
		ВнешнийОбъект = ПолучитьВнешнийОбъектОтладки(Объект.Ссылка, ОбъектОтладкиФайлПолноеИмя);  // Получаем внешний объект отладки по имени файла
		ВнешнийОбъектМетаданные = ВнешнийОбъект.Метаданные();
		
		СведенияОВнешнейОбработке = ВнешнийОбъект.СведенияОВнешнейОбработке();
		ОбщегоНазначенияКлиентСервер.ДополнитьСтруктуру(РегистрационныеДанные, СведенияОВнешнейОбработке, Истина);
		
		// ≪✔▼ СКОПИРОВАННЫЙ БЛОК КОДА из окончания метода основной конфигурации ▼≫
		Если РегистрационныеДанные.Наименование = Неопределено ИЛИ РегистрационныеДанные.Информация = Неопределено Тогда
			Если РегистрационныеДанные.Наименование = Неопределено Тогда
				РегистрационныеДанные.Наименование = ВнешнийОбъектМетаданные.Представление();
			КонецЕсли;
			Если РегистрационныеДанные.Информация = Неопределено Тогда
				РегистрационныеДанные.Информация = ВнешнийОбъектМетаданные.Комментарий;
			КонецЕсли;
		КонецЕсли;
		
		Если ТипЗнч(РегистрационныеДанные.Вид) <> Тип("ПеречислениеСсылка.ВидыДополнительныхОтчетовИОбработок") Тогда
			РегистрационныеДанные.Вид = Перечисления.ВидыДополнительныхОтчетовИОбработок[РегистрационныеДанные.Вид];
		КонецЕсли;
		
		РегистрационныеДанные.Вставить("ХранилищеВариантов");
		Если РегистрационныеДанные.Вид = Перечисления.ВидыДополнительныхОтчетовИОбработок.ДополнительныйОтчет
			Или РегистрационныеДанные.Вид = Перечисления.ВидыДополнительныхОтчетовИОбработок.Отчет Тогда
			Если ВнешнийОбъектМетаданные.ХранилищеВариантов <> Неопределено Тогда
				РегистрационныеДанные.ХранилищеВариантов = ВнешнийОбъектМетаданные.ХранилищеВариантов.Имя;
			КонецЕсли;
		КонецЕсли;
		
		РегистрационныеДанные.Команды.Колонки.Добавить("ВариантЗапуска");
		
		Для Каждого КомандаОписание Из РегистрационныеДанные.Команды Цикл
			КомандаОписание.ВариантЗапуска = Перечисления.СпособыВызоваДополнительныхОбработок[КомандаОписание.Использование];
		КонецЦикла;
		
		#Если ТолстыйКлиентОбычноеПриложение Тогда
			РезультатРегистрации.ИмяОбъекта = ВнешнийОбъектМетаданные.Имя;
		#КонецЕсли
		// ≪✔▲ СКОПИРОВАННЫЙ БЛОК КОДА из окончания метода основной конфигурации ▲≫
		
	КонецЕсли;
	
КонецПроцедуры

Функция Расш1ПолучитьПолноеИмяФайлаВнешнегоОбъектаОтладки(Ссылка)

	ОбъектОтладкиФайлПолноеИмя = "";
	
	Если Ссылка.Публикация = Перечисления.ВариантыПубликацииДополнительныхОтчетовИОбработок.РежимОтладки Тогда
		ТекстОшибки = "";
		ЗаголовокОшибки = "
		|Для внешнего объекта вида " + """" + Ссылка.Вид + """" + " с именем " + """" + Ссылка.Наименование + """
		|включен режим отладки, что означает отладку объекта из файла. Причем, путь к файлу 
		|должен быть доступен на сервере и указан в поле ""Комментарий"" внешнего объекта.";
		
		ОбъектОтладкиФайлПолноеИмя = СокрЛП(Ссылка.Комментарий);
		Если ПустаяСтрока(ОбъектОтладкиФайлПолноеИмя) Тогда
			ТекстОшибки = "
			|
			|Обратитесь к разработчику!";
		Иначе	
			ПроверяемыйФайл = Новый Файл(ОбъектОтладкиФайлПолноеИмя);
			Если НЕ ПроверяемыйФайл.Существует() Тогда
				ТекстОшибки = "
				|
				|Файл не существует по указанному пути: """ +ОбъектОтладкиФайлПолноеИмя+ """ 
				|
				|Если после записи объекта ошибка возникнет вновь, то обратитесь к разработчику!";
			КонецЕсли;
		КонецЕсли;
		
		Если НЕ ПустаяСтрока(ТекстОшибки) Тогда
			ВызватьИсключение (ЗаголовокОшибки + ТекстОшибки); 
		КонецЕсли;
		
	КонецЕсли;	

	Возврат  ОбъектОтладкиФайлПолноеИмя;
	
КонецФункции 

Функция ПолучитьВнешнийОбъектОтладки(Ссылка, ОбъектОтладкиФайлПолноеИмя)
	
	// Получение менеджера внешнего объекта
	Вид = Ссылка.Вид; 
	Если Вид = Перечисления.ВидыДополнительныхОтчетовИОбработок.Отчет ИЛИ Вид = Перечисления.ВидыДополнительныхОтчетовИОбработок.ДополнительныйОтчет Тогда
		Менеджер = ВнешниеОтчеты;
	Иначе
		Менеджер = ВнешниеОбработки;
	КонецЕсли;
	
	// Создание внешнего объекта по полному имени файла
	ОбъектОписанияЗащиты = Новый ОписаниеЗащитыОтОпасныхДействий;
	ОбъектОписанияЗащиты.ПредупреждатьОбОпасныхДействиях = Ложь; // Отключает предупреждения защиты незавимо от настроек пользователя и информациооной базы
	ОбъектОтладки = Менеджер.Создать(ОбъектОтладкиФайлПолноеИмя, Ложь, ОбъектОписанияЗащиты); // БезопасныйРежим = Ложь, ОбъектОписанияЗащиты
	
	Возврат ОбъектОтладки;
	
КонецФункции

#КонецОбласти
Показать



Насчет код попроще я погарячился, главное когда мне надо отладить внешний отчет/ обработку я просто пишу имя файла(доступное на сервере, например \\....) в комментарий элемента справочника внешних отчетов и в этом же элементе жму кнопку Отладка - всё.
По завершении отладки стираю путь, отжимаю кнопку и заливаю новую версию в элемент.

Этот код я тут кидал ранее и то, что автор пришел к той же методике не удивительно - другие пути более сложны.
Правда, мне лень разбираться почему почему у автора толстый клиент и много воды.
Dimasik2007; +1 Ответить
6. VID1234 108 23.03.20 17:15 Сейчас в теме
4. nomad_irk 71 23.03.20 17:00 Сейчас в теме
Просто оставлю это здесь.......
Прикрепленные файлы:
ВПФ_БолванкаСВозможностьюОтладки.epf
jobkostya1c_ERP; Sedaiko; work.sable; adeich; Il; wowik; +6 Ответить
5. VID1234 108 23.03.20 17:15 Сейчас в теме
7. davdykin 25 23.03.20 17:25 Сейчас в теме
я дела практически такое же расширение, но я перехватил добавление файла печатной формы во внешние доработки, и сохранял его путь в коментарий, а потом создавал обработку из этого пути, таким образом не меняя расширение можно отлаживать любое количество печатных форм.
8. VID1234 108 23.03.20 17:29 Сейчас в теме
9. v_id 106 23.03.20 20:27 Сейчас в теме
10. VID1234 108 24.03.20 14:09 Сейчас в теме
(9) Спасибо. Я только встретил такую фишку, попробую.
11. leosoft 165 24.03.20 14:23 Сейчас в теме
12. v_id 106 24.03.20 15:20 Сейчас в теме
13. leosoft 165 24.03.20 15:42 Сейчас в теме
(12) Понятно, про эти инструменты я знаю, спасибо.
Оставьте свое сообщение