Переход платформы «1С:Предприятие» с обычных форм на управляемые (УФ) принес разработчикам множество преимуществ, но вместе с тем и добавил головной боли. Одним из наиболее острых вопросов стала удобная отладка запросов. Легендарная консоль от Павла Чистова, отлично работавшая в режиме обычного приложения, оказалась неприменима в тонком клиенте. Стандартные решения от фирмы 1С часто не удовлетворяют современным требованиям по скорости, удобству и функционалу.
В этой статье мы подробно проанализируем лучшие инструменты для работы с запросами в управляемом интерфейсе, разберем их ключевые возможности, рассмотрим технические нюансы интеграции и научимся обходить распространенные ошибки контекста выполнения.
---
Прежде чем перейти к обзору конкретных инструментов, выясним причину, почему многие мощные консоли выдают ошибки или медленно работают в управляемом приложении. Ключевая проблема кроется в разделении контекста выполнения на клиент и сервер, а также в особенностях компиляции модулей.
Часто при запуске внешних обработок в режиме управляемого приложения разработчики сталкиваются с лавиной ошибок компиляции модулей менеджера (например, Процедура или функция с указанным именем не определена). Это происходит из-за того, что авторы типовых конфигураций не всегда заботятся о поддержке работы модулей менеджеров в клиентском контексте толстого клиента управляемого приложения.
Чтобы избежать подобных ошибок при разработке и отладке конфигураций, рекомендуется следовать строгим стандартам разработки 1С. Разберем по шагам, как локализовать проблемный код в модуле менеджера объекта метаданных с помощью инструкций препроцессора:
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
// Данный код будет компилироваться только на сервере или в толстом клиенте.
// Он не вызовет ошибок при старте управляемого приложения на тонком клиенте.
Процедура СформироватьСтрокуИзМассиваПодстрок(Массив, Разделитель) Экспорт
// Реализация функции формирования строки
КонецПроцедуры
#КонецЕсли
Использование таких директив позволяет полностью исключить клиентский контекст там, где он не нужен, и обеспечивает стабильную работу любых внешних инструментов разработчика.
---
По мнению большинства практикующих специалистов, этот программный комплекс является самым мощным «комбайном» для платформы 1С. В его состав входит продвинутая консоль запросов, функционал которой превосходит стандартный конструктор платформы.
Основные возможности консоли ИР:
Долгое время основным ограничением «Инструментов разработчика» было требование запуска исключительно в толстом клиенте (обычное приложение). Однако создатель проекта нашел элегантные пути решения этой проблемы, разработав альтернативные варианты поставки:
---
Это профессиональное коммерческое решение, которое выросло из популярной бесплатной разработки. На сегодняшний день оно представляет собой полноценную среду разработки внутри «1С:Предприятия».
Рассмотрим подробнее преимущества этого инструмента:
---
Если вам требуется не просто написать запрос, но и оперативно преобразовать данные, выполнить импорт или сопоставление таблиц, проанализируем возможности инструмента Data Commander. Это универсальное рабочее место для администраторов и разработчиков 1С.
Его отличительные особенности:
---
Для тех, кто предпочитает бесплатные инструменты с открытым исходным кодом, оптимальным выбором станет проект «Консоль запросов 9000», активно развивающийся на GitHub.
Разберем, почему этот инструмент завоевал популярность в сообществе:
---
Иногда для решения быстрой задачи в рабочей базе не обязательно скачивать тяжелые внешние обработки. Мы можем воспользоваться встроенными механизмами Библиотеки Стандартных Подсистем (БСП). Например, обработка «Групповое изменение реквизитов» позволяет выполнять произвольный код над выборкой данных.
Посмотрим на практический пример использования этого механизма. Допустим, нам необходимо массово изменить комментарии в отобранных документах. В поле произвольного алгоритма мы пишем следующий код:
// Доступные переменные:
// Объект - обрабатываемый объект информационной базы
Если Не ЗначениеЗаполнено(Объект.Комментарий) Тогда
Объект.Комментарий = "Документ проверен администратором в автоматическом режиме.";
Объект.Записать();
КонецЕсли;
Этот простой способ позволяет избежать написания полноценной внешней обработки, когда требуется быстро скорректировать данные по сложному отбору в пользовательском режиме.