Ошибка в режиме отладки 1с

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

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

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

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

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

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

Не работает отладка на удаленном компьютере

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

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

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

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

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

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

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

Не работает отладка фоновых сеансов

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

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

Не работает отладка web- http-сервисов

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

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

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

Что делать, если не работает отладка на сервере 1С

Вопрос: «Что делать, если стоят точки останова, при этом платформа выполняет проведение без остановки? Куда смотреть?».

Причина: по умолчанию отладка на сервере выключена.

Куда смотрим и что проверяем

1. Добавьте ключ «-debug» в строке запуска службы «Агент сервера 1С:Предприятия 8.3».

Например, по умолчанию строка такая (условно):

«C:Program Files1cv88.x.xx.xxxxbinragent.exe» -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d «C:Program Files1cv8srvinfo»

Запуск с опцией отладки:

«C:Program Files1cv88.x.xx.xxxxbinragent.exe» -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -debug -d «C:Program Files1cv8srvinfo»

Условия запуска меняются в реестре — через строковый параметр «ImagePath». Раздел находится здесь в зависимости от разрядности:

  • HKLMSYSTEMCurrentControlSetservices1C:Enterprise 8.3 Server Agent

  • HKLMSYSTEMCurrentControlSetservices1C:Enterprise 8.3 Server Agent (x86-64)

Изменение строки запуска Агента сервера 1С

Для активации потребуется рестарт службы либо перезагрузка сервера.

2. В меню «Сервис — Параметры — Запуск 1С:Предприятия — Дополнительные» включите опции:

  • «Устанавливать режим разрешения отладки»;

  • «Начинать отладку при запуске»

Параметры запуска

 

3. Через Конфигуратор откройте «Отладка — Подключение» — какие сеансы у вас показываются в предметах отладки; поставьте настройки в окне «Автоматическое подключение».

Управленческий учет: с нуля до настройки в 1С, Excel и Google-таблицах

Уметь настраивать и вести управленку — значит быть полезным для руководителей. Научитесь понимать, откуда приходят и куда уходят деньги компании на курсе повышения квалификации от «Клерка».

Предметы отладки

Например, автоматически подключать «Клиентские и внешние соединения на сервере» или «Фоновые задания» в зависимости от задачи.

4. При использовании отладки по протоколу TCP/IP возможно потребуется настройка правил брандмауэра.

Проверьте эти моменты и, скорее всего, отладка в серверном режиме у вас заработает.

Отладчик

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

Основные возможности отладки

  • отладка приложений, исполняемых на удаленных компьютерах, доступных по протоколу TCP/IP или HTTP, 
  • отладка кода, исполняемого рабочим процессом кластера серверов 1С:Предприятия 8; при этом поддерживается сквозной стек вызовов для клиента и сервера, и сквозная пошаговая отладка клиента и сервера;
  • отладка кода, исполняемого в таких видах соединений как внешнее соединение, фоновое задание и WS-соединение?
  • отладка мобильных приложений.

Точки останова

Отладчик позволяет установить на конкретную строку модуля специальный маркер — точку останова, — при достижении которой исполнение программного модуля останавливается и управление передается отладчику. Точки останова могут быть безусловными или с условием. При достижении безусловной точки останова исполнение программного модуля останавливается в любом случае:


Отладчик

При достижении точки останова с условием, выполнение программного модуля останавливается только в том случае, если заданное условие истинно:


Отладчик

Отладчик поддерживает возможность отключения точек останова. При этом строка модуля остается отмечена маркером, однако на ход исполнения модуля он никакого влияния не оказывает:


Отладчик

При большом количестве точек останова удобно использовать отдельное окно для работы с точками останова, позволяющее просматривать и редактировать их в едином списке:


Отладчик

Пошаговое выполнение

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


Отладчик

Просмотр выражений

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


Отладчик

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


Отладчик

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

Табло и локальные переменные

Результаты вычислений, которые требуется просматривать на протяжении выполнения некоторой части модуля, можно вывести в отдельное окно — табло, — в котором есть возможность распределить все просматриваемые выражения по четырем страницам:


Отладчик

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

Изменение значений переменных

Значения примитивных типов можно изменить прямо в ячейке Значение.


Отладчик

В этом окне полностью функционирует контекстная подсказка.


Отладчик

Стек вызовов

Отладчик позволяет использовать стек вызовов, который показывает последовательность вызовов процедур и функций, приведшую к строке модуля, которая отлаживается в данный момент:


Отладчик

Двойным щелчком мыши на имени процедуры в стеке вызова можно перейти в соответствующую строку процедуры.

Остановка по ошибке

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


Отладчик

Во время отладки при такой настройке отладка будет останавливаться только при возникновении ошибок, связанных с делением на ноль.

Описание ошибки:
База работает в режим клиент-сервера. Релиз платформы 1С:Предприятие 8.3.17.1851. При работе на клиентском месте в конфигураторе, в режиме отладки в предметах отладки нет типа сервер, а есть только тонкий клиент.

Найденные решения:

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

Нажатие на изображении увеличит его
1С 8, не работает отладка на сервере, в предметах отладки только тонкий клиент
Рис. 1. Пример наличия в предметах отладки 1С только типа «Тонкий клиент», тип «Сервер» отсутствует.

Первым делом, на всякий случай, было проверено наличие параметра debug у службы Агент сервера 1С: Предприятия 8.3, т.к. была уверенность, что его уже ранее устанавливал, иначе отладка вообще не могла быть возможной даже в процедурах и функциях на стороне клиента. Без этого параметра отладка для клиент-серверного варианта базы совсем работать не будет, поэтому есть напоминание в статье о том, как «включить отладку для сервера». Параметр -debug был указан. Поэтому в предметах отладки есть тип «тонкий клиент» и &НаКлиенте отладка кода выполнялась. Отладка не происходила в коде на стороне &НаСервере.

Сталкивался, конечно со случаем, когда отладка для типа «сервер» автоматически не подключалась в предметах отладки. Но разбираться было долго. Быстрее было просто ее подключить из списка «доступные предметы отладки» с помощью соответствующей кнопки и работать дальше.

Нажатие на изображении увеличит его
1С 8, как включить предмет отладки, сервер, как включить режим отладки для сервера
Рис. 2. Пример подключения предмета отладки типа «Сервер», если автоматически не в списке «Подключенные параметры отладки».

Это оказалось удивительным, что так может быть, но если верить обсуждению на форуме infostart по теме того, что не запускается отладка для процедур и функций, выполняющихся на стороне сервера, но проблема могла быть в том, как именно указан параметр debug для исполняемого файла а настройках службы «Агент сервера 1С:Предприятие». В общем можно указать не -debug, как ранее работало у меня во всех случаях и как описано в качестве напоминания на сайте, а /debug.

Нажатие на изображении увеличит его
1С 8, как устранить, исправить, не работает отладка на стороне сервера
Рис. 3. Исходное положение и указание параметра debug c «-«.

Что и было изменено в данном случае, чтобы устранить проблему с отсутствием в параметрах отладки платформы 1С 8 отладки для серверных процедур и функций. Как отредактировать/добавить параметр debug можно прочитать по ссылке.

Нажатие на изображении увеличит его
1С 8, как исправить, устранить, ошибка, проблема, перестал заходить отладчик в процедуры на сервере
Рис. 4. Измененное положение и указание параметра дебаг с «/».

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

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

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

Нажатие на изображении увеличит его
1C 8, что делать, как исправить, если не работает отладка на сервере 1С
Рис. 5. Опыт проверки указания строки подключения информационной базы 1С 8.

Т.е. строка соединения с базой должна быть такой же, учитывая регистры букв, как и строка соединения с информационной базой, которая используется для работающего фонового задания. Получить можно с помощью функции СтрокаСоединенияИнформационнойБазы().

Можно скачать обработку для определения строки соединения с базой для управляемого интерфейса и для обычного интерфейса. Обработку можно открыть через «Главное меню» — «Файл» управляемого интерфейса или просто меню «Файл» обычного и через пункт «Открыть …» запустить файл соответствующей обработки.

1С 8, на сервере не работает дебаг, если не работает отладка, что делать, как исправить
Рис. 6. Пример обработки, содержащей функцию СтрокаСоединенияИнформационнойБазы() для управляемого приложения.

Этот момент был в моем случае. Он был приведен в порядок — имя базы было указано как и на сервере 1С: Предприятия — в данном случае в верхнем регистре, но и это не помогло.

1C 8,
Рис. 7. Исправление указания расположения базы 1С 8 с учетом регистра букв в имени базы на сервере.

Но и это не помогло.

Если консолидировать оставшиеся варианты, которые когда-либо помогали, то среди рекомендаций оставались: отключить брендмауэр ОС, в частности Windows, или антивирус, проверить не закрыты ли порты в случае тонкой настройки ограничений на сервере или клиентском рабочем месте.

Было решено провести эксперимент и отключить брандмауэр Windows. «Панель управления» — «Система и безопасность» — «Брандмауэр Windows» и отключение через ссылку «Включение и отключение брандмауэра Windows».

1С 8, влияние брендмауэра Windows на работу отладки на серверебрандмауэра Windows и работа отладки на сервере 1С 8
Рис. 8,9. Отключение брандмауэра в Windows для устранения проблемы отсутствия отладки на стороне сервера в Конфигураторе 1С 8

И это помогло — в предметах отладки сдал доступен серверный вариант:


Рис. 10. Результат решения проблемы. Тип «Сервер»​ в предметах отладки доступен после отключения брандмауэра.

Конечно, оставлять отключенным защитник (брандмауэр) Windows не стоит, если не установлено никаких антивирусных программ на рабочем месте. Но в данной публикации показано явное влияние на работу процесса отладки 1С 8. Если в Вашем случае все-таки причиной окажется брандмауэр, то следует обратиться, если Вы не разбираетесь в настройках, к профильному специалисту, например к системному администратору, чтобы он проверил настройки прав и ограничений и установил их так, чтобы не было препятствий для запуска отладки сервера при конфигурировании в 1С 8.

Оцените, помогло ли Вам предоставленное описание решения ошибки?




© www.azhur-c.ru 2014-2020. Все права защищены. Использование текстов и изображений с данной страницы без письменного разрешения владельца запрещено. При использовании материалов с данной страницы обязательно указание ссылки на данную страницу.

22-11-2021

Журавлев А.С.
(Сайт azhur-c.ru)

   Калиостро

02.07.14 — 12:32

Довожу до ума простенькую обработку. В коде есть ошибка. Ставлю точку останова — не срабатывает.

При выполнении в списке сообщений появляется сообщение об ошибке с номером строки в модуле обработки. Но я не могу по двойному клику перейти в конфигуратор, выскакивает модальное окно

http://gyazo.com/d318e46658e2710af46eecfcd8085422

При любом действии 1с Предприятие закрывается.

В меню «сервис» «параметры» флажок «Отладка в текущем сеансе разрешена» стоит.

Как сделать, чтобы при ошибке программа не закрывалась, а только прерывалось выполнение обработки?

   Segate

1 — 02.07.14 — 12:34

остановка по оштбке? пробовал?

   Maxus43

2 — 02.07.14 — 12:34

попыьтку вставь?

   Franchiser

3 — 02.07.14 — 12:35

Клиент-серверный режим работы, модуль серверный? Если да, нужно запускать службу кластера в режиме Debug

   РенеДекарт

4 — 02.07.14 — 12:36

(2) бесполезно

Ошибка не в обработке.

Это обработка «вклинилась» в какую-то 1с-транзакцию.

(0) включите отладку на сервере, и найдите, где происходит ошибка в конфигурации при работе обработки.

   Калиостро

5 — 02.07.14 — 12:36

(1) С остановкой по ошибке все равно доходит до модального окна, после которого при любом варианте программа закрывается.

(2) Попытка стоит. В исключении и выходит сообщение в окне сообщений.

   Калиостро

6 — 02.07.14 — 12:38

(3) БП 3.0 Режим запуска толстый клиент.

   Franchiser

7 — 02.07.14 — 12:39

«При выполнении в списке сообщений появляется сообщение об ошибке с номером строки в модуле обработки» если номер строки есть — запомни его и найди в модуле обработки вручную.

   Franchiser

8 — 02.07.14 — 12:39

(6) запусти сервер в режиме отладки тогда

   РенеДекарт

9 — 02.07.14 — 12:40

(7)>запомни его и найди в модуле обработки вручную

бесполезно.

Ошибка произошла раньше, а здесь в этой строке — лишь 1с среагиовала сообщением.

Хотя, да, однозначно — ошибка произошла ДО ЭТОЙ СТРОКИ обработки )))

   Калиостро

10 — 02.07.14 — 12:41

(7) Ошибка возникает в процедуре, обращение к которой идет из многих мест в обработке. Мне надо поймать стек вызовов, а точка останова не срабатывает.

   Franchiser

11 — 02.07.14 — 12:42

через «сообщить» можно понять откуда был последний вызов

   РенеДекарт

12 — 02.07.14 — 12:45

(10)>а точка останова не срабатывает

дебаг и отладка

(11) это каким образом 1с самостоятельно сообщит стек вызова!?

   Александр_Тверь

13 — 02.07.14 — 12:47

(0) еще попробуй в отладчике поставить запуск толстого клиента (управляемого приложения).

«Сервис-Параметры-Запуск 1С Предприятие».

и перезапусти из конфигуратора 1С.

   Калиостро

14 — 02.07.14 — 12:53

(13) Да, точка останова сработала. Место возникновения по стеку сразу нашлось.

Но как сделать, чтобы 1с не закрывалась при ошибке в обработке, как это было раньше в 7.7, 8.2?

Или это еще один кактус для мышей?

   Александр_Тверь

15 — 02.07.14 — 12:59

(14) не стоит сразу так негативно относиться.

Попытка

Исключение

КонецПопытки

Тогда не закроется.

   Калиостро

16 — 02.07.14 — 13:02

(15) Так и сделано. Сообщение «В данной транзакции уже происходили ошибки» и модальное окно

http://gyazo.com/d318e46658e2710af46eecfcd8085422

без кнопки «Отмена».

   Александр_Тверь

17 — 02.07.14 — 13:04

(16) это значит, что ошибка происходит в транзакции, в которой ранее произошла уже ошибка :)

   Александр_Тверь

18 — 02.07.14 — 13:07

скорее всего у тебя где-то раньше твоего кода произошла ошибка при работе с БД, которая была подавлена попыткой/исключением, а транзакция отменена не была.

Это обычно приводит к такой ошибке.

   Калиостро

19 — 02.07.14 — 13:12

(17), (18) Я в курсе:) Хрен с ними с ошибками в этой обработке. Это обработка загрузки, ошибки могут быть в выгруженных данных. Это пройдено уже 100500 раз. В данной ситуации проще всего их искать через отладчик.

Вопрос в другом, почему 1с при возникновении ошибки закрывает программу без возможности просто прервать обработку, как в предыдущих версиях?

   Arxangel06

20 — 02.07.14 — 13:21

(19) Просто это фатальная ошибка. Такие ошибки, именно с таким текстом и такими симптомами, были еще в 8.1. Если это обработка загрузки, то нужно записывать изменяемые объекты в транзакции. Тогда БД сама разрулит эту проблему. Проблема у тебя в данном случае выглядит так:

1. юзер открыл объект и запустил процедуру записи (например, проводит документ реализации)

2. твоя обработка меняет объект, связанный с пользовательским, например карточку контрагента, и записывает его.

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

   Александр_Тверь

21 — 02.07.14 — 13:22

(19) наверное тут вопрос технологический.

Не забывай, что 1С как платформа становится все сложнее и сложнее.

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

Можешь попробовать в попытке написать что-нибудь типа ОтменитьТранзакцию(). возможно это сможет помочь.

   РенеДекарт

22 — 02.07.14 — 13:24

(18)>которая была подавлена попыткой/исключением

неверно. Верно в ( 20)

При Попытке все прошло бы гладко.

(19)>без возможности просто прервать обработку, как в предыдущих версиях?

в отладчике включить «Останавливаться по ошибке».

(21)>Не забывай, что 1С как платформа становится все сложнее и сложнее.

когда разговаривать начнет? ))

   РенеДекарт

23 — 02.07.14 — 13:26

+ «в отладчике включить «Останавливаться по ошибке».»

но опять же, платформа остановится не в реальном месте возникновения ошибки, а «где среагиовала», т.е. в обработке.

Это к вопросу «все сложнее и сложнее».

   РенеДекарт

24 — 02.07.14 — 13:26

*среагировала

   Александр_Тверь

25 — 02.07.14 — 13:26

(22) если ошибка происходит при записи и при этом нет подавления попыткой/исключением то ошибка возникнет тут же и будет звучать типа: ошибка записи бла бла бла.

   РенеДекарт

26 — 02.07.14 — 13:29

(25)>и при этом нет подавления попыткой/исключением то ошибка возникнет тут же

Вы удивитесь, но в 1С все свое:

Попытки нет и не было, ошибка происходит в какой-то транзакции, 1с выполняет все до конца, а потом — по завершению/откату транзакции (уже в другом совершенно месте, но по ходу выполнения кода, т.е. дальше) сообщает об «ошибке».

   РенеДекарт

27 — 02.07.14 — 13:29

(25)>тут же и будет звучать типа: ошибка записи бла бла бла.

вы честно предполагали за 10 рублей получить СУБД? ))

   Александр_Тверь

28 — 02.07.14 — 13:32

(26) все случаи с которыми я сталкивался были именно такими как я описал. Правда в основном это касается 8.1

(27) не понял вопроса и юмора с ним связанного.

  

Arxangel06

29 — 02.07.14 — 13:52

(28) в толстом клиенте 8.2 ничего не изменилось.

Понравилась статья? Поделить с друзьями:
  • Ошибка в сампе grand theft auto sa directx
  • Ошибка в сампе an exception occurred как исправить
  • Ошибка в самом конце текста
  • Ошибка в самаре что это такое
  • Ошибка в саи при открытии файла