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

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

Включение режима отладки на сервере 1С

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

Включить отладку в 1С вы сможете по следующему алгоритму:

  • Перейдите на сервер 1С и откройте регистр через функцию «Выполнить» из меню «Пуск». Также можно воспользоваться одновременным нажатием клавиш Windows и R на клавиатуре. Введите команду открытия регистра — «regedit»;

Рис.1 Включение отладки

  • В открывшемся окне в дереве слева пройдите по пути: «HKEY_LOCAL_MACHINE», «SYSTEM», «ControlSet001», «services», «1C:Enterprise 8.3 Server Agent»;

Рис.2 Включение отладки

  • Выделив нижний пункт, в правой части находим реквизит с именем «ImagePath» и меняем его с помощью контекстного меню. Чтобы подключить отладку на сервере, к существующему пути добавляем строку » -debug»;

Рис.3 Включение отладки

  • Осталось лишь перезапустить агент сервера 1С и можно использовать режим отладки на сервере.

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

Рис.4 Запуск отладки через клиентское приложение

Как только запуск 1С в режиме отладки произошел, вы увидите практически аналогичное окно программы. Единственное отличие будет снизу – 1С показывает статистику по количествам вызовов на сером фоне. Но если вы переключитесь в этот момент в конфигуратор, то заметите, что верхняя панель изменилась. Появились новые кнопки, с помощью которых вы и будете управлять режимом отладки.

Рис.5 Управление режимом отладки

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

Среди тех возможностей режима отладки «Предприятия», которыми разработчики 1С пользуются регулярно, можно выделить следующие:

  • Точки останова;
  • Пошаговая отладка кода;
  • Просмотр значений;
  • Стек вызовов.

Функции отладки 1С

Основная возможность отладки заключается в том, чтобы при работе в режиме Предприятия 1С запустить отладку и проверить, как отрабатывает код. Для этого разработчики 1С устанавливают точку останова на строке алгоритма. Чтобы это сделать, необходимо выделить мышкой строку и нажать кнопку с изображением красного круга. Также вы можете щелкнуть дважды на полосе слева от текста модуля или воспользоваться «горячей» клавишей F9.

Рис.6 Проверка отработки кода

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

Рис.7 Меню «Отладка»

Еще один полезный механизм из этого меню – «Остановка по ошибке», позволяющий останавливаться только в недопустимых ситуациях. После остановки вы попадаете в конфигуратор и можете использовать другие возможности отладки. К примеру, перемещаться по строкам кода с помощью специальных клавиш, описанных в меню «Отладка», где сверху выведены более популярные функции. Разница между F10 и F11 заключается в том, что в первом случае вы будете попадать во вложенные функции и процедуры.

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

Серверная отладка в 1С хороша еще и тем, что вы можете посмотреть значение переменных после выполнения каждой строки кода. Простейший вариант – просто навести курсор мыши, и 1С высветит значение в выплывающем окне. Но в платформе, в меню «Отладка», встроены еще два инструмента:

  • Табло. При вызове открывается окно, в котором можно перетащить переменные, выделив их двойным нажатием в коде. В окне показывается их значение и тип на протяжении всей отладки – можно следить за изменением в процессе выполнения алгоритма;

Рис.9 Табло

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

Рис.10 Вычислить выражение

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

Рис.11 Последовательность вызова процедур в алгоритме

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

Чтобы не сталкиваться с лишними неприятностями и не терять свое драгоценное время, мы готовы предложить Вам услуги нашей компании, подробнее с которыми можно ознакомиться по телефону: +7(495) 240-8668.

Итак, почему в 1С не запускается отладка? Так как программа пишется в конфигураторе, а выполнение ее происходит в режиме Предприятия, следовательно, конфигуратор и режим предприятия для использования отладки должны быть:

  • запущенными;
  • связанными.

Запустить отладочный режим 1С можно с помощью соответствующей кнопки в программе или, используя «меню», выбрать пункт «отладка». Далее выполняйте следующие действия:

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

Возможные проблемы

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

  • конфигуратору не удается обнаружить сервер;
  • сервер запускается, но произведенные действия не дают никакого эффекта;
  • зависание программ.

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

Возникли вопросы? Понадобилась помощь в работе с 1С? Звоните: +7(495) 240-8668 и все Ваши проблемы будут решены в кратчайшие сроки.

(1) В параметрах отладки стоит «Отладка по протоколу TCP/IP». Как и на всех других базах. В «Предметах отладки» видит и клиента и сервер, подключается нормально. Выглядит окно так же, как и на других базах, где отладка работает нормально.
(2) Не стоят. На других базах тоже не стоят. Попробовал поставить — не помогает.
(3) Базу на сервер приложений удалял и добавлял снова. Надеюсь это почистило кэши, касающиеся её. Глобально кэши сервера приложений не чистил — ещё надо время найти, пользователей выгонять.
(5) Предметы отладки видит. Окно с предметами отладки выглядит так же, как и на других базах.
(6) О! Похоже близко от проблемы. Если запустить базу из конфигуратора в режиме отладки, потом отключиться от сервера в предметах отладки и подключиться снова, отладка начинает работать. В этом запуске. Снова запускаешь отладку — и опять приходится переподключаться в серверу.
Значит вопрос перефразируется так: какого чёрта неправильно отладка подключается к серверу и куда попробовать потыкать пальцами, что бы она подключалась сразу сама правильно, не требуя ручного отключить/подключить в предметах отладки?
Вопрос больше теоретический. Что бы самому понимать, если что куда лезть. Это сейчас база всего лишь одна из нескольких разработческих баз, с большой вероятностью проблема исчезнет, если её совсем убить и сделать новую с ДРУГИМ ИМЕНЕМ. Но понять-то хочется.

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

Из официальных источников мы имеем следующую информацию:

Выдержка из документа «Клиент-серверный вариант. Руководство администратора»

/debug —

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

  • -tcp ‑ протокол TCP/IP;
  • -http ‑ протокол HTTP.

Значение по умолчанию: -tcp.

СОВЕТ. В связи с тем, что в режиме отладки производительность сервера падает, рекомендуется использовать отладочный режим только для тех серверов, на которых выполняется отладка.

ВАЖНО! Выдержка взята с сайта its.1c.ru.

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

Допустим, ты отвечаешь за ИТ инфраструктуру и к тебе подходит программист 1С, чтобы попросить запустить 1С в режиме отладки.

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

1С в серверном варианте требует комплексного подхода, который достигается наличием достаточных компетенций у специалистов из разных направлений – программист 1С, системный администратор, администратор баз данных.

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

Как запустить сервер 1С в режиме отладки правильно?

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

Есть несколько вариантов, но рассмотрим самый ходовой – изменение значения параметра реестра Windows.

Поздравляю – режим отладки включен!

Осталось проверить его работу.

Самый простой способ проверки работы режима отладки 1С на сервере

Настраиваем фаервол.

Если платформа 1С для проведения отладки будет запускаться не на сервере 1С, на стороне клиента должны быть открыты TCP и UDP порты для диапазона 1560-1591.

На стороне сервера должны быть открыты TCP порты 1540, 1541, 1560-1591.

ПРИМЕЧАНИЕ! Эти порты устанавливаются по умолчанию, если вы их меняли, то в фаерволе надо будет открыть новые.

Проверяем работу отладчика:

  1. Запускаем конфигуратор.
  2. Заходим в меню «Отладка» — «Начать отладку» или нажимаем клавишу «F5». Запустится платформа 1С в режиме предприятия.
  3. Не закрывая 1С предприятие, переходим в меню «Отладка» — «Подключение…».

Если столбец «Тип» заполнен значением «Сервер», то всё работает. Идём писать письмо программисту 1С.

ПРИМЕЧАНИЕ! Если сервер и клиент – не один сервер, ставим галочку «Искать предметы отладки на удаленном компьютере»: и указываем сервер 1С.

В блоке «Доступные предметы отладки:» столбец «Тип» должен быть заполнен значением «Сервер». Если у вас так, то всё работает.

Арендуя сервер для 1С в компании МАРС Телеком, вы всегда сможете получить помощь наших технических специалистов по этому и другим вопросам.

Вместо введения

Привет всем!

Более чем уверен, многие из вас уже сталкивались с тем, что современная платформа 1с, запущенная в режиме отладки, иногда попросту игнорирует все «точки останова» при выполнении какой-нибудь процедуры или функции, где они установлены.

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

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

Описывать использование «старого» механизма отладки я буду на демо конфигурации УПП в файловом режиме.

Описывать «новый» механизм отладки я буду также на файловой базе. Исходя из моего опыта, большинство микро- и маленьких компаний имеют мелкие и простые файловые базы, например «Розница 2.2».

Итак, начнем по-пунктам:

Использование старого механизма отладки

Если Вы спросите меня — «зачем нужно уделять внимание описанию старого механизма?», могу на это ответить так — во-первых, чтобы были более видны отличия механизма отладки на обычных формах от механизма отладки на управляемых формах, и во-вторых, на своем жизненном пути я встречал разработчиков «программистов 1с», которые не знают, что такое «режим отладки» платформы 1с и как с ним работать. И, тем не менее, числятся как «инженер-программист».

Пусть этот раздел будет для них, остальные — пропустите.

Итак, допустим, вы имеете «старую» конфигурацию УПП 1.3. Конфигурация работает на обычных формах.

Открываем конфигуратор, заходим в форму документа «Реализация товаров и услуг», ставим точку останова в коде процедуры «КонтрагентОбработкаВыбора» (Рис. 1).

Рис.1. Конфигуратор УПП 1.3 (работа с неуправляемыми формами).

Рис.2. Открытие «Табло» в режиме отладки в конфигураторе.

По достижению события, в данном случае у меня — это обработка выбора «поля» Контрагент в документе «Реализация товаров и услуг» платформа «возвращает» нас в конфигуратор, где, в открытом ранее «табло» мы можем отследить значения передаваемых параметров в эту процедуру :

Здесь это: Элемент, ВыбранноеЗначение и СтандартнаяОбработка (Рис. 3):

Рис.3. Содержимое «Табло-1» в процессе отладки.

Далее, нажимаем, кнопку «Продолжить отладку» и продолжаем работу до повторного возникновения этого события

Все очень удобно и очень просто. Привычно. Работай — не хочу…. все как на ладони.

Переход на новый механизм

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

Рис.4. Установка точки останова в конфигурации на управляемых формах.

2. Для убедительности добавляю строчку кода «Привет!» в выбранную процедуру

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

3.Запускаю отладчик, «добираюсь» до вызова этой процедуры…. и ничего не работает…. точка останова «проигнорирована»

А сообщение «Привет» выскочило! (Рис.5).

Рис.5. Тестирование срабатывания точки останова.

Ладно, сделаем так, установим точку останова на коде и запустим конфигурацию в режиме отладке заново (Рис.6.).

Рис.6. Точка останова установлена напротив строки кода (конфигурация на УФ).

Точка останова отработала. У меня открылось табло, где я могу посмотреть передаваемый в процедуру «Элемент» (Рис.7):

Рис.7. Содержимое «Табло-1» при отладке конфигурации на управляемых формах.

Вот, определяем, что в «старом» режиме отладке — отработка «точки» возможна, если она установлена на «пустой строке». В новом режиме — отработка «точки» не получается. Если это запомнить — можно сэкономить много времени и нервов. Казалось бы элементарная «невидимая» вещь, но помнить нужно.

Базовые настройки режима отладки для конфигурации на УФ

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

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

Во-первых, в конфигураторе заходим в меню «Сервис — Параметры — Отладка». Здесь выбираем протолок отладки «Отладка по протоколу TCP/IP» как более универсальный.

Используем локальный сервер отладки (по-умолчанию).

Далее, конфигуратор предлагает перезапустить его для применения настроек, соглашаемся с этим и перезапускаем.

Выглядит это вот так (Рис.7):

Рис.7 Установка отладки по протоколу HTTP и принятие изменений.

Одним из отличий работы файлового режима отладки от серверного режима заключается в определении типов предметов отладки. Есть такая кнопка «Автоматическое подключение» в меню «Отладка — подключение». Установка «типов предметов отладки» для файлового режима — не требуется (точнее это бесполезно) — Рис.8, в файловом режиме будут подтягиваться все задействованные типы отладки, например «Сервер (файловый вариант) и Тонкий клиент»:

Рис.8. Установка предметов отладки (в файловом варианте не требуется).

Так же я прописал значения полей «Отладка при перезапуске» и «Сервер отладки при перезапуске». Просто повторил их с полей свыше.

Рис.9. Параметры запуска предприятия (Отладка разрешена).

Все, мы работаем в режиме отладочном режиме для файлового режима базы (Рис.10).

Рис.10. Задействованные предметы отладки (файловый режим).

При нажатии кнопки «Завершить» — закрывается выбранный тип отладки, например это так же может быть фоновое задание в файловом варианте под другим сеансом.

Пожалуй, о настройках файлового режима мне написать больше нечего.

Пример работы, главное отличие от старого механизма

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

Заходим в процедуру и ставим точку останова напротив кода. Например, вот здесь (Рис.11):

Рис.11. Точка останова в процедуре на событие «При изменении номенклатуры» — Розница 2.2.

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

В ней пишем «Объект» и выбираем какое-нибудь свойство, например дата (Рис.12.):

Рис.12. Устанавливаем новое значение в виде выражения в «Табло-1».

Нажимаем, правой кнопкой на «Установить новое значение в виде выражения» и пишем вот такой код:

Дата(«11.10.2019 10:10:10»)

Рис.13. Ввод выражения.

Теперь, «продолжаем отладку», — мы возвращаемся в конфигурацию и опсс — у нас поменялось наше значение (Рис.14). Класс.

Рис.14. Результат изменения параметра «на лету» через подстановку в отладчике.

В этом пример, я наглядно показал основное отличие старого механизма от нового — это изменение параметров в процессе отладки и «передача» их в предприятие. По мне — так очень удобная штука.

Вместо заключения

Так, вроде все. Надеюсь, что я достаточно подробно описал основные «отладочные моменты». Специально не стал уделять внимание таким возможностям как «остановка по ошибке», «стек вызовов», «точка остановка с условием»…. кому интересно и кто не знает — может сам посмотреть что это такое.

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

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

Хочу еще раз обратить ваше внимание на вот эти моменты:

1. (Здесь я сам споткнулся и не раз). В новом механизме УФ — это «установка» точки остановка на коде. Не все так делают и может возникнуть непонимание.

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

И само изменение переменной в процессе отладки у меня почему-то ассоциируется с триггерами (подписками на события, только более униварсальными) — очень похоже, не знаю как вам…

Ну и вообще — куда ни копни в механизмах 1с — там такая «бездонная яма» информации… очень многое и много нужно знать и помнить.

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

Желаю Всем удачного и комфортного кодинга. И, конечно, постоянного изучения возможностей 1с предприятия. Всем привет!