Переход с платформы 1С:Предприятие 8.2 на 8.3 принес множество изменений в архитектуру приложения. Одно из самых заметных для разработчика — это разделение контекста на клиентский и серверный в управляемом приложении. Если раньше в «Толстом клиенте» мы могли легко вызвать метод ВыбратьСтроку() прямо в коде, чтобы визуально проверить содержимое переменной ТаблицаЗначений, то в 1С 8.3 этот метод на сервере не поддерживается, так как он пытается вызвать диалоговое окно, что недопустимо в серверном коде.
В этой статье мы подробно разберем, какими инструментами сегодня пользуются разработчики, чтобы увидеть, какие данные попали в таблицу после выполнения запроса или программных манипуляций.
Самый быстрый и правильный способ посмотреть данные — это встроенные средства отладки. Давайте проанализируем последовательность действий, которую необходимо выполнить:
Запрос.Выполнить().Выгрузить()). Нажмем F9, чтобы установить маркер остановки.ТаблицаРезультата) и нажмем «Рассчитать».На этом этапе многие новички сталкиваются с проблемой: в строке результата отображается просто тип ТаблицаЗначений, а самих данных не видно. Рассмотрим решение: необходимо нажать кнопку «Показать значения в отдельном окне» (выглядит как лупа или нажать F2). Откроется полноценное окно со всеми колонками и строками таблицы, где можно просмотреть содержимое всех ячеек.
Часто бывает так, что при попытке отладки точка останова просто не срабатывает. Разберем причину этой ситуации. В 1С 8.3 код чаще всего выполняется на сервере. Чтобы отладчик «видел» серверный контекст, должны быть соблюдены два условия:
-debug в строке запуска службы или соответствующие настройки в реестре/конфигурационном файле).Если серверный режим включен, вы сможете просматривать ТаблицаЗначений так же легко, как и в обычном приложении. Помните, что ТаблицаЗначений — это объект, который живет только на сервере (за исключением толстого клиента). На клиенте в управляемых формах вместо нее используются ДанныеФормыКоллекция.
Иногда данных в таблице слишком много (десятки тысяч строк), и стандартное окно отладки может работать медленно или ограничивать просмотр. В таком случае мы можем временно добавить в код фрагмент, который выведет таблицу в отдельное окно 1С в виде табличного документа. Выясним, как это реализовать:
ТабДок = Новый ТабличныйДокумент;
// Здесь мы могли бы написать цикл обхода колонок и строк
// Но для быстрой отладки можно воспользоваться выгрузкой
Построить = Новый ПостроительОтчета;
Построить.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТаблицаРезультата);
Построить.Вывести(ТабДок);
ТабДок.Показать("Проверка данных ТЗ");
Этот метод хорош тем, что в открывшемся окне ТабличныйДокумент вы можете использовать стандартный поиск (Ctrl+F), копировать данные в Excel или сохранять их для дальнейшего анализа. Обратите внимание: метод Показать() работает только на стороне клиента. Если ваш код выполняется на сервере, вам придется передать ТабДок на клиент или использовать отладчик.
Если вы работаете в современной типовой конфигурации (УТ 11, БП 3.0, ERP), то в вашем распоряжении есть мощный инструмент — Библиотека стандартных подсистем (БСП). В ней часто присутствуют общие модули для разработчиков. Например, можно попробовать вычислить в окне отладки следующее выражение:
ОбщегоНазначения.СообщитьПользователю(ЗначениеВСтрокуВнутр(ТаблицаРезультата));
Хотя чтение внутреннего формата 1С — сомнительное удовольствие, иногда это помогает быстро увидеть структуру данных без открытия дополнительных окон. Также в БСП бывают процедуры типа ОбщегоНазначения.ВывестиТаблицуЗначенийВЖурналРегистрации() или специализированные обработки для просмотра коллекций.
Проанализируем сложную ситуацию: ваша таблица заполняется внутри фонового задания. В этом случае обычная точка останова не сработает, даже если отладка на сервере включена. Чтобы «поймать» таблицу значений в фоновом задании, выполните следующие шаги:
Многие опытные программисты используют сторонние инструменты, такие как «Консоль запросов с возможностью отладки». Рассмотрим принцип их работы: вы вставляете в нужное место кода вызов внешней обработки, передаете туда свою ТаблицаЗначений, и обработка открывает удобное окно с фильтрами, сортировками и итогами по колонкам. Это значительно экономит время при анализе сложных выборок.
Подведем итог: несмотря на отсутствие старого доброго метода ВыбратьСтроку(), современная платформа предоставляет гораздо более мощные инструменты анализа. Основным инструментом остается точка останова + Shift+F9 + F2. Этого достаточно в 90% случаев для быстрой и эффективной разработки.