Перейти к содержимому

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

  • автор:

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

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

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

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

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

 //Здесь вставляем путь до файла обработки вместе с названием файла ИмяОбработки = Менеджер.Создать("C:\otladka\ВнешняяОбработка.epf", Ложь); //Здесь вставляем имя обработки ИмяОбработки = "ВнешняяОбработка"; Возврат ИмяОбработки; 

А в процедуре ПриПолученииРегистрационныхДанных устанавливается:

 // Здесь опять пишем путь и название файла обработки ВнешнийОбъект = Менеджер.Создать("C:\otladka\ВнешняяОбработка.epf", Ложь); 

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

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

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

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

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

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

(0) 1. Включить отладку если сервер 1С
2. Открывать внешнюю обработку из места доступного не только там где конфигуратор и клиент 1С но и серверу 1С (от имени какого пользователя запускается)

(12) а может у него формы просто не управляемые.
Тогда наоборот всегда на клиенте)))

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

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

(15) УПП это обычные формы. Отлаживаешь внешнюю обработку точно так же как и всё остальное. Открываешь обработку в конфигураторе, ставишь точку останова где нужно, запускаешь в режиме отладки базу, через Файл -> Открыть открываешь твою внешнюю обработку, тычешь кнопку на форме обработки. Если отладка заходит в процедуру(или функцию) в которой стоит точка останова, то она срабатывает. Как то так.

(15) Пятнично

(16) А если не заработает, при том условии что она обязательно должна попасть в поставленную точку останова? Или это исключено?

(18) слушай, ты с 11.12 разговоры разговариваешь и за всё это время не попробовал срабатывает у тебя точка останова или нет? Ну тут медицина бессильна, только лоботомия.

(20) пардон, с 16.12 обшибся
(21) Так тут тоже))

Что ж. Дабы не создавать новую тему. Как отлаживать внешнюю печтаную форму без формы (в ней только макет и реквизиты)?

(23) добавь форму и показ ТД по кнопке
ТД — Таблицы Данных?? (24)
табличный документ

(26) Один фиг способ открытия с поставленой точкой останова не работает. Она ее игнорит. Мне по факту-то отладка нужна чтоб посмотреть какой запрос он собирает ( через консоль запросов ничего не вывелось)

(27) Сообщить(НужныйТекстЗапроса) ?
(27) значит не доходит до точки твоей.

(27) чисто на всякий случай:
макет — это скд? и ты хотел поймать его выполнение и проверить запрос?
(23) или это чисто табличный документ с текстом, где ты хочешь заполнять реквизиты? Вроде если это печатная форма, то ты гдето должен вызывать её заполнение. вот там и лови.

(29) Доходит и даже дальше идет, потому что ошибка вылетает в строке после точки остонова

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

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

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

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

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

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

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

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

Ссылки кидаем в эту тему

ОБРАБОТКИ.com

Отладка внешних обработок и печатных форм для 1с БСП

Отладка дополнительных обработок и печатных форм, подключаемых через механизм Библиотеки Стандартных Подсистем (БСП) к типовым конфигурациям 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с программисту
  • Отладка внешней обработки. Отладка внешней обработки заполнения табличных частей 8.2

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

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