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

Содержание
  1. ОБРАБОТКИ.com
  2. Отладка внешних обработок для 1с БСП
  3. Не работает отладка 1С
  4. 1. В списке предметов отладки не видны серверные сеансы
  5. 2. В списке предметов отладки не видны ни клиентские ни серверные сеансы.
  6. 3. В списке предметов отладки не видны клиентские сеансы.
  7. 4. Предмет отладки виден в конфигураторе и подключается, но точка останова все равно не срабатывает на строке кода.
  8. 5. Программный код выполняется в сеансе фонового задания.
  9. 6. Программный код выполняется в сеансе web-сервиса или http-сервиса.
  10. Подводим итоги
  11. Не могу запустить Внешнюю обработку в отладчике
  12. Не работает отладка внешней обработки
  13. Отладка в 1С
  14. Отладка внешних объектов
  15. Отладка внешних печатных форм
  16. Отладка внешних обработок табличных частей
  17. Отладка Web-сервисов, HTTP-сервисов и интерфейса OData
  18. Отладка регламентных/фоновых заданий
  19. Отладка мобильного приложения

ОБРАБОТКИ.com

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

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

  1. Любой уважающий себя программист, ведет разработку и отладку в тестовой базе.
    Поэтому сделайте ФАЙЛОВУЮ копию базы 1с, если вы используете типовую конфигурацию то вполне подойдет демо-база, которая поставляется вместе с любой типовой конфигурацией 1с.
  2. Включите возможность изменения конфигурации «Конфигурация-Поддержка-Настройка поддержки…-Включить возможность изменения» Для общего модуля ДополнительныеОтчетыИОбработки включите режим «Объект поставщика редактируется с сохранением поддержки»
  3. В модуль ДополнительныеОтчетыИОбработки вносим следующие изменения:
  • Открываем в отладчике обработку «c:\МояОбработка.epf» ставим точки останова, можно ставить их как в модуле объекта обработки — в СведенияОВнешнейОбработке(), Печать() и т.д., так и в модуле формы, если обработка имеет форму и использует команду «ОткрытиеФормы»
  • Запускам 1с в режиме предприятия, добавляем обработку в справочник «Дополнительные отчеты и обработки», если точка останова была поставлена в функции СведенияОВнешнейОбработке(), то она тут же должна сработать. Вот и всё, теперь можно отлаживать обработку в штатном режиме.
  • Внимание! Если точка останова не сработала то в связи с особенностью некоторых релизов платформы 8.3.6, для отладки необходимо в первую очередь поставить точку останова на строке СведенияОВнешнейОбработке = ВнешнийОбъект.СведенияОВнешнейОбработке(); процедуры ПриПолученииРегистрационныхДанных(…) модуля ДополнительныеОтчетыИОбработки. Затем в режиме предприятия регистрируем внешнюю обработку(либо заменяем файл, уже зарегистрированной обработки). Когда сработает точка останова необходимо нажать «Шагнуть в(F11)», откроется модуль обработки, а если модуль уже был открыт, то его КОПИЯ(!). Именно этот модуль и нужно отлаживать в обычном порядке, ставить точки останова и т.д.
  • Обратите внимание, что при изменении исходного кода обработки нет необходимости заменять файл обработки в справочнике «Дополнительные отчеты и обработки», потому что фактически происходит запуск и отладка обработки «c:\МояОбработка.epf», а не обработки из элемента справочника «Дополнительные отчеты и обработки». Это существенно сокращает и упрощает процесс отладки.
  • Отмечу, что с помощью описанной технологии можно отлаживать внешние обработки ЛЮБОГО вида:
    «ДополнительнаяОбработка», «ДополнительныйОтчет», «ЗаполнениеОбъекта», «Отчет», «ПечатнаяФорма»,»СозданиеСвязанныхОбъектов», содержащие ЛЮБЫЕ команды: «ОткрытиеФормы», «ВызовКлиентскогоМетода», «ВызовСерверногоМетода»
  • Возможные проблемы: время от времени точки останова перестают срабатывать, это происходит потому что по непонятным причинам отключается режим отладки, зайдите в «Отладка-Подключение…» и заново подключите отладку, либо перезапустите 1с предприятие в режиме отладки.
  • P.S. Разумеется в рабочую базу никаких изменений вносить не нужно! Просто подключите к ней уже отлаженную внешнюю обработку.
  • Читайте также:  Почему оптоволокно не работает

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

    Источник

    Не работает отладка 1С

    Разберем основные случаи когда и почему не работает отладка 1С.

    1. В списке предметов отладки не видны серверные сеансы

    Возможно сервер 1С запущен не в режиме отладки. Для того чтобы включить режим отладки, службу сервера 1С нужно запустить с ключом -debug. Пошаговый разбор как это сделать тут.

    2. В списке предметов отладки не видны ни клиентские ни серверные сеансы.

    Еще одной причиной отсутствия предметов отладки в списке является то, что предметы отладки находится не на том компьютере где запущен отладчик 1С. Актуально как для серверных так и для клиентских сеансов. Для решения проблемы обычно достаточно указать имя удаленного компьютера для поиска предметов отладки и обновить список.

    Если и после этого список пустой, то нужно вбить вместо имени IP-адрес удалённого компьютера. В случае если это помогло, то рекомендуется прописать привязки имен и IP-адресов компьютеров в файле hosts. Если и это не помогло то необходимо проверить настройку фаервола, разрешены ли на сервере 1С (или удаленном клиенте) входящие соединения с компьютера где запущен отладчик на порты 1560-1591.

    3. В списке предметов отладки не видны клиентские сеансы.

    Причина как правил в том, что не разрешена отладка клиентского приложения. Для разрешения отладки клиентского сеанса достаточно в настройках программы в режиме 1С Предприятие указать в параметре «Отладка в текущем сеансе» — Разрешена TCP/IP.

    4. Предмет отладки виден в конфигураторе и подключается, но точка останова все равно не срабатывает на строке кода.

    Данная проблема актуальна при отладке по протоколу TCP. Причина в том что отладчик не может принимать входящие соединение из-за того что брандмауер или фаервол блокируют сетевое взаимодействие между отладчиком и предметом отладки. Тут нужно понимать, что отладчик не только устанавливает исходящее соединение с предметом отладки, но также должен иметь возможность принимать входящее соединение. Проблема решается отключением фаервола на компьютере где запущен отладчик либо открытием входящих соединений на портах 1560-1591 для исполняемого файла 1cv8.exe.

    5. Программный код выполняется в сеансе фонового задания.

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

    6. Программный код выполняется в сеансе web-сервиса или http-сервиса.

    Как правило сеанс подключения к web-сервису http-сервису существует непродолжительное время и вручную подключиться к нему проблематично. Здесь так же достаточно включить автоматическое подключение к таким сеансам и отладчик сам будет находить и подключать предметы отладки, ваша задача только поставить точку останова в коде.

    Подводим итоги

    Как видим основные причины неработающей отладки 1С легко решаются. Пожалуй самой трудно-диагностируемой проблемой является работающий в сети фаервол, который может блокировать соединения между отладчиком и предметом отладки. В самом простом случае достаточно открыть порты для подключения как описано выше. В более сложном случае, когда отладчик и предмет отладки разделены NAT, может потребоваться проброс портов. Самый крайний случай когда из-за политик безопасности прямое сетевой взаимодействие по протоколу TCP между отладчиком и предметом отладки не возможно, следует рассмотреть вариант отладки по протоколу HTTP.

    Напоследок стоит отметить, что как правило отладка производиться на тестовом сервере 1С, который запускается на портах отличных от типового диапазона 1560-1561. Поэтому, все изложенное выше в части номеров портов, следует рассматривать в контексте ваших реально используемых диапазонов портов.

    Источник

    Не могу запустить Внешнюю обработку в отладчике

    Подскажите, пожалуйста, столкнулся с такой проблемой.
    Создал внешнюю обработку, подключил к УТ 11, подключение прошло без проблем. При попытке выполнить команду обработки вылетает ошибка.

    Создал в модуле формы обработки вызов той же самой команды при открытии формы. Запустил обработку через «файл»-«открыть» все сработало как нужно, т.е. ошибка именно связана с подключением через «внешние отчеты и обработки».

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

    Насколько мне известно, в процессе выполнения 1С копирует файл внешней обработки в какой-то временный каталог и оттуда его открывает, но по адресу C:\Users\User\AppData\Local\Temp я ничего похожего не нашел.

    Может кто-нибудь сможет помочь, как мне попасть в модуль внешней обработки? Подскажите, пожалуйста, уже третий день ломаю голову, ничего не получается 🙁

    PS В продолжение вопроса:
    На Мисте подсказали поймать ошибку с помощью «остановки по ошибке». Попробовал сделать в обработке попытку с делением на ноль, попробовал и просто так остановить по ошибке, без изменений в обработке, вот что получается —
    «Ошибка времени выполнения:
    <ВнешняяОбработка.ВнешняяОбработка.МодульОбъекта(81)>: деление на 0 в модуле ВнешняяОбработка.ВнешняяОбработка.МодульОбъекта, строка 81.»
    Курсор при этом встает на ОбщийМодуль.ДополнительныеОтчетыИОбработки, на строчке: ВнешняяОбработка.ВыполнитьКоманду(ИдентификаторКоманды); и самой стрелочки, которая показывает текущую строку нет.

    Если не делать деления на ноль, то тоже появляется ошибка:
    «Ошибка времени выполнения:
    <ВнешняяОбработка.ВнешняяОбработка.МодульОбъекта(82)>: Ошибка при вызове метода контекста (Записать) в модуле ВнешняяОбработка.ВнешняяОбработка.МодульОбъекта, строка 82.»
    Курсор позиционируется на том же месте общего модуля, стрелочка текущей строки так же не видна.

    Источник

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

    Для самых нетерпеливых : Скачать исправленную обработку УниверсальныйОбменДаннымиXML

    Сделал я правила обмена в КД2.

    Решил их отладить и получаю ошибку:

    Искал решение в интернете, но как-то неудачно.

    А отлаживать-то нужно.

    Решение:

    Обработка «УниверсальныйОбменДаннымиXML.epf». То есть та обработка, с помощью которой мы хотим отлаживать.

    Идем в модуль обработки, в процедуру

    Процедура ИнициализацияВнешнейОбработкиОбработчиковСобытий(РаботаВозможна, ОбъектВладелец) Экспорт

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

    На всякий случай скрин:

    Результат:

    Скачать исправленную обработку УниверсальныйОбменДаннымиXML

    • Главная
    • Блог
    • В помощь 1с программисту
    • Ошибка «Внешняя обработка отладки, загружаемая из файла на диске, не поддерживается.» Ошибка при отладке правил конвертации 2.1 в новых конфигурациях

    Google+

  • © 2021 Услуги 1С программиста. Доработка и обслуживание 1С. Удаленное программирование по всей России. Платформы 7.7 8.2 8.3 , битрикс.

    Источник

    Отладка в 1С

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Источник

  • Оцените статью