Отладка дополнительных отчетов и обработок (Управляемые формы 8.3 БСП)

17.01.19

Разработка - БСП (Библиотека стандартных подсистем)

Собственно отладка дополнительных отчетов и обработок (Управляемые формы 8.3 БСП).

Доброго всем времени суток. Хотел бы поделиться способом отладки обработок БСП. Нового для себя Знатоки ничего не узнают, а вот новичкам, возможно, будет интересно. Метод заезженный, но здесь не встречал. При данном методе точки останова срабатывают всегда, проблем в своей практике не встречал (раз сделал и работает).

Те, кто не любит читать, могут посмотреть изображения и (думаю) все будет понятно без слов! 

 

1. Снимаем конфигурацию с поддержки (делаем копию и снимаем, мы же все делаем на копиях?! :) )

Конфигурация -> Поддержка -> Настройка поддержки -> Включить возможность изменения

2. Открываем Конфигурацию и ищем Общий модуль: ДополнительныеОтчетыИОбработки 

1

3. Редактируем функцию и процедуру:

Функция

2

3

 

Текст для копирования

Функция ПодключитьВнешнююОбработку(Ссылка) Экспорт

// Было:
// ИмяОбработки = Менеджер.Подключить(АдресВоВременномХранилище, ,БезопасныйРежим);
// Стало:
ИмяОбработки = Менеджер.Создать("c:\qwe.epf", Ложь);
ИмяОбработки = "qwe"; // Имя Внешней обработки, которую Вы отлаживаете, как оно задано в конфигураторе

 

Процедура

4

 

Текст для копирования

Процедура ПриПолученииРегистрационныхДанных(Объект, РегистрационныеДанные, ПараметрыРегистрации, РезультатРегистрации)
// Было:
// ВнешнийОбъект = Менеджер.Создать(РезультатРегистрации.ИмяОбъекта);
// Стало:
ВнешнийОбъект = Менеджер.Создать("c:\qwe.epf", Ложь);

 

4. Сохраняем и обновляем Конфигурацию

5. Создаем или переименовываем свою обработку, которую будем отлаживать. Задаем имя qwe и разместим ее в корне диска C:

6. Открываем ее в Конфигураторе и ставим Безопасный режим - Ложь

 

7. Запускаем 1С Предприятие и добавляем обработку в список, сохраняем.

 

8. Ставим точки останова в обработке

 

9. Запускаем нашу обработку на исполнение (вернее ту часть где стоит точка останова)

 

10. При нажатии попадаем в место отладки!  

На этом все.

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

 

P.S

Привык к данному методу и пользуюсь таковым.

Источник помощник

См. также

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

В статье описан алгоритм для включения документа или справочника в систему БСП. Будет полезно программистам 1С, начинающим работать с БСП.

24.10.2024    1088    PROSTO-1C    0    

12

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

В материале описан универсальный механизм работы с добавленными элементами на общую форму «ФормаОтчета». Думаю, облегчит работу многим разработчикам.

08.10.2024    978    PROSTO-1C    4    

10

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

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

04.10.2024    1829    MadRave    11    

24

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

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

10.09.2024    1816    MadRave    1    

17

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

А что, если долгожданная реализация Паузы в 1С смутно напоминает старую, проверенную? А?!

06.09.2024    1254    n_mezentsev    10    

8

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

Добавим дополнительные свойства в новый документ средствами БСП

02.09.2024    4105    John_d    10    

52

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

Всё больше организаций выбирает для серверов под 1С операционные системы Linux. Одним из отличий систем Windows и Linux является отсутствие COM объектов, которые зачастую использовались для формирования печатных форм офисных документов (Word). Конечно, можно выполнять печать и на клиенте, но есть риск импортозамещения. В работе у меня случались проблемы с зависанием процесса Word, поэтому я не люблю его использовать.

29.07.2024    5354    PROSTO-1C    12    

52
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. dsdred 3593 17.01.19 21:39 Сейчас в теме
А по проще то ни как?

Почитайте, еще в 8.3.9 появилась Аннотация &Вместо: http://v8.1c.ru/o7/201603module/index.htm

Есть и другие варианты отладки попроще:
https://infostart.ru/public/827126/#4P
29. пользователь 16.07.21 16:23
Сообщение было скрыто модератором.
...
2. davdykin 25 18.01.19 05:19 Сейчас в теме
Да, решение со снятием с поддержки конфы не эффективно, посмотрел я "https://infostart.ru/public/827126/#4P" какой-то не очень просто вариант.. там километр кода.
Когда появились расширения я сделал для основных конфигураций по расширению. В нем я перехватывал:
1. ПРоцедуру добавления внешней печатной формы из файла и писал путь к файлу в коментарий
2. Процедуру печати, если в коменте путь к существующему файлу, то открывал его вместо загруженного.
Таким образом данное расширение весит не много, можно подключать на живые базы, мои узкие задачи - отладка печатных форм, закрыло полностью.
3. dsdred 3593 18.01.19 08:07 Сейчас в теме
(2)
"https://infostart.ru/public/827126/#4P" какой-то не очень просто вариант.. там километр кода.

Там статья про регламенты с использованием БСП: Дополнительная обработка и отчеты просто, а в самом низу 4 пункт "Отладка" с ссылкой на статью где около 10 строчек кода и с одной строкой в случае если вы в доп обработке храните параметры и вам надо протестировать с сохраненными параметрами.

Просто данная статья как я думал будет о том как тестировать доп обработки которые могут быть Командой, регламентом, формой, отчетом... А тут только про команду, да еще и метод который снимает с поддержки.

Команды вообще тестировать проще до добавления в допы. На форму ссылку на документ вывести и все протестировать, после чего уже добавлять обработку в допы.
5. davdykin 25 18.01.19 10:58 Сейчас в теме
(3)Чего-то я не понял как вы хотите протестировать печатную форму до подключения? В любом случаи правка конфы - не вариант.. если вы сидите в одной конторе можно копию поправить, а вот если у вас на обслуги фиг пойми сколько... это вообще не вариант.
7. dsdred 3593 18.01.19 14:44 Сейчас в теме
(5)
Чего-то я не понял как вы хотите протестировать печатную форму до подключения

Наша беседа это тот случай когда комментарии лучше статьи...
Прикрепленные файлы:
ТестПечатнойФормыКартинки.doc
10. davdykin 25 18.01.19 21:24 Сейчас в теме
(7) Нет, ваш способ мне не нравиться, и вот почему:
Все-таки у вас процедура вызывается не через стандартные механизмы, соответственно будут "пробелы" в отладке, что, на мой взгляд, не очень удобно., для обычных форм была такая штука, ВнешниеПечатныеФормы.epf, вещь отличная, но не на БСП. Я сделал вот такое расширение, первый раз промаялся долго, в районе получаса часа, затем по аналогии для других конфигураций.
Пользоваться очень просто:
1. Подключаем расширение
2. Загружаем форму во внешние (при этом в коментарии прописывается путь к файлу, который и будет вызывать)
3. ТЕстируем.
Все механизмы стандартные, т.е. все параметры передаются как при реальной печати.
Прикрепленные файлы:
ДАВ_ОтладкаПечати_БП3.cfe
abrvalg; sulfur17; ACE$; anuar_medeup; Jeka86; DoctorRoza; allgorhythm; zakirov_CS24; +8 Ответить
11. dsdred 3593 18.01.19 22:48 Сейчас в теме
(10)На вкус и цвет как говорится.

П.С. Если все комменты собрать и нормально заилюстрировать и по типам команд разбить отличная статья выйдет
4. motorkuzbassa.it 100 18.01.19 09:36 Сейчас в теме
А зачем снимать с поддержки? модуль же можно в расширение "вместо", закинуть..не?
6. gubar 285 18.01.19 14:09 Сейчас в теме
(4)

Не слышал, поведайте на примере?
8. dsdred 3593 18.01.19 14:48 Сейчас в теме
(6)Шутите?
Вот пример с вместо
https://infostart.ru/public/829577/#2P


В первом комментарии ссылка на 1с с подробной документацией, даже с картинками.
9. v_id 106 18.01.19 20:29 Сейчас в теме
Намного полезнее devtools освоить
13. Bassgood 1449 20.01.19 13:21 Сейчас в теме
(9) Осваивать этот большой инструмент только ради отладки внешних обработок?
Ничего посложнее не нашлось? ;)
15. v_id 106 21.01.19 09:37 Сейчас в теме
(13)Весь не нужно (хотя полезно со все точек зрения), а в части отладки его установка и запуск проще и лучше документированы чем текущий способ. Обычно следующий вопрос, "а как отладить запрос"
16. Bassgood 1449 21.01.19 13:27 Сейчас в теме
(15) Все зависит от характера работы прогера - если дорабатывает конфиги внешних заказчиков (аутсорс или фриланс), то использование данной подсистемы будет нецелесообразным (для доработок зачастую достаточно пары-тройки внешних консолей и далеко не всегда есть возможность ее встраивания в конфу заказчика), если идет разработка крупного проекта или постоянные доработки своих конфигов (штатный прогер) - другое дело, подсистема будет полезна, а встраивать ее во все базы только ради использования тех же внешних 2-3 консолей - ну как бы и нафиг оно нужно?
p.s. Плюс подсистема реализована на обычных формах, каждый раз запускать обычный режим приложения для ее использования тоже постепенно начинает вымораживать, нежели простое открытие внешних консолей.
17. v_id 106 21.01.19 16:12 Сейчас в теме
(16)Похоже вы давно ИР не пользовались. Есть вариант в виде расширения, для отладки достаточно работать под толстым клиентом.
tormozit; Bassgood; +2 Ответить
28. erazh 16.03.20 17:28 Сейчас в теме
(17) Не всегда ИР можно воспользоваться: То прав не хватает, то по политике компании нельзя, то разработчик совтины вырезал поддержку расширения. Всякие случаи в жизни бывают.
12. zeegin 117 20.01.19 11:18 Сейчас в теме
Доп отчеты и обработки это легаси, используйте расширения.
14. dsdred 3593 20.01.19 17:33 Сейчас в теме
(12)
Доп отчеты и обработки это легаси

Это всего лишь Ваше мнение, а не реальность.

1 Более менее дорабатывать можно в расшерении с версии 8.3.9, а что делать если режим совместимости 8.3.8 или младше?
2 Доп обработки позволяют создавать команды, регламенты, формы и т.д. с хранимыми параметрами без добавления констант и прочих прелестей.
3 Позволяют делать горячее обновление которое не требует перезахода клиентом.
4 Позволяет легко настраивать видимость под конкретных пользователей.

П.С. Сам я использую расширения уже более 3-х лет и очень уважаю данную возможность и слежу за развитием, но доп отчеты и обработки в плане регламентов и добавления формы обработки использую регулярно.
Bassgood; +1 Ответить
18. acsent 1203 21.01.19 17:32 Сейчас в теме
может проще у обработки сделать форму и там выбирать объект и вызывать команду модуля?
https://infostart.ru/public/84922/
31. FReIM 9 05.03.22 10:51 Сейчас в теме
(18)Нет не проще. Вы таким образом никогда не поймете какие параметры передает БСП текущей версии в обработки и/или наоборот почеу не передает.
19. МимохожийОднако 142 22.01.19 09:35 Сейчас в теме
Любопытно посмотреть применение этого метода на компьютере с базовой версией ) без патчей и кряков ))
21. gubar 285 22.01.19 09:45 Сейчас в теме
22. МимохожийОднако 142 22.01.19 13:19 Сейчас в теме
20. gubar 285 22.01.19 09:42 Сейчас в теме
Почитал комменты, спасибо за подсказки и критику.
23. user858962 27.11.19 13:51 Сейчас в теме
Спасибо автору! Очень помогло.
24. gubar 285 27.11.19 14:08 Сейчас в теме
(23)

Спасибо Вам, сейчас есть методы попроще)
25. yurikmellon 6 27.11.19 14:16 Сейчас в теме
(24) огласите весь список, пожалуйста (с)
26. gubar 285 27.11.19 14:41 Сейчас в теме
27. yurikmellon 6 27.11.19 14:52 Сейчас в теме
30. alex4fm 27.08.21 10:15 Сейчас в теме
Хороший совет по данной теме. Я сделал в расширении. Сейчас уже работает аннотация &ИзменениеИКонтроль, у кого еще нет совместимости, можно и &Вместо. Кто-то писал, что с базовой не прокатит. Ну это да. А для всего остального сработает.

Во модуле объекта внешней обработки достаточно создать экспортную переменную ПутьДляОтладки.
Пример:
ПутьДляОтладки = "D:\ОтладкаДополнительныхОбработок\" + ЭтотОбъект.Метаданные().Имя + ".epf";


Для отладки нужно запустить 1С в режиме отладки с параметром запуска /C "РежимОтладки".
И все. Обработка будет отлаживаться в режиме отладки. А в рабочем режиме работать как обычно из справочника доп обработки.

Пример текстом ниже. Расширение прикладываю.

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


&ИзменениеИКонтроль("ПриПолученииРегистрационныхДанных")
Процедура ОДП_ПриПолученииРегистрационныхДанных(Объект, РегистрационныеДанные, ПараметрыРегистрации, РезультатРегистрации)

	// Подключение и получение имени, под которым объект будет подключаться.
	Менеджер = ?(ПараметрыРегистрации.ЭтоОтчет, ВнешниеОтчеты, ВнешниеОбработки);

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

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

		СведенияОВнешнейОбработке = ВнешнийОбъект.СведенияОВнешнейОбработке();
		...
КонецПроцедуры
Показать
Прикрепленные файлы:
Шаблон_ОтладкаДополнительныхОбработок.cfe
user733468; nano1c; BarsukM; FReIM; Antoska; +5 Ответить
32. One_Assembler 13.05.22 12:10 Сейчас в теме
Расширение с &ИзменениеИКонтроль, как минимум для "1С:Комплексная автоматизация 2 (2.5.7.394)"
Не забываем про "ИмяОбработки", как вначале статьи, правильно всё прописать в расширении.
А именно:

ИмяОбработки = Менеджер.Создать("АДРЕС.erf", Ложь);
ИмяОбработки = "НАЗВАНИЕ"; // Имя Внешней обработки, которую Вы отлаживаете, как оно задано в конфигураторе


ВнешнийОбъект = Менеджер.Создать("АДРЕС.erf", Ложь);
Прикрепленные файлы:
ОтладкаВнешних.cfe
33. dmitriy_zima 13.02.23 04:04 Сейчас в теме
кто-нибудь может понятно объяснить зачем 2 раза? практически во всех статьях так

ИмяОбработки = Менеджер.Создать("АДРЕС.erf", Ложь);
ИмяОбработки = "НАЗВАНИЕ";

или один написал - остальные скопипастили?
lexiff; философ; ipzotov; +3 Ответить
34. CK3 07.09.23 12:11 Сейчас в теме
(33) Скопипастили) Использую так:
Результат = Менеджер.Создать("АДРЕС.erf", БезопасныйРежим); //Результат можно при желании проверить.
ИмяОбработки = Ссылка.ИмяОбъекта;
35. Nel 31.10.23 13:47 Сейчас в теме
36. sulfur17 66 14.11.23 01:08 Сейчас в теме
забыли сказать что это работает только на файловой базе
Т.к. Менеджер.Создать("АДРЕС.erf", БезопасныйРежим); будет искать вашу обработку на диске сервера, а вы ее сохранили на своем клиентском.

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