1с как отладить внешнюю обработку
Перейти к содержимому

1с как отладить внешнюю обработку

  • автор:

Отладка внешней обработки

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

В этом примере мы рассмотрим оба сценария отладки.

Если внешняя обработка предназначена для работы с конкретной конфигурацией или вы хотите отлаживать обработку на определенных данных, содержащихся в информационной базе, то сначала вам нужно импортировать конфигурацию из этой базы в 1C:EDT — подробнее. После этого вы можете перейти к пункту 5.

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

ОБРАБОТКИ.com

Отладка дополнительных обработок, подключаемых через механизм Библиотеки Стандартных Подсистем (БСП) к типовым конфигурациям 1с, представляет серьезную проблему для разработчика.
Одним из известных вариантов решения данной проблемы является использование специальной обработки-стартера, которая передаст в отлаживаемую обработку нужные параметры и осуществит её запуск. В данной статье я хочу предложить другой подход к решению этой проблемы.
В предыдущих версиях конфигураций 1с так же существовал механизм подключения внешних обработок (на смену которому и пришел механизм БСП), в процессе работы создавался временный файл на диске содержащий обработку, поэтому была возможность открыть его в конфигураторе для отладки. Но в БСП такой подход к отладке не срабатывает, это связано с тем что БСП подключает дополнительную внешнюю обработку с помощью метода объекта ВнешниеОбработкиМенеджер Подключить( , , ), Где Путь — это адрес во временном хранилище. Таким образом сама внешняя обработка в процессе работы 1с предприятия не существует в виде файла на диске, поэтому и открыть её в конфигураторе для отладки невозможно.
В противоположность подходу, который предполагает использование обработки-стартера, моя идея заключается в адаптации самой БСП для отладки внешней обработки. Итак, приступим…

  1. Любой уважающий себя программист, ведет разработку и отладку в тестовой базе.
    Поэтому сделайте ФАЙЛОВУЮ копию базы 1с, если вы используете типовую конфигурацию то вполне подойдет демо-база, которая поставляется вместе с любой типовой конфигурацией 1с.
  2. Включите возможность изменения конфигурации «Конфигурация-Поддержка-Настройка поддержки…-Включить возможность изменения» Для общего модуля ДополнительныеОтчетыИОбработки включите режим «Объект поставщика редактируется с сохранением поддержки»
  3. В модуль ДополнительныеОтчетыИОбработки вносим следующие изменения:

Если публикация помогла Вам справится с проблемой, решить задачу или расширить свои знания — поддержите автора.

Комментарии:

Достаточно в модуле внешней обработки вызвать какую нибудь мелкую и безобидную функцию из общего модуля, например ОбщегоНазначения.ЭтоССылка(…)
Точку останова можно поставить в ней и далее по F11 снова попасть в отлаживаемую обработку. Ничего добавлять в конфу не надо и отлаживать можно на рабочей а не на файловой копии.

И почему то в эту процедуру захода нет. Вижу, что те глобальные процедуры, которые вызываются из нее — в общих модулях — трейсяться, но сама внешняя обработка вообще не открывается и по точкам остановам внутри нее — остановок нет.

Спасибо за статью. Все получилось при использовании пункта 6. Начиная с конфигурации 8.6.3 все ранее использованные методы отладки перестали работать. Неужели в БСП нет официальных методов отладки, а не через заднее крыльцо?

Автору РЕСПЕКТ! и УВАЖУХА! убил кучу времени чтобы просто попасть отладчиком во внешнюю форму. Все способы кроме этого НЕ работают. Обработки стартеры заточены под УТ и Бухгалтерию 3.0. Ни одна не работает в КА 2.0.

Folo, у меня не получилось через F11. Пришлось сделать как писал автор статьи

Крутейшая круть. Уже давно отказался писать обработки и внешние формы под БСП, так как себе дороже, денег с гулькин нос, а долбатни на неделю, хорошо было когда клиенты с обычными конфами в очередь стояли. Теперь же все перешли на БП 3.0.Мое мнение что Фирма 1С последние года делает все возможное чтобы программисты 1С либо остались без хлеба (без механизма отладки), либо ушли из отрасли.

Да они, всеми силами, сейчас EDT продвигают… так инструменты для отладки внешних форм есть.

Доброго времени суток всем.
Спасибо автору.

В тему свои «5-копеек».
После некоторой модификации метод становится более универсальным
Изменения вносились только в общем модуле «ДополнительныеОтчетыИОбработки»
Если Ссылка.Публикация = Перечисления.ВариантыПубликацииДополнительныхОтчетовИОбработок.РежимОтладки Тогда

АдресДанныхОбработки = ПоместитьВоВременноеХранилище(Ссылка.ХранилищеОбработки.Получить());
ДвоичныеДанныеОбработки = ПолучитьИзВременногоХранилища(АдресДанныхОбработки);
ИмяФайлаОбработки = КаталогВременныхФайлов() + Ссылка.ИмяФайла;
ДвоичныеДанныеОбработки.Записать(ИмяФайлаОбработки);

ИмяОбработки = Менеджер.Создать(ИмяФайлаОбработки, Ложь);
ИмяОбработки = Ссылка.ИмяОбъекта;

Иначе
ИмяОбработки = Менеджер.Подключить(АдресВоВременномХранилище, , БезопасныйРежим);
КонецЕсли;

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

Отдельное спасибо Folo. Замечательный метод для быстрой отладки на рабочей базе

Спасибо огромное!
Очень помогло в разработке.
(1) — не сработало.

Спасибо огромное!
Очень помогло в разработке.
Описанный Folo в 9 алгоритм не сработал.

Спасибо огромное!
Очень помогло в разработке.
Описанный в самом раннем комментарии алгоритм не сработал.

https://infostart.ru/public/573461/ — так гораздо удобнее, и в конфе ничего править не надо

(7) — довольно удачное решение.
Одно только не понятно — нафига это добавлено в БСП и не используется так, как написано ? Где отладка, Карл ?))

Что то не работает 🙁

СПАСИБО ОГРОМНОЕ!! Уже мозг сломала, как отладить внешнюю обработку. Ни один способ, найденный в интернете, не помог! Кроме вашего. База: 1С 8.3 ЕРП УП2.

Пользуйтесь во благо

Большое спасибо, все работает.

Автору спасибо за информацию.
По рекомендации Юрия и Валерия замутил расширение, отладка стала куда приятней.
Спасибо, все очень помогли.

Сделал расширение. Убрал безопасный режим.
Нашел указанные функции и добавил их в расширение «Вместо»
Текст функций полностью скопировал и отредактировал как тут написано.
Запустилось.
СПАСИБО!

Сделала все как написано,но почему то при подключении обработки выходит сообщение-невозможно подключить обработку из файла.Техническая информация:Каталог не обнаружен «С:\….».Что не так сделала?

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

КонецПроцедуры
У меня у одного текст процедуры выглядит так?

Спасибо! Большое спасибо, все работает. Особенно радует, что «при изменении исходного кода обработки нет необходимости заменять файл обработки в справочнике «Дополнительные отчеты и обработки», потому что фактически происходит запуск и отладка обработки «c:\МояОбработка.epf»,»

Спасибо помогло с внешними отчетами. Так как в основном все обработки которые сделаны для отладки внешних обработок работают с расширение .epf а мне надо было через отчет то есть через .erp И все получилось!

Спасибо огромное, друг!

Добрый день! Перепробовал способы, указанные в теме и коментах, прикольно, но как вариант. У меня есть в запасе еще один вариант, а именно: я не вношу никакие изменения ни в конфигурацию, ни в Дополнительную обработку. Есть такой общий модуль называется он ДополнительныеОтчетыИОбработки и в нем нужно ставить токи останова перед запуском обработки и в зависимости от обработки выбрать нужную Процедуру или функцию,
в частности — для внешней Печатной формы нужно ставить в процедуре ПечатьПоВнешнемуИсточнику.

Отладка внешней обработки

или которая лежит в разделе "Дополнительные отчёты и обработки" ?

(12) (14) (13) Я с 1с знаком плохо. Я работаю в 1с упп, а учебные материалы мне давали книгу Радченко, я ахудел, когда увидел как там сильно различается работа с формами. По сему для меня вся система 1с с ветвлениями в духе ЗУП, ERP и прочих складывается в голве как мимик. Ты знаешь что это мимик, но всякий раз он выглядит по-разному.

Если подробнее дела с клиент сервером обстоят так. Есть основная база УПП, есть моя тестовая. Я свою отключаю от хранилища и там балуюсь, тестирую, работаю. С внешними обработками раньше работал, но необходимости в их отладке не было. Сейчас появилась. В самом коде формулировк &НаКлиенте &НаСервере нет. Отлаживаю я обычно запуская прогу из конфигуратора, в следствии чего она автоматически заходит в УПП под моей учеткой. Так вот, как отладить внешнюю обработку в этом случае, что тыкать, что писать, как запускать?

(30) Да, у меня .epf открываю там реквизит СсылкаНаОбъект и Макет . Ну и процедура печати макета. У меня задача найти откуда в доке Авансовых отчетов у одного товарища взялось 117 рублей грубо говоря понять чей косяк: проги или человека.

Изначально печать реализована в конфигурации я ее прочесал от и до и там нет ошибок. Потом запустил печать черзе "Печать" внизу формы, вылезло окошко с выбором макета и надписью "печатная форма замещена". Ругнулся, что два часа не то делал и стал рыскать че там в замещении (собствено там .epf описанный выше). А оно как две капли воды похоже на то что в доке, просто добавлено СсылкаНаОбъект где надо. Запросы тоже одинаковые (единственное что некоторые пустые и там, и там). Понял я одно, своими не шибко сведущими в 1с мозгами, — нужна отладка, чтоб посмотреть че оно там в запрос пишет и какие цифры куда сует.

Если знаете чем лучше решить эту проблему (вдруг отладка тут и нафиг не нужна) подскажите пожалуйста, молодой боец жаждит знаний.

(33) Сейчас наверное я унижу себя сам. А можно подробнее. Типа, я видел это решение в коде. Но у меня УПП, у меня не такой интерфес как тут https://wiseadvice-it.ru/o-kompanii/blog/articles/otladka-vneshnei-pechatnoi-formy-1s-8-3/ Как мне туда ссылку на объект пихать? Типа в данные забивать или в ТипЗначения? Дайте инструкцию для чайников, пожалуйста. И ещ у меня ошибка вылазит "недостаточно фактических параметров.

Хотя вот вызов:
Процедура ТестНажатие(Элемент)
Печать();
КонецПроцедуры

И вот куда обращаюсь:
Функция Печать() Экспорт

1) Пастим код модуля обработи
2) Пастим код твоей формы (то что ты написал)

Отладка в 1С

В этой статье рассматриваются ситуации, в которых процесс отладки (или процесс запуска отладки) проходит каким-либо особенным образом.

Кроме этого отмечу, что эта статья входит в небольшую серию статей об отладке в 1С:

Отладка внешних объектов

Отладка обычных внешних обработок и отчетов, как правило, не вызывает трудностей — главное открывать в конфигураторе и предприятии один и тот же файл внешней обработки/отчета.

Отладка внешних печатных форм

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

В обычном приложении внешняя печатная форма имеет реквизит «СсылкаНаОбъект» и функцию «Печать», которая вызывается без параметров. Следовательно наиболее простым вариантом будет создать форму обработки, вывести на эту форму реквизит «СсылкаНаОбъект» (что бы его можно было заполнить) и по нажатию кнопки (или при другом событии) вызвать процедуру «Печать». В этом варианте внешняя печатная форма превращается в обычную внешнюю обработку и отлаживается также.

Для управляемого приложения нужно сделать примерно тоже самое — эмулировать вызов функции «Печать», для этого создать форму обработки, добавим ей реквизит «СсылкаНаОбъект» (и выведем его на форму) и команду с примерно таким кодом:

Форма обработки

Форма обработки

Отладка внешних обработок табличных частей

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

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

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

Кроме этого имеется прекрасная обработка, которая помогает отлаживать внешние обработки заполнения: ссылка.

Отладка Web-сервисов, HTTP-сервисов и интерфейса OData

Для отладки Web-сервисов, HTTP-сервисов и интерфейса OData нужно разрешить соответствующую возможность при публикации сервиса/интерфейса на веб-сервере, например:

Включение отладки при публикации сервиса/интерфейса

Включение отладки при публикации сервиса/интерфейса

После этого нужно настроить автоматическое подключение соответствующих предметов отладки. Для этого нужно выбрать пункт меню «Отладка»-«Подключение…», открыть окно настройки автоматического подключения и выбрать нужные предметы отладки, например:

Настройка автоматического подключения

Настройка автоматического подключения

Напомню, что при клиент-серверном варианте работы сервер должен быть запущен в режиме отладки.

Отладка регламентных/фоновых заданий

Напомню, что регламентные задания — это механизм 1С, предназначенный для каких-либо действий по расписанию. А фоновое задание — это объект, который создается регламентным заданием и непосредственно выполняет требуемые действия. Стало быть в отладке нуждаются именно фоновые задания, а регламентные задания просто настраиваются (расписание, пользователь и тд.).

Для отладки фонового задания, так же как и в предыдущем разделе, нужно настроить автоматическое подключение предметов отладки. Для этого идем в меню «Отладка»-«Подключение…» , открываем окно настройки автоматического подключения и указываем, что нам нужно автоматически подключать фоновые задания:

Настройка автоматического подключения

Настройка автоматического подключения

При клиент-серверном варианте работы сервер должен быть запущен в режиме отладки. При файловом варианте работы база данных должна быть запущена в режиме предприятия.

Отладка мобильного приложения

Отладка мобильного приложения возможна только по протоколу HTTP. Хотя для устройств на Android-е возможен вариант с подключением по USB-кабелю и использованием Android Debug Bridge, но это частный случай. В общем же случае нужно переключиться на отладку по протоколу HTTP (подробнее об этом в предыдущих статьях цикла). Затем в настройках мобильного приложения нужно разрешить настройку и указать адрес отладчика, например так:

Разрешаем отладку и указываем адрес отладчика

Разрешаем отладку и указываем адрес отладчика

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

Если Вы нашли ошибку или неточность, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

УжасноПлохоНеплохоХорошо Отлично(оценок: 6, средняя оценка: 5,00 из 5)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *