8 назрела необходимость (о чём ниже) в значительной переработке процедуры отладки. Это отразилось в версии 8.3.7.1759. Во-первых, был создан для этой процедуры универсальный интерфейс, а во-вторых, таким изменением обеспечивается дальнейшее развитие самой программы. Ведь теперь с отладкой можно работать не только через Конфигуратор, но и с помощью Development Tools. Рассмотрим, как включить отладку на сервере 1С начиная с новой версии.
Использование нового протокола
Предыдущий отладчик, который был реализован в предыдущих версиях,осуществлял управление клиентскими и серверными приложениями с помощью протокола TCP/IP.
В настоящее время использование такого протокола стало ограничивать выход программы 1С:Предприятие в интернет и порождало неудобства для работы мобильных приложений.
Поэтому для свободного доступа к информационным базам, которые могут находиться за пределами локальной сетки, теперь принят к использованию гибкий протокол HTTP.
Новая архитектура
Ранее, осуществляя конфигураторные отладки, сотрудник должен был подключаться к информационной базе. Для этого требовалось наделить его правами администратора.
В новой версии в прямом соединении с базами нет необходимости - достаточно просто обладать такой же базой, как у клиента. А загрузить её можно из файла.
Мобильные приложения
По протоколу HTTP теперь имеется возможность отлаживать и серверные данные, и клиентские, и приложения.
Другие изменения
С новой версией в отладочной процедуре доступно изменение значений для локальных переменных, - для этой цели реализовано новое окно быстрого просмотра.
Режим вычислений изменён на асинхронный, позволяющий продолжать работу не дожидаясь результатов.
Отладчик в Development Tools
Взаимодействие с новой процедурой выполнено в специально разработанном универсальном программном интерфейсе. С одной стороны, этот интерфейс используется Конфигуратором. С другой стороны - он внедрён в новую среду 1C:Enterprise Development Tools.
Как это выглядит теперь
После изменения программы процедура происходит по следующему сценарию:
Теперь в ней участвуют не только отладчик и предметы, как это было ранее. Теперь в цепочку введён дополнительный элемент - Server.
Мало того, что он добавлен - он служит основным элементом обмена информацией между отладчиком и предметами. А сам обмен происходит посредством выстраиваемых в очередь сообщений.
А поскольку обмен этот проводится через протокол HTTP, то теперь не имеет значения, где именно могут быть расположены данные.
Обращения к серверу формируются со стороны отладчика и предметов в форме дополнительных запросов-соединений. При появлении таковых - им направляются соответствующие ответы.
Включение отладки при разных сценариях
Для прикладного разработчика не произошло никаких изменений. Значительное отличие состоит в том, что новый механизм требуется включать. Ведь по умолчанию он теперь отключён.
Рассмотрим, что же происходит при запуске режима если мы выбираем один из двух сценариев.
Файловый сценарий
В начале файлового варианта необходимо в конфигураторных настройках указать использование нового механизма - «Отладка по протоколу HTTP».
Тогда со стороны Конфигуратора будет автоматически предложено использовать локальный сервер. Это условие нужно принять и заново запустить программу в режиме Конфигуратора.
После этого вновь запущенный Конфигуратор при следующем сеансе сохранит избранный нами новый способ. Но для той же информационной базы. Поэтому при обращении к другой инфобазе его также требуется включить.
Включённый механизм теперь автоматически будет запускать Сервер отладчика, который представляет собой специальное приложение dbgs.exe. Отражается оно в окне Диспетчера задач.
Значение параметра ownerPID будет соответствовать идентификатору приложения, которое привязано к нему.
При запуске отладочного сеанса через Конфигуратор - серверное подключение произойдёт автоматически. А в нём отразятся подключённые предметы.
Если же программа 1С была активирована без нового механизма, то включить отладку на сервере 1С нужно будет вручную. Только теперь нужно будет указывать серверный адрес:
Заходим в Сервис — Параметры
Он находится в настройках предметов:
Заходим Подключение — Настройка
При использовании файлового сценария с несколькими базами одновременно нужно учесть важный нюанс, - каждый из Конфигураторов (с включённым механизмом по HTTP) отправляет свой Сервер:
Поэтому если открыто несколько Конфигураторов, то для подключения Клиента нужно указать верный из них.
Клиент-серверный сценарий
Отладка на сервере 1С по клиент-серверному сценарию, как и в предыдущем случае, начинается запуском режима. Здесь указывается использование нового механизма HTTP. Делается это таким образом:
ragent.exe -debug -http
При его запуске автоматически стартует за ним и отладчик.
Значение параметра ownerPID будет соответствовать идентификационному номеру менеджера кластера 1С.
Программой будет сформировано предложение использовать теперь отладочный сервер кластера (а не локальный как в предыдущем сценарии). Соглашаемся и перезапускаем его.
В дальнейшем всё будет проходить подобно файловому сценарию. Только при запуске Конфигуратора серверной базы локальный сервер-отладчик уже не будет запускаться.
Надеемся, что наша публикация помогла вам разобраться с проблемой, как включить отладку на сервере 1С.
Приветствуем всех читателей портала сайт, в этой статье мы поговорим про точки останова в 1С, а точнее про их некорректную работу в определенных версиях платформы 1С.
В конце мая 2015 года вышла в свет новая платформа 1С 8.3.6.2014 . При работе с данной платформой у многих программистов возникли проблемные ситуации. В частности, должным образом не работали точки останова в конфигураторе при отладке приложения . Как оказалось, проблемы были замечены при отладки внешних обработок, с помощью обработки «Тестирование внешних печатных форм» .
Давайте сначала разберем принцип работы обработки «Тестирование внешних печатных форм». С помощью данной обработки мы указывали нашу внешнюю обработку (внешняя печатная форма например) (1), и затем открывали эту же печатную форму в конифгураторе и ставили точки останова, после этого запускали предприятие под отладкой. При нажатии на кнопку (2) запускалась именно наша внешняя печатная форма, а не сгенерированная системой по умолчанию в каталоге tmp , в результате срабатывала точка останова в нашей обработке открытой в конфигураторе. Все работало как положено. Но это было раньше… Если мы выполним данные действия в платформе 1С 8.3.6.2014 то точки останова во внешней обработке срабатывать не будут ! Как выяснилось данная ситуация возникала потому что платформа 1С 8.3.6.2014 загружала внешнюю обработку в оперативную память , в то время как младшие версии платформы сохраняли ее во временный файл, который располагался в каталоге временных файлов 1С заданных по умолчанию.
Решение проблемы с точками останова в внешних обработках на платформе 1С 8.3.6.2014
К сожалению, на текущий момент, решить проблему с точками останова в внешних обработках на платформе 1С 8.3.6.2014 не удалось . Все дело в том, что данная версия платформы хранит обработку в оперативной памяти, а отладчик туда не попадает, так как мы не можем открыть обработку в конфигураторе и поставить точку останова. Будем надеяться, что специалисты из фирмы 1С сделают возможным заход в оперативную память отладчиком, или придумают альтернативные методы отладки.
Отладка - это неотъемлемая этап разработки прикладного решения. Умение эффективно использовать имеющиеся инструменты существенно снижает временные затраты на разработку и повышает ее качество. В этой статье я попробую рассказать о том, какие инструменты для отладки предоставляет нам система «1С:Предприятие».
Кроме этого отмечу, что эта статья входит в небольшую серию статей об отладке в 1С:
- Инструменты отладки в 1С
Имеющиеся в наличии инструменты отладки собраны в меню - «Отладка» можно вызвать соответствующими горячими клавишами или из меню «Отладка».
Меню «Отладка»
Точки останова
Точка останова - это некая точка в программном модуле на которой выполнение модуля приостанавливается и управление перехватывает отладчик. Точку останова можно установить с любой строке модуля и в любой момент работы с отладчиком. Место установки точки останова отмечается соответствующим знаком, для разных видов точек останова используются разные обозначения:
Работе с точками останова посвящена секция меню «Отладка»:
- Точка останова (F9) - устанавливает/удаляет точку останова в строке на которой стоит курсор;
- Точка останова с условием - устанавливает точку останова и открывает окно для ввода условия - логического выражения, повторное использование команды в этой же строке откроет окно для редактирования условия. Останов в указанной точке будет выполнен только если условие истинно;
- Включить/отключить точку останова (Ctrl+Shift+F9) - включает/отключает точку останова;
- Удалить все точки останова - удаляет все точки останова во всех модулях;
- Отключить все точки останова - отключает все точки останова во всех модулях;
- Список точек останова (Alt+F9) - открывает окно для просмотра и управления точками останова, о нем ниже.
Кроме этого пункт меню «Отладка» - «Остановка по ошибке…» также можно отнести к работе с точками останова, так как эта команда позволяет останавливать выполнение кода при возникновении ошибки и переходит к строке которая вызвала ошибку.
Команда «Список точек останова» (Alt+F9) открывает окно для просмотра и управления точками останова:
Окно «Точки останова»
В окне показаны все точки останова во всех модулях, их расположение (модуль и номер строки) и условие (если есть). Имеется возможность включить/отключить/удалить точки останова, перейти к месту установки точек останова, сохранить и загрузить список точек останова.
Пошаговое выполнение
После того как сработает какая-либо точка останова и управление перейдет к отладчику обычно следует пошаговое выполнение кода модуля. Для пошагового выполнения в меню «Отладка» (и на панели отладки) имеется соответствующая группа команд - они появляются в момент подключения первого из предметов отладки.
В режиме пошаговой отладки исполнение кода приостанавливается после каждой команды и ждет инструкций от отладчика. А инструкции бывают следующими:
- Шагнуть в (F11) - если следующая команда это процедура/функция, то начинается пошаговая отладка этой функции, иначе отладчик просто переходит к следующей команде;
- Шагнуть через (F10) - если следующая команда это процедура/функция, то она полностью выполняется (не пошагово) и отладчик переходит к следующей команде;
- Шагнуть из (Shift+F11) - прерывает пошаговое выполнение процедуры/функции и останавливается на первом операторе после выхода из нее;
- Идти до курсора (Shift+F10) - выполняются все операторы до строки на которой стоит курсор;
- Текущая строка - перемещает курсор в ту строку, на которой остановился отладчик;
- Продолжить отладку (F5) - прерывает пошаговую отладку и продолжает свободное исполнение модуля.
Управление отладкой осуществляется при помощи соответствующих команд меню «Отладка»:
- Перезапустить (Ctrl+Shift+F5) - прекращает выполнение конфигурации и производить повторyый запуск в режиме «1С:Предприятия»;
- Завершить (Shift+F5) - прекращает выполнение модуля и завершает работу текущего предмета отладки;
- Остановить - останавливает выполнение модуля на текущем операторе и позволяет начать отладку со следующей исполняемой строки.
- Остановка по ошибке - открывает окно настройки остановки по ошибке:
Окно «Выражение» (Shift+F9)
Окно «Выражение»
Позволяет рассчитать выражение на встроенном языке. Следует отметить, что выражения выполняются в реальной системе и об этом нельзя забывать, если, к примеру, рассчитываемое выражение создает некий объект данных, то этот объект будет создан в реальной системе.
Табло (Ctrl+Clt+W)
Специальное окно, которое состоит из четырех страниц (переключение из контекстного меню) и отображает результаты вычисления переменных, арифметических выражений и выражений с использованием встроенного языка.
Окно «Локальные переменные»
Окно «Локальные переменные»
Специальное окно, которое во время отладки показывает список локальных переменных текущего метода. Редактировать таблицу переменных нельзя.
Когда управление находится у отладчика имеется возможность изменять значения переменных и свойства объектов (доступные для записи). Доступ к этой функции можно получить из окна выражений (подчеркнутая кнопка на рисунке выше), а также из контекстного меню в окне локальных переменных и в табло (такой же значок как и в окне выражений).
Откроется специальное окно (как на рисунке выше). В верхней части можно ввести новое значение для переменной - константное значение любого типа или выражение, корректное с точки зрения встроенного языка.
После нажатия кнопки «Установить» в нижней части появится сообщение, которое проинформирует нас - удалось изменить значение переменной или нет.
Пользоваться функцией нужно с осторожностью - необдуманное изменение значений переменных может привести к записи в базу данных совершенно неправильных значений.
Показывает последовательность вызовов процедур и функций, которая привела к отлаживаемой в данный момент строке кода. Колонки таблицы содержат название метода, номер строки модуля и предмет отладки.
Замер производительности
Замер производительности позволяет оценить скорость работы всей конфигурации или ее части. Измеряется скорость выполнения и частота использования конкретных участков кода, а также прочая дополнительная информация о которой ниже.
Полученная информация позволяет, например, выбрать наиболее оптимальный (по быстродействию) вариант решения какой-либо задачи или отыскать «узкие», в плане быстродействия, места конфигурации. При этом нужно учитывать, что какие-либо сравнения скорости выполнения нужно проводить в одинаковых условиях.
Включить режим замера производительности можно соответствующей командой из меню «Отладка»:
Команда «Замер производительности»Включить режим замера производительности можно как до запуска отладки, так и во время. Повторный использование команды прекратит замер и выведет окно с результатами. Включение и выключение замера производительности действует на все подключенные ко отладчику предметы отладки.
Результаты замера
Результаты замера производительности отображаются в виде таблицы со следующими столбцами:
- Модуль - название модуля;
- Номер строки - номер строки;
- Строка - участок кода;
- Кол. - количество вызовов данного участка кода за все время замера;
- Врем. - суммарное время выполнения (в секундах) данного участка кода за все время замера;
- %(Врем.) - процент суммарного времени выполнения данного участка кода к общему времени замера (общее время замера - это суммарное время выполнения кода конфигурации);
- Клиент - отметка участков кода выполняющихся на клиенте;
- Сервер - отметка участков кода выполняющихся на сервере;
- Обр. сервер - отметка участков кода в которых происходит вызов сервера.
Таблица с результатами замера производительности может выглядеть, например, так:
Если в строке вызывается процедура/функция то система может показывать время выполнения строки как с учетом времени выполнения вызываемой процедуры/функции и без учета этого времени. Флажок «Для вызова процедур и функций включать время выполнения» служит для выбора способа подсчета времени выполнения строки.
Это очередная статья из цикла «Первые шаги в разработке на 1С». Она продолжает тему предыдущей статьи, посвященной особенностям работы в конфигураторе.
В этом материале мы рассмотрим специальный инструмент, облегчающий разработку и отладку программного кода на платформе «1С:Предприятие», который получил название Отладчик. Изучив статью, вы узнаете:
- Для чего нужен отладчик и как им пользоваться?
- Что такое точки останова, как и зачем их ставить?
- Как пошагово выполнять программный код и зачем это нужно?
- Где смотреть значения своих переменных, а также вычислять значения выражений?
- Для чего нужен стек вызова и как его посмотреть?
- Как остановить выполнение программного кода по ошибке?
Применимость
В статье рассматривается платформа 1C версии 8.3.4.365. Текущая актуальная версия платформы содержит более богатые механизмы отладки, однако это не делает представленную информацию устаревшей, т.к. все описанные в статье механизмы и приемы отладки остались прежними.
Использование отладчика в системе «1С:Предприятие 8»
Система “1С:Предприятие 8” содержит встроенный отладчик программного кода.
Отладчик – это специальный инструмент Конфигуратора, который позволяет анализировать работу программного кода. В приведенной статье рассматриваются некоторые возможности отладчика, которые чаще всего используются разработчиками.
Для анализа программного кода с помощью отладчика используется специальный инструмент, который называется точка останова .
Точка останова – место остановки работы системы в программном коде, отмеченное специальным маркером (Рис. 1).
Рис. 1. Точка останова
При срабатывании точки останова становится возможным пошаговое выполнение программного кода и анализ значений переменных.
Установка точек останова
Установка точки останова на определенной строке программного кода осуществляется двойным щелчком левой кнопки мыши в левой области программного модуля, которая выделена серым цветом.
Также возможна установка точки останова командой на панели инструментов конфигуратора или кнопкой F9 . Снятие существующей точки останова производится аналогичным образом.
Для установки точки останова на конец процедуры или функции необходимо устанавливать точку останова на ключевом слове КонецПроцедуры или КонецФункции .
Точку останова можно временно отключить, не удаляя ее из программного кода. Для выключения точки останова выполнить команду Отключить точку останова на панели инструментов или нажать сочетание клавиш Ctrl+Shift+F9 .
Для просмотра всех точек останова нужно выполнить команду главного меню Отладка – Список точек останова или нажать сочетание клавиш Alt+F9 . В открывшей форме Точки останова можно временно отключать или удалять точки останова (Рис. 2).
Рис. 2. Список точек останова
Для удаления всех точек останова нужно выполнить команду главного меню конфигуратора Отладка – Убрать все точки останова .
Точка останова с условием
Точка останова с условием необходима для остановки выполнения программного кода при срабатывании определенного условия.
Для установки точки останова с условием нужно выполнить команду главного меню конфигуратора Отладка – Точка остановка с условием . Откроется форма Условие останова. В поле ввода нужно ввести необходимое условие (например, значение какой-либо переменной в программном коде) и нажать кнопку ОК (Рис. 3).
После запуска системы в режиме отладки точка останова сработает, когда будет выполнено условие останова. Убедиться в этом можно с помощью формы Табло (Рис. 3). Работа с формой Табло будет рассмотрена ниже.
Рис. 3. Установка точки останова с условием и результат ее обработки
Для того чтобы начать отлаживать программный код необходимо установить точки останова и запустить приложение в режиме отладки. Для запуска отладки нужно выполнить команду главного меню конфигуратора Отладка – Начать отладку (F5).
После запуска приложения в отладочном режиме необходимо обеспечить срабатывание точки останова. Здесь возможны разные сценарии. Например, точка останова установлена в модуле формы документа в стандартном обработчике события ПриОткрытии () . В этом случае точка останова сработает в момент открытия формы любого документа в пользовательском режиме.
Точка останова может быть установлена в произвольной процедуре или функции, которую создал разработчик. В этом случае точка останова сработает после вызова этой процедуры или функции из определенной строки программного кода.
После того как сработала точка останова система останавливает выполнение программного кода и становится возможным использование различных функций отладчика, таких как: пошаговое выполнение программного кода, использование формы Табло и т.д.
Пошаговое выполнение программного кода
Для пошагового выполнения программного кода используются команды, которые доступны в главном меню конфигуратора в меню Отладка . Для этих команд удобно использовать горячие клавиши.
Шагнуть в (F11) . Если следующий оператор программного кода выполняет вызов проце-дуры или функции, то осуществляется ее пошаговое выполнение, иначе – выполняется следующий оператор.
Шагнуть через (F10) . Если следующий оператор программного кода выполняет вызов процедуры или функции, то осуществляется ее выполнение полностью без входа внутрь. Затем выполняется следующий оператор.
Идти до курсора (Shift+F10) . Осуществляется выполнение операторов от текущей выпол-няемой строки до строки программного кода, где расположен курсор.
Использование форм Табло и Выражение
Для просмотра значений переменных и вычисления значений выражений во время оста-новки программного кода предназначены формы Табло и Выражение .
Форма Табло вызывается командой главного меню конфигуратора Отладка – Табло или сочетанием клавиш Ctrl+Alt+W . В табло можно записать значения каких-либо переменных и анализировать, как они изменяются в процессе выполнения программного кода.
У табло доступны четыре закладки. По умолчанию закладки выключены. Для включения закладок в форме Табло нужно вызвать контекстное меню и установить флаг Закладки (Рис. 4).
Рис. 4. Форма “Табло” с включенными закладками
Для вычисления значений выражений в момент остановки программного кода используется форма Выражение . Для открытия этой формы используется команда главного меню конфигуратора Отладка – Вычислить выражение или сочетание клавиш Shift+F9 (Рис. 5).
Рис. 5. Форма “Выражение”
В поле Выражение вводится выражение на встроенном языке. Значение выражения можно получить нажав кнопку Рассчитать . В поле Результат выводится значение выражения. Выражение можно отобразить в табло нажав кнопку Включить в табло .
Для просмотра значений коллекции (например, таблицы значений, списка значений, массива) можно использовать команду Показать значение в отдельном окне или клавишу F2 .
Просмотр стека вызовов
Стек вызовов – форма, которая позволяет отслеживать взаимные вызовы процедур и функций в процессе исполнения программного кода. Стек вызовов отображается командой главного меню конфигуратора Отладка – Стек вызовов или сочетанием клавиш Ctrl+Alt+C . Из формы Стек вызовов можно перейти к соответствующей процедуре или функции (Рис. 6).
В форме нужно установить флаг Остановка по ошибке и запустить приложение в режиме отладки. Выполнение программного кода будет остановлено на строке, в которой возникла ошибка (Рис. 7).
Используя возможности отладчика, описанные в этой статье, разработчик может анализировать как собственный программный код, так и программный код типовых решений фирмы “1С”.
Как показывает практика без отладчика поиск ошибок в программном кода занимает длительное время. Поэтому освоению отладчика нужно уделить особое внимание.
Как было упомянуто выше, механизм отладки был существенным образом расширен в последующих редакциях платформы. Для тех, кто хочет ознакомиться с подробным описанием этих нововведений, рекомендуем прочитать соответствующий материал в блоге самих разработчиков платформы.
В заключение отметим, что конфигуратор – это полноценная и до недавнего времени единственная среда разработки приложений на платформе «1С:Предприятие 8». Он обладает очень богатым функционалом, призванным помочь разработчику в решении его ежедневных задач.
В редакции 8.3 в конфигураторе добавилось много мелких полезностей для разработчика. И в следующей статье мы с ними обязательно познакомимся.
Как запустить отладку на сервере 1С...
По умолчанию, при использовании клиент-серверной архитектуры 1С:Предприятие режим отладки кода 1С работает только на клиентской стороне. Серверные процедуры и функции не видны клиентской машине.
Чтобы включить использование отладки на сервере 1С, необходимо выполнить следующие действия:
1. Найти и остановить в диспетчере служб службу «Агент сервера 1С:Предприятия 8.3» (для версии 8.3).
2. Открыть редактор системного реестра. Можно воспользоваться командной строкой или инструментом меню Пуск – Выполнить… и командой regedit .
3. В реестре найти ветку:
- Для версии 1С 8.1
- Для версии 1С 8.2
- Для версии 1С 8.3
4. Изменить свойство ImagePath, добавить в конец строки директиву «-debug». Получится следующая строка свойства: «C:\Program Files (x86)\1cv8\8.3.6.2152\bin\ragent.exe» -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d «C:\Program Files (x86)\1cv8\srvinfo» –debug
После этого серверный код 1С можно смело проверять отладчиком и устанавливать точки останова везде, где требуется.