Отладка подключаемых обработок

Программирование - Практика программирования

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

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

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

Если работаете на серверной базе:

  • должна быть включена отладка сервера
  • кроме этого добавляем в предмет отладки фоновые задания (Конфигуратор => Отладка\Подключение\Автоматическое подключение\ поставить флаг "Фоновые задания")
  • а еще лучше так не делать, а воспользоваться параметром запуска "РежимОтладки" (Конфигуратор => Сервис\ Запуск 1С предприятия \ Основные \ ПараметрЗапуска, см. документацию к БСП Приложение 3. Доступные параметры запуска приложения) - тогда вызов доп. обработки не будет выполняться в фоне, что для отладки проще и лучше.

См. также

Комментарии
1. Призрак (davdykin) 17 04.01.17 20:57 Сейчас в теме
Спасибо, познавательно.
2. Капитан Немо (capitan) 600 07.01.17 12:41 Сейчас в теме
Посмотрел статью, подумал - зачем так сложно? :)
Если ваша обработка может просто стартовать с диска D:\ПроведениеДокументов.epf
так и стартуйте ее с диска и отлаживайте
В чем профит запихивания во внешние обработки ?

А проблема отладки внешних обработок в том, что они свои настройки хранят в базе.
Ее вы этим финтом не решаете
user812196; ybatiaev; Alex_E; +3 2 Ответить
4. Роман Уничкин (unichkin) 901 07.01.17 23:06 Сейчас в теме
(2) (3)
Есть такая малость... Те параметры, которые передает этой самой обработке источник)) Через файл\открыть вы их не получите, разве что сами где-нибудь забьете. Кроме этого сама отладка ведется именно по контексту - открыл объект которому назначена обработка и выполняю команду... И сразу торможусь в конфигураторе на точке останова.И вижу весь отладочный контекст. Захотел - для одного объекта команду выполнил, захотел - для другого. ничего не перевыбирая, ничего не переписывая, а сразу. Больше возможностей для проверки.
yojeeg; Volchock; +2 Ответить
5. Роман Уничкин (unichkin) 901 07.01.17 23:07 Сейчас в теме
(2)
В чем профит запихивания во внешние обработки ?

Обращу ваше внимание на тему статьи - "Отладка дополнительных обработок БСП", а не просто внешних обработок. О профите от помещения в внешние обработки речи не идет. Если изначально делаем назначаемую\глобальную обработку для БСП - так будет проще отлаживать, чем через файл\открыть.
akor77; yojeeg; +2 Ответить
28. Сергей (strange2007) 129 27.02.18 04:44 Сейчас в теме
(5) Не проще. Создание обработки, это циклический процесс: Открыть, начать отладку, внести изменения, сохранить и переоткрыть заново.
Для быстрой и качественной отладки делается по одному шаблону для каждого вида (отчёт, заполнение ТЧ и т.д.) и всё. Можно вести разработку для обработок на БСП точно так же, как если бы разрабатывалась обычная обработка или обычный отчёт.
29. Роман Уничкин (unichkin) 901 27.02.18 10:26 Сейчас в теме
(28)
Для быстрой и качественной отладки делается по одному шаблону для каждого вида (отчёт, заполнение ТЧ и т.д.) и всё. Можно вести разработку для обработок на БСП точно так же, как если бы разрабатывалась обычная обработка или обычный отчёт.

Мне надоело что-то кому-то доказывать)) Если смотрели видео \ пробовали сами этот подход - то профит должен быть очевиден. Если не делали этого - то попробуйте. Ну, или работайте как вам больше нравится) В конце концов, если кому-то кажется правильным работать эмулируя окружение - это его дело.
30. Сергей (strange2007) 129 27.02.18 10:59 Сейчас в теме
(29) Не надо доказывать. Терпите, ведь это по сути "барахолка". Видео, это для многих круто, но не для всех. Проще говоря в работе видео никогда вообще не смотрю. Поэтому приходится как-то по косвенным признакам пытаться догадываться.
По поводу окружения не понял. Ведь в шаблонах создаёшь это самое окружение в виде параметров.
3. Алексей Ермилов (Alex_E) 1775 07.01.17 13:17 Сейчас в теме
Всё, что можно запустить через Файл - Открыть отлаживается тупо и без выкрутасов.....
klaus38; docerman; strange2007; red80; user599011_nusmancrb; +5 Ответить
6. Olga Kazakevich (ok521) 21 12.01.17 17:33 Сейчас в теме
Метод хороший, для отладки внешних печатных форм - то, что нужно. Позволяет цеплять обработку к нужному объекту без всяких дополнительных ухищрений. Подходит и для серверного метода, и для клиентского.
nagaitseff; +1 Ответить
7. Александр Попков (pas) 51 16.01.17 13:44 Сейчас в теме
Если в подключаемой обработке есть форма с командными кнопками, то отладчик не заходит в процедуры формы. Видимо, ваш код необходимо выполнять до захода в форму.
8. Роман Уничкин (unichkin) 901 18.01.17 15:57 Сейчас в теме
(7) надо понимать, откуда форма открывается. Тут ведь происходит точечная отладка - т.е. конкретный метод выполняем через внешнюю обработку. Ну переопределите открытие формы - в ПриОткрытии подключайте внешнюю обработку, открывайте ее форму, от исходной отказывайтесь. Все аналогично.
9. Сергей Старых (tormozit) 4659 05.10.17 09:04 Сейчас в теме
В инструментах разработчика в вариантах Расширение и Подсистема есть инструмент "Отладка внешних обработок БСП". Он позволяет отлаживать внешние отчеты и обработки из справочника БСП в натуральном виде в заданном каталоге с минимумом манимпуляций.
Прикрепленные файлы:
kote; корум; unichkin; +3 Ответить
10. Сергей Старых (tormozit) 4659 14.11.17 16:20 Сейчас в теме
(9) Обнаружил, что в БСП 2.4 изменился внутренний механизм работы с внутренними событиями. На нем я не нашел как заставить работать инструмент "Отладка внешних обработок БСП" из ИР (перенаправлять создание внешних обработок в файлы).
23. Евгений Нагайцев (nagaitseff) 12 20.02.18 12:13 Сейчас в теме
(9)
это очень хороший инструмент, но отладка работает в том случае, если инструменты разработчика внедрены в конфигурацию (это ответ разработчика инструментов)
24. Сергей Старых (tormozit) 4659 20.02.18 13:03 Сейчас в теме
(23) Использовать эту возможность можно не только при внедрении в конфигурацию (вариант Подсистема), но и при подключении расширения конфигурации (вариант Расширение). А вот вариант Портативный действительно не позволяет использовать эту возможность. Я кстати есть разработчик подсистемы "Инструменты разработчика".
25. Евгений Нагайцев (nagaitseff) 12 20.02.18 14:58 Сейчас в теме
(24) Спасибо, про расширение не знал. Буду пользоваться. Инструмент то незаменимый!
11. binx (binx) 08.12.17 10:02 Сейчас в теме
я обычно создаю форму, создаю на ней реквизиты и поля для требуемых параметров. Отлаживаю потом переписываю на работу как доп. обработки.
немного это времени занимает.
ybatiaev; +1 Ответить
12. Роман Уничкин (unichkin) 901 08.12.17 15:31 Сейчас в теме
(11)
немного это времени занимает

- много. И оно не надо. При таком подходе вы лишены контекста разработки, отладка идет от эмуляции окружения.
13. binx (binx) 08.12.17 18:51 Сейчас в теме
контекста разработки я себя не лишаю, и время набить несколько параметров не проблема.
я не против вашего метода. Я делюсь своим.
14. Роман Уничкин (unichkin) 901 08.12.17 22:21 Сейчас в теме
(13) я понимаю) Но я против вашего, и делюсь этим) Поскольку сам проходил этот этап - и могу сказать, что это "идеальный газ". Отладка по контексту помогает выявить большое количество ошибок, о которых вы и не узнаете если будете все параметры эмулировать через отладочную форму. Конечно, все еще от конфы зависит, от ситуации. Но лично у меня скорость\качество разработки улучшились.
15. binx (binx) 09.12.17 10:59 Сейчас в теме
вопрос, ваш метод будет работать в клиент-серверном варианте?
17. Роман Уничкин (unichkin) 901 09.12.17 14:03 Сейчас в теме
16. binx (binx) 09.12.17 11:00 Сейчас в теме
И о каком контексте вы все время говорите кроме передаваемых в обработку параметров?
18. Роман Уничкин (unichkin) 901 09.12.17 14:07 Сейчас в теме
(16) Я имею в виду что запуск обработки \ отчета происходит по пользовательскому событию. Вы будете открывать обработку в режиме предприятия, забивать параметры, нажимать на кнопку. Я буду открывать документ, вызывать команду из его формы - все также, как делает пользователь. При этом мне не понадобится перезапускать 1С, или переоткрывать инициализирующую форму - у меня есть одна команда, например для заполнения табличной части. Я вызываю ее, при этом всю разработку веду в внешней обработке.
31. Сергей (strange2007) 129 27.02.18 11:00 Сейчас в теме
(18) один раз выбираю во внешней обработке нужный документ, ввожу имя ТЧ и всё, хоть запереоткрывайся, ничего выбирать не надо.
19. binx (binx) 09.12.17 17:48 Сейчас в теме
в клиент серверном варианте кто должна лежать обработка?
20. Роман Уничкин (unichkin) 901 09.12.17 20:35 Сейчас в теме
В каталоге, доступном пользователю 1С. На локальной машине с этим проблем обычно не возникает, если разнесены - сделайте шару.
21. Иван Карло (johnnyshut23) 09.12.17 22:30 Сейчас в теме
22. Дмитрий Николаев (bsturtle) 165 19.02.18 19:01 Сейчас в теме
Красиво, просто и понятно. спасибо. Будем использовать
26. Константин Корзин (kkv90) 45 22.02.18 12:00 Сейчас в теме
27. Ildar Gabdrakhmanov (spezc) 396 26.02.18 12:46 Сейчас в теме
32. Иван Александров (Gorec17) 28.02.18 16:22 Сейчас в теме
33. Станислав Коляда (it@contlog.ru) 12.03.18 11:14 Сейчас в теме
Спасибо в моей задаче этот метод помог. Но единственно что нужно сохранить обработку на общем ресурсе который одинаково доступен как серверу так и отладчику с клиентом. если они разнесены на разные машины то путь к обработке должен быть через \\ , а если на одной то можно как в примере. Важно чтобы предприятие и конфигуратор открывали обработку с одним и тем-же путем.
34. Роман Уничкин (unichkin) 901 12.03.18 18:07 Сейчас в теме
(33) ну да, это мне кажется прозрачный момент
35. Сергей Крайнов (ccserg) 49 19.03.18 15:04 Сейчас в теме
что то я не понял , как отладить не Печатную форму , а обработку заполнения ТЧ
и не понял зачем так тода извращаться если таким же способом можно Универсальную создать ? с выбором файла ?
36. Роман Уничкин (unichkin) 901 19.03.18 15:57 Сейчас в теме
(35)
и не понял зачем так тода извращаться если таким же способом можно Универсальную создать ? с выбором файла ?

Смотрите видео.. Все по аналогии. Профит:
- не надо делать лишних интерфейсов - работаем, повторяя пользовательский сценарий в 1С
- не надо эмулировать окружение (забивать параметры на форму)
- не надо использовать вспомогательные обработчики для отладки - я ими попользовался, и скорее бы такой подход назвал извращением, чем этот
37. Сергей Крайнов (ccserg) 49 19.03.18 19:03 Сейчас в теме
(36)
в видео у вас Печатная форма , и процедура Печать в модуле обработки
у меня обработка ТЧ документа ,
в СведенияОВнешнейОбработке описана команда открытия допформы и все действия в модуле формы уже
не понятно куда в таком случае добавлять код который у вас в процедуре Печать добавляется ?
38. Роман Уничкин (unichkin) 901 19.03.18 21:45 Сейчас в теме
(37)
не понятно куда в таком случае добавлять код который у вас в процедуре Печать добавляется ?

Дайте пример? Вообще, по-идее на форме должен быть только интерактив, а основные действия - в модуле объекта.
39. Сергей Крайнов (ccserg) 49 20.03.18 06:58 Сейчас в теме
(38)вот к примеру эта обработка
https://infostart.ru/public/561065/
если надо могу её вам скинуть
вызывается форма , где указываются параметры , из формы они переносятся в документ
код в модуле обработки :
Функция СведенияОВнешнейОбработке() Экспорт
	Назначения = Новый Массив ;
	Назначения.Добавить("Документ.ТабельУчетаРабочегоВремени") ;
	
	ПараметрыРегистрации = Новый Структура ;
	ПараметрыРегистрации.Вставить("Вид","ЗаполнениеОбъекта");
	ПараметрыРегистрации.Вставить("Назначение",Назначения);
	ПараметрыРегистрации.Вставить("Наименование","Заполнить Сводно");
	ПараметрыРегистрации.Вставить("Версия","1.0");
	ПараметрыРегистрации.Вставить("Информация","Дополнительная обработка табличной части табеля");
	ПараметрыРегистрации.Вставить("БезопасныйРежим",Ложь); ///--отладка

	
	Команды = ПолучитьТаблицуКоманд() ;
	ДобавитьКоманду(Команды, "Заполнить сводно","ЗаполнитьДокумент","ОткрытиеФормы",Истина,) ;
	

	ПараметрыРегистрации.Вставить("Команды",Команды) ;
	

	Возврат ПараметрыРегистрации;

КонецФункции

Показать

остальной код в уже в форме
40. Роман Уничкин (unichkin) 901 20.03.18 11:52 Сейчас в теме
(39)
ОткрытиеФормы

Как я думал - обвал по архитектуре. Таблицу необходимо заполнять на сервере. Саму таблицу - в табличную часть, заполняем ее на сервере, на клиенте отражаем результат заполнения. Серверный метод можно отладить, используя данный подход. Предупреждая вопросы - переносить алгоритм заполнения на сервер надо не ради отладки, а ради соблюдения ИТС, см. например Минимизация кода, выполняемого на клиенте.
Саму форму теоретически отладить можно, для этого надо сделать метод экспортным и переопределить открытие формы, открыв форму внешней обработки - однако у меня ни разу такой потребности не возникало.
41. Сергей Крайнов (ccserg) 49 20.03.18 11:58 Сейчас в теме
(40)
как таблицу на сервере ? форма документа открыта на клиенте , зачем её на сервере заполнять
или я не понимаю что то ?
почитал по ссылке , там про сложные алгоритмы и ресурсы компа , это не важно абсолютно в моём случае
42. Роман Уничкин (unichkin) 901 20.03.18 12:21 Сейчас в теме
(41)
зачем её на сервере заполнять

- затем, что работа с таблицей формы в большинстве случаев может породить неявные вызовы сервера. Во-вторых - в принципе при разработке надо стремиться к тому чтобы на форме был только интерактив, весь служебный интерфейс необходимо разрабатывать на сервере -> в модуле объекта. Вы же совместили интерфейс с самим алгоритмом.
К сожалению, все обычно руководствуются правилом "что разрешено - то не запрещено". Почитайте статьи про рефакторинг, на ИС, возможно придете к этим-же выводам.
Не хочу здесь проводить код-ревью вашей обработки, много писать придется. Да вам оно, думаю и не надо)
43. Сергей Крайнов (ccserg) 49 20.03.18 12:53 Сейчас в теме
(42)скорей всего и не надо , до управляемых форм все было отлично
как на эту ерунду (клиент/сервер) перешли так всё по другому стало ... а многим оно и не нужно
а я прикладные задачи решаю а не глобальные ...
и как вы заметили , кода прибавляется , зачем непонятно , когда тут простейшие алгоритмы
спасибо , может почитаю чего нибудь в этом направлении

а у вас есть пример любой обработки с этим кодом ? поделитесь пожалуйста .
44. Роман Уничкин (unichkin) 901 20.03.18 14:16 Сейчас в теме
(43) Посмотрите примеры в БСП, вот демка для заполнения контрагентов
Прикрепленные файлы:
_ДемоЗаполнениеКонтрагентов.epf
45. Андрей Н (fanast2) 18.04.18 13:47 Сейчас в теме
Метод прикольный, спору нет. Но только не работает у меня:

База на сервере, все сделал как в примере - отладка фоновых заданий, параметр запуска. На точки останова не тормозиться и все тут. Сообщения если оставлять, все выводит в правильном порядке. подскажите что еще попробовать можно
46. Роман Уничкин (unichkin) 901 18.04.18 16:06 Сейчас в теме
(45)
База на сервере, все сделал как в примере - отладка фоновых заданий, параметр запуска. На точки останова не тормозиться и все тут. Сообщения если оставлять, все выводит в правильном порядке. подскажите что еще попробовать можно

Отладка \ Подключение \ Подключенные предметы отладки - должны при запуске базы автоматически светится две строки. Тонкий клиент \ Сервер. Это есть?
47. Андрей Н (fanast2) 19.04.18 04:51 Сейчас в теме
(46) Да, есть. Платформа 8.3.10.2580. Еще один факт: пробую печатать - отладка не запускается. Следом открываю обработку через файл - открыть, нажимаю кнопку и ТОЖЕ НЕ ПОПАДАЮ В ОТЛАДКУ. В конфигураторе ставлю пробел, сохраняю, открываю - появляется отладка.
то есть смысл в том, что если нажать кнопку печать, то отладка отваливается от этого файла...?

обработка лежит на сетевом диске, он доступен ото всюду. путь тоже правильно написан
48. Андрей Н (fanast2) 19.04.18 05:26 Сейчас в теме
(47) Поставил точку останова в общем модуле, в который обращается моя обработка, поскольку точки останова в самой обработине не работали. И воуаля, мы зашли туда, F11, и выходим снова в обработку. Но только открылось другое окно (которое слева на картинке)

Как я понял проблемы была в букве сетевого диска и пути к обработке. Я открыл вот такую обработку N:\\*** а через общий модуль открылась обработка вот с таким путем \\192.168****\
Прикрепленные файлы:
49. Роман Уничкин (unichkin) 901 19.04.18 11:49 Сейчас в теме
(48)
Как я понял проблемы была в букве сетевого диска и пути к обработке. Я открыл вот такую обработку N:\\*** а через общий модуль открылась обработка вот с таким путем \\192.168****\

А, да, есть такое. Пути должны быть одинаковые.
Оставьте свое сообщение