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

23.03.20

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Вступайте в нашу телеграмм-группу Инфостарт

См. также

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

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

15500 руб.

02.09.2020    202538    1116    410    

1021

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

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP, УНФ, КА и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы. Может выполнять свертку одновременно в несколько потоков. А так же автоматически, без непосредственного участия пользователя. Решение в Реестре отечественного ПО

8400 руб.

20.08.2024    35625    206    104    

195

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

Расширение для создания и редактирования печатных форм в системе 1С:Предприятие 8.3. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и прозрачность разработки, а также навести порядок в многообразии корпоративных печатных форм.

22200 руб.

06.10.2023    23981    62    26    

92

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

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

16000 руб.

10.11.2023    16469    69    39    

88

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

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

9360 руб.

17.05.2024    34674    123    53    

165

SALE! 30%

Инструментарий разработчика WEB-интеграция 1С v8.3 1C v8.2 1C:Бухгалтерия 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Зарплата и Управление Персоналом 3.x Платные (руб)

Инструмент для генерации OpenApi (Swagger) спецификаций на основании файлов конфигураций 1С. Это консольное и десктопное приложение на языке Rust с полноценным редактором кода, содержащим автозамену и подсвечивание ошибок для быстрого и безошибочного написания документирующего комментария.

18000 12600 руб.

22.11.2024    1738    1    0    

8

Инструментарий разработчика Программист 1С v8.3 1C:Бухгалтерия Россия Платные (руб)

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

6000 руб.

07.02.2018    107157    249    100    

313

Инструментарий разработчика 1С v8.3 1C:Бухгалтерия 1С:ERP Управление предприятием 2 Платные (руб)

Разработка Конструктор автоматизированных рабочих мест "Конструктор АРМ" реализована в виде расширения и является универсальным инструментом для создания АРМ любой сложности в пользовательском режиме.

3600 руб.

27.12.2024    2867    6    0    

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

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

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

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

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


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

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

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

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

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

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

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

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



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

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