Когда –то давно, лет 7-8 назад, веб-разработчики, работающие с Битриксом, использовали простую быстро разворачиваемую веб-среду Денвер (http://www.denwer.ru/ ) для отладки своих сайтов. Эта среда включала в себя программу, которая автоматически разворачивала и настраивала связку необходимых для работы сайта на Битриксе компонентов Php (язык программирования), Apach (веб сервер), MySQL (база данных), также входящих в состав Денвера. Вещь, в общем-то, полезная и для человека, не сильно разбирающегося в администрировании, Денвер экономил кучу сил и времени. Нынче Битрикс заматерел и поставляет для тех, кто пользуется его продуктами, бесплатно целую 1С-Битрикс: Виртуальную машину (http://www.1c-bitrix.ru/products/vmbitrix/index.php), которую можно развернуть на сервере и использовать как для отладки сайтов, так и для работы в боевом режиме. Эта виртуальная машина включает в себя не только привычную связку Php, Apach, MySQL, но и уже полностью сконфигурированную под работу сайта ОС Linux, почтовый сервер и много других полезных для web компонент.
Карманный Fresh
На последнем партнерском семинаре 1С разработчики Fresh объявили, что у них теперь тоже есть свой карманный Fresh – тестовая среда для разработчиков конфигураций, отчетов, обработок, расширений под Fresh. И это здорово, так как Fresh, по сути, родня сайтам и веб-приложениям и, конечно же, кроме обычной платформы требует настройки и разворачивания большого количества дополнительного программного обеспечения. Реализован карманный Fresh также, как и у Битрикса, в виде шаблона виртуальной машины, которую можно развернуть на сервере. Шаблон виртуальной машины можно создать при помощи скриптов, входящих в поставку карманного Fresh. В принципе под Линукс в поставке карманного Fresh есть уже готовый шаблон, включающий в себя:
- Системные компоненты
- Операционная система GNU/Linux Ubuntu 14.04 LTS
- СУБД PostgreSQL 9.4
- Веб-серверы Apache 2.2, Apache TomCat 7, nginx
- Платформа «1С:Предприятие» версии 8.3.8
- Компоненты Технологии Fresh
- «Менеджер Сервиса», «Управление Службой поддержки»
- Демонстрационная база «Библиотеки Технологий сервиса»
- Типовой сайт 1cFresh
Рекомендуемые аппаратные требования к работе виртуальной машины, развернутой по этому шаблону: 4 ядра CPU, 4 Gb RAM, 10+ Gb HDD.
Но чтобы можно было прописать использование на тестовом стенде типовой конфигурации или своей собственной, нужно вносить изменения в скрипты, создающие виртуальную машину, а значит и созданная VM будет отличаться от преднастроенной, идущей в поставке по умолчанию.
Несмотря на то, что в поставку карманного Fresh входит платформа, лицензии для работы этого счастья надо приобретать отдельно. Причем годятся только аппаратные лицензии, так как при любом пересоздании программные лицензии, активированные внутри виртуальной машины, просто пропадут. Для работы тестового стенда нужно 2 аппаратных ключа: серверный и клиентский (или сетевой).
Как работает карманный Fresh
Услышав этот доклад, я загорелась идеей посмотреть на вернисаже, как все это работает. В основном хотелось понять, что представляет из себя настройка, установка и сам Fresh изнутри, тем более, что обещали это показать всего за 10 минут.
На вернисаже выяснилось, что заявленной виртуальной машины под Windows на самом деле не существует, так как положить внутрь все необходимые компоненты от Microsoft не представляется возможным вследствие лицензионных ограничений. Поэтому все необходимые компоненты нужно установить на компьютер заранее. Надо сказать, что под Linux на машине, на которой производили демонстрацию карманного Fresh, все необходимое было уже установлено: сервер базы данных, веб сервер. Как объяснил системный архитектор фирмы 1С Никита Зайцев, для ускорения показа.
Показ, действительно, произошел очень быстро, в линуксовой консоли за пару минут промелькнули малопонятные простому смертному строчки. Мое любопытство этим не было удовлетворено, и я попросила показать, как можно отлаживать конфигурацию, встроенную в испытательную виртуальную машину. Зайцев немного упирался, пытаясь мне объяснить, что такое разделители областей и политика конфиденциальности для клиентов Fresh. Но потом запустил конфигуратор и подключил отладку созданной в испытательном стенде базы. Все это очень хорошо и красиво смотрелось, отладчик бойко бегал по строчкам обработчика открываемой формы, и мне в какой-то момент стало казаться, что это вовсе не база, которая крутится на виртуальной машине под Linux, а просто самая обычная файловая база отлаживается.
Чтобы развеять набежавшие сомнения, я попросила Зайцева доказать, что все это не специально подготовленный монтаж, а действительно работает. Он сначала обиделся, и сказал, что я тут вообще не одна, а потом подумал, зашел в свою линуксовую консоль и показал мне как выглядит запись о том, что работает агент сервера, и потом эту запись убил. Конфигуратор, в котором шел процесс отладки, моментально выдал ошибку, мираж развеялся.
Значительно позже после этой демонстрации я наткнулась на сообщение, что в платформе еще в версии 8.3.7 появился новый вид отладки: отладка по протоколу http (https://wonderland.v8.1c.ru/blog/novyy-mekhanizm-otladki/ ). Зайцеву не нужно было ронять сервер, надо было просто объяснить мне как эта отладка работает.
Изобретена отладка по http была, в основном, как раз для разработчиков Fresh и мобильных приложений. Потому что без этих средств они отлаживаться вообще никак не могут.
Отладка 1С по протоколу http
Отладка по http в 1С сообществе для обычных разработчиков горячо обсуждается. Дело в том, что конфигуратор с отладчиком не подключается напрямую к отлаживаемой базе, а они взаимодействуют друг с другом через специальный отладочный сервер по протоколу http. Кто-то говорит, что http – это надстройка над тем же самым протоколом TCP, по которому работает обычный отладчик, поэтому никаких преимуществ для подключения у него нет, а дополнительный сервер только замедляет работу отладчика.
Но мне лично вспоминаются часы, проведенные на проекте СТС, в ожидании вожделенного конфигуратора рабочей базы или супер свежей тестовой. Отладка через промежуточный сервер позволяет подключаться к предмету отладки из любого конфигуратора с идентичной конфигурацией, просто запустив еще один клиентский сеанс, разрешив в нем отладку по протоколу http, и указав соответствующий отладочный сервер.
Настройка работы отладчика по протоколу http в 1С оказалась несложной. В файловом варианте сделала это минут за 5.
Чтобы настроить отладку по протоколу http в 1С в конфигураторе нужно выбрать соответствующий протокол и указать, что используется локальный сервер отладки. После этого конфигуратор надо перезапустить, в момент перезапуска конфигуратора стартует и сервер отладки, что немного необычно. Далее надо выяснить адрес этого вновь запущенного сервера отладки и прописать этот адрес в настройках окна клиентского сеанса.
После этого все процедуры стандартны, нужно настроить предметы отладки, и они тут же появятся в окне доступных к подключению. В общем, все как заявлено в документации.
Для клиент серверного варианта чуть сложнее, нужно перезапустить сервер предприятия с ключом
ragent.exe -debug –http
В результате тоже запустятся два сервера – обычный и отладочный. А дальше перенастраивать клиентские окна, так как по умолчанию все работает по варианту старой отладки через протокол TCP.
Интересная фича нового способа отладки – окошко «Локальные переменные», куда автоматически выводятся все значения переменных, объявленные в параметрах и в теле исполняемой под отладчиком процедуры.
И вот действие этого механизма как раз отличается от описанного в документации. Заявлено, что переменные простых типов можно изменять непосредственно в строке. Но это не работает, работает только изменение через контекстное меню «Установить новое значение в виде выражения». Возможно, когда-нибудь доделают, а может навсегда оставят так.
Еще большие споры в сообществе вызывает использование асинхронных вызовов при получении и установке переменных в процессе отладки. С одной стороны это здорово, что конфигуратор не блокируется на 10 минут при получении гигантской таблицы значений, а с другой стороны сложно понять, то ли таблица пуста, то ли она еще просто не догрузилась.
Но рано или поздно споры вокруг полезности нового механизма отладки прекратятся, так как разработчики платформы 1С отключат старую возможность отладки по TCP, и останется только отладка по протоколу http. Поэтому всем нам нужно готовиться и привыкать к использованию нового механизма, чтобы эффективность нашей работы в один прекрасный момент не упала до нуля.