Не работает отладка в расширении 1с
НЕ работают точки останова. Что есть они, что их нет. Программа на них не останавливается. Кэш чистил - не помогло. База на SQL сервере.
Запускаю в режиме отладки из конфигуратора.
Подскажите пожалуйста в чем может быть проблема?
Добавлено через 2 минуты
Из конфигуратора под толстым клиентом тоже пробовал запускать - не помогло.
Такое ощущение что точек останова нет вообще. Хотя я их ставлю.
Не работают точки останова
народ, проблема такова: не работают точки останова в той области текста программы где они должны.
Не работают точки останова
Здравствуйте, столкнулся с такой проблемой, что непонятно с чего вдруг перестали работать точки.
Не работают точки останова
Работаю с ВПФ, в файловом режиме. Игнорируются точки останова, вообще. В гугле рассказывают про.
Не работают точки останова
Делаю сайт на SilverLight почти всю работу сделал оставалось сделать пару моментов и тут вдруг при.
Нигде не работают. Ни во внешних обработках и ни в модулях конфигурации. Без разницы НаКлиенте или НаСервере. Их просто как будто бы и нет.
Код ошибки: 20025787
Описание:
В файловом варианте информационной базы после останова отладки в фоновом задании и продолжении отладки отладка тонкого клиента не работает - не работают точки останова, пошаговая отладка и т.д.
А сейчас на другом сервере перезапустил службу 1с сервера. И решил проверить работу точек останова в базе Бухгалтерия предприятия 3.0.37.38 на платформе 8.3.5.1443. Там точки останова работают только в функциях и процедурах НаКлиенте. НаСервере точки останова не работают. Может это особенность управляемых форм? Но вроде бы раньше такого я не наблюдал.
На сервере с торговлей нет возможности службу 1С перезапустить. Я теперь совсем в замешательстве.
А как ее с таким параметром запустить? Через Службы остановить службу и указать параметр запуска -debug?
Для 1С 8.2 (для 8.3 отличаются только пути)
Как установить режим отладки на стороне сервера в клиент-серверном режиме работы
Останавливаем службу 1C:Enterprise 8.2 Server Agent
Ищем в реестре следующее: HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\1C:Enterpri se 8.2 Server Agent\
Смотрим значение параметра ImagePath (оно имеет примерный вид:
"C:\Program Files\1cv82\8.2.хх.ххх\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "C:\Program Files\1cv82\srvinfo"
Добавляем -debug и сохраняем:
"C:\Program Files\1cv82\8.2.хх.ххх\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "C:\Program Files\1cv82\srvinfo" -debug
.
или так
"C:\Program Files\1cv82\8.2.хх.ххх\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -debug -d "C:\Program Files\1cv82\srvinfo"
.
Разберем основные случаи когда и почему не работает отладка 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С широко использует запуск длительных процедур в фоновом режиме. Для этого на сервере запускается отдельный фоновый сеанс помимо основного серверного сеанса пользователя. Проблема решается включением автоматического подключения отладчика к фоновым сеансам. После этого как правило отладка начинает работать, если нет проблем с фаерволом описанных выше.
Подводим итоги
Напоследок стоит отметить, что как правило отладка производиться на тестовом сервере 1С, который запускается на портах отличных от типового диапазона 1560-1561. Поэтому, все изложенное выше в части номеров портов, следует рассматривать в контексте ваших реально используемых диапазонов портов.
Для настройки отладки в конфигураторе 1С надо зайти через главное меню в раздел Отладка – Подключение… Откроется форма подключения к сеансам для отладки. Если конфигуратор запущен на сервере 1С и есть активный серверный или клиентский сеанс, то в разделе «Доступные предметы отладки» сразу можно увидеть строки с указанием пользователя и типа сеанса клиент или сервер.
Форма подключения и настройки отладки в Конфигураторе 1С
В принципе, на этом вся настройка может быть закончена, можно выбрать нужный сеанс и подключиться к нему для отладки. Однако, часто бывает что мы увидим пустой список предметов отладки. Если это ваш случай, то читаем дальше.
Итак, при настройке отладки в конфигураторе 1С надо учесть два момента.
Первое, если вы запустили Конфигуратор не на сервере 1С, то для поиска предметов отладки надо указать имя или IP адрес сервера 1С (если хотим отлаживать не серверный, а клиентский сеанс другого пользователя, то соответственно клиентского компьютера). Для этого ставим флажок «Искать предметы отладки на удалённом компьютере» и рядом в поле вводим имя компьютера, например – srv1c.
Второе. Бывают случаи, когда сервер 1С (тестовый к примеру) запущен не на типовых портах по умолчанию из диапазона 1560-1591, а, например, на портах 1660-1691. Тогда надо по кнопке «Настройка» в форме настройки отладчика указать тот диапазон портов для поиска предметов отладки который был задан в строке запуска службы сервера 1С. В моем случае ставим диапазон 1560-1900, это потому что у меня есть еще запущены тестовые сервера 1С на диапазонах портов 1760-1791 и 1860-1891. После этого нажимаем в правом верхнем углу значок «Обновить» и видим появившиеся предметы отладки. Видно что у серверного сеанса порт указан 1660, это как раз тот сеанс который подключен к тестовому серверу 1С, запущенному на диапазоне портов 1660-1691.
Теперь можно выбрать нужный сеанс и нажать кнопку «Подключить», предмет отобразиться в нижней части формы в разделе «Подключенные предметы отладки».
Все, после этого, запускаем на выполнение программу и отладчик должен остановиться на точке останова, которую вы поставили на сроке кода. В стеке вызовов можно посмотреть где в данный момент выполняется код, на сервер или на клиенте.
Если после всех настроек список доступных предметов отладки так и остался пустым, то следует проверить включен ли режим отладки на сервер 1С. Вот здесь можно посмотреть как включить отладку на сервере 1С.
Если же вам надо подключиться к клиентскому сеансу, то надо проверить включена ли доступность отладки у этого клиентского сеанса. Для это в режиме 1С:Предприятие открываем меню Настройки — Параметры…
В окне настройки параметров в поле «Отладка в текущем сеансе» выбираем «Разрешена (протокол TCP/IP)», то же можно указать в поле «Отладка при перезапуске», чтобы каждый раз не выполнять данную настройку в случае многократного перезапуска клиентского сеанса.
После этой настройки в конфигураторе обновляем список доступных предметов отладки, если все сделано правильно, там должен появится данный клиентский сеанс.
Теперь нам не надо вручную искать предмет отладки и нажимать кнопку «Подключить». Система сама подключиться к запущенному сеансу и сработает точка останова поставленная на строке кода.
Использование механизма расширений для расширения (как бы это коряво не звучало =) ) возможностей отладки.
Тестировалось на релизе: 8.3.14.1694 (но взлетит и на более ранних, поддержку общих модулей в расширения добавили практически в первых версиях механизма расширения).
Не так давно столкнулся с задачей, для решения которой стандартного функционала отладки оказалось недостаточно.
Некорректно формировалась печатная форма отчета, и нужно было понять, на каком этапе происходит "порча" макета.
Макет отчета хранился в ХЗ (Хранилище значений), среди множества других. Вызов в отладчике Макет.Записать("C:/temp/1.mxl") ожидаемо сообщил, что я обращаюсь к процедуре как к функции, и ничего у меня не получится. Можно было бы написать обработку, которая получала бы макет так же, как это делает оригинальная процедура отчета, но для этого пришлось бы перелопатить эту процедуру, выделяя нужный код, а кроме того, результат был бы "на один раз", т.е. для следующей аналогичной задачи пришлось бы все делать с начала. Можно было бы снять конфигурацию с поддержки, внести в код изменения, которые выполняли бы требуемые действия. Но зачем? Есть куда более удобный и гораздо менее затратный по времени прием.
- Создаем новое расширение. Настройки значения не имеют, но я по привычке снимаю флаги "Безопасный режим" и "Защита от опасных действий".
- В расширении добавляем новый Общий модуль, в котором создаем экспортную функцию, которая в качестве параметров принимает Таблицу, которую требуется сохранить, и путь, по которому это нужно сделать:
В моем случае дальнейшая отладка не понадобилась, т.к. проблема была именно в хранимом макете.
Приведенный пример демонстрирует, как с помощью расширения на доступном и интуитивно понятном уровне можно решить задачи, для который ранее требовались более сложные и изощренные методы, вроде создания внешних обработок и вызова их методов из табло. На одной из конфигураций у нас была доработка, которая позволяла перехватить запрос при его выполнении, и вывести его в консоль запросов в пользовательском режиме со всеми заполненными параметрами и временными таблицами — это тоже можно реализовать на расширении.
Пример в приложении, но качать смысла особого не вижу, все подробно расписано. В перспективе маячит создание некоего "Инструментария", который позволял бы существенно расширить возможности как отладки, так и разработки в целом, но таких продуктов уже целый зоопарк, поэтому не известно, дойдут ли до этого руки. В любом случае, если это вдруг произойдет, то на ИС появится отдельная статья =)
Это еще один механизм борьбы с отладкой дополнительных отчетов и обработок. При его использовании можно спокойно ставить точки останова в любом месте обработки — и они всегда сработают. Механизм работает даже на последних версиях БСП, где дополнительные обработки не используют временные файлы.
Тема отладки дополнительных отчетов и обработок поднимается среди 1С программистов регулярно. Проблема состоит в том, что если обработка/отчет добавлены в справочник дополнительных (внешних) отчетов и обработок, то их отладка сопровождается определенными неудобствами:
- т.к. обработка хранится в конфигурации внутри элемента справочника, то ее невозможно открыть в конфигураторе, без выгрузки на диск
- но открытый в конфигураторе выгруженный файл будет лишь копией обработки, сохраненной в справочнике, и установленные в ней точки останова не сработают
- до недавнего времени, конфигурации 1С при запуске доп. обработок предварительно сохраняли их во временный файл. Таким образом была возможность перейти к отладке обработки, принудительно вызвав в ней исключение. Но в последних версиях конфигураций обработки запускаются непосредственно, минуя временный файл (за исключением случая толстого клиента), что не позволяет использовать этот метод
- в принципе, можно запустить конфигурацию в толстом клиенте и попытаться выполнить отладку во временно файле, но часто работа в толстом клиенте конфигураций на УФ сопровождается глюками или различием в поведении с тонким клиентом
- также можно добавить в обработку специальную. отладочную форму, и выполнять отладку, запустив обработку из меню файл -> открыть. Но такой способ неудобен для отладки печатных форм и обработок заполнения/создания связанных объектов, т.к. невозможно контролировать передачу параметров
Данный механизм позволяет обойти указанные проблемы — для каждой обработки, которая будет отлаживаться в спец. регистре указывается файл с этой обработкой на диске. При включении режима отладки, можно спокойно открывать этот файл в конфигураторе и расставлять точки останова, которые сработают, независимо от способа запуска обработки.
Также имеется дополнительный плюс — не требуется после каждого изменения отлаживаемой обработки заново загружать ее в справочник доп. обработок. Меняем обработку, и сразу запускаем ее в базе. После отключения отладки следует загрузить в справочник финальную версию.
Из минусов данного механизма — естественно необходимость менять конфигурацию. Но эти изменения сводятся только к добавлению нескольких объектов в конфигурацию (подсистема, общий модуль, регистр сведений и две команды), и эти добавления не ломают процесс обновления.
- Сделайте резервную копию
- Включите возможность изменения конфигурации. (Если ранее этого не сделали).
- Включите возможность изменения с сохранением поддержки самой конфигурации (Опять же, если ранее не делали)
- Запустите объединение со скаченным .cf файлом и подтвердите постановку на поддержку
- В окне объединения снимите общую галочку конфигурации
- Выберите "Действия" -> "Отметить по подсистемам файла"
- Выберите только подсистему "LSOFT_ОтладкаВнешнихОбработок" и нажмите "Установить"
- Выполните объединение и обновите ИБ
- База готова к использованию
В меню разделов появляется новая подсистема (LSOFT) . В ней доступны команды включения/отключения отладки и список обработок для отладки.
В списке обработок для каждой дополнительной обработки, которую вы собираетесь отлаживать необходимо:
- выбрать саму обработку из справочника дополнительных обработок/отчетов. Именно эта обработка будет отлаживаться
- поставить галочку активности отладки. Если галочку снять — отладка для данной конкретной обработки будет недоступна.
- указать пользователя, который будет выполнять отладку. Если пользователь указан — то отладка выполняется только под выбранным пользователем, остальные пользователи ничего не замечают. если пользователь не выбран — отладка выполняется под любым пользователем.
- указать путь к файлу обработки на диске. При активности отладки, обработка будет загружена именно из этого файла. Сохраненый вариант обработки из справочника дополнительных отчетов и обработок игнорируется.
Сам процесс отладки:
- добавляем обработку/отчет в дополнительные отчеты и обработки. Это может быть обработка абсолютно любого вида, включая обработки заполнения, связанных объектов или внешние печатные формы
- заполняем настройки отладки в списке обработок для отладки
- включаем возможность отладки
- открываем в конфигураторе файл, указанный в настройке отладки для данной обработки
- устанавливаем произвольные точки останова в конфигураторе
- в ИБ запускаем нужный нам отчет/обработку подходящим для его/ее типа образом
Внимание, на сегодняшний день данная публикация является устаревшей, т.к. не работает с БСП версии 2.4 и старше. Новый вариант этого же механизма, но в форме расширения доступен в публикации Отладка дополнительных отчетов и обработок (расширение)
Читайте также: