Просмотр отладочной информации выгрузки результатов запроса и временных таблиц и прочей информации отладки на примере расчёта НДФЛ

15.03.26

Разработка - Запросы

Зачастую из отчётов без глубокого понимания темы иногда бывает трудно понять, что происходит и где проблема. Можно напрямую исследовать записи регистров или отладчиком код изучать, но часто это неоправданно много времени требует и не всегда удобно и наглядно. Часто хотелось бы видеть подробности расчёта в виде выгрузки результатов запросов прямо в пользовательском режиме после запуска расчёта. С помощью с данного расширения на примере расчёта НДФЛ показано, как это можно реализовать, если проблемных сотрудников много и что происходит, вообще непонятно.

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Расширение для просмотра подробностей расчёта на примере расчёта НДФЛ для 3.1.36
.cfe 105,17Kb ver:1.0.0.12
1 2 500 руб. Купить
Расширение для просмотра подробностей расчёта на примере расчёта НДФЛ
.cfe 92,98Kb ver:1.0.0.11
7 2 500 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

Вообще, мне почему-то всегда хотелось галочку в пользовательском режиме типа "Режим выгрузки промежуточных данных расчётов", действующей для текущего сеанса. Тогда можно посмотреть подробности расчёта прямо сразу в пользовательском режиме в соответствующей обработке без всяких излишних манипуляций.

С помощью данного расширения и вставки конструкции кода по помещению во временное хранилище с подробным названием, отражающим местоположение, в интересующие места кода этого можно достаточно быстро добиться. Функция выгрузки данных унифицирована и может принимать различные данные (спасибо leosoft за ценные замечания). Основные табличные данные это выгрузки РезультатовЗапроса, ТаблицыЗначений, МенеджераВременныхТаблиц, остальное пытается сериализовать в JSON или XML и выводить в текстовое поле. Как примеры:

    #Вставка
    Отладка_ВыводОтладочныхДанных.ВыводОтладочныхДанных(РезультатЗапроса,
    "УчётНДФЛРасширенный:СформироватьДоходыНДФЛПоНачислениям:ВыборкаРаспределение");

    Отладка_ВыводОтладочныхДанных.ВыводОтладочныхДанных(Запрос.Текст, 
    "УчётНДФЛ:СформироватьДоходыНДФЛПоНачислениям ТекстЗапроса", Запрос.Параметры);

	Отладка_ВыводОтладочныхДанных.ВыводОтладочныхДанных(Движения, 
    "УчётНДФЛ:СформироватьДоходыНДФЛПоНачислениям Движения", Запрос.Текст);

	Отладка_ВыводОтладочныхДанных.ВыводОтладочныхДанных(Результат.Выгрузить(), 
    "УчётНДФЛ:СформироватьДоходыНДФЛПоНачислениям:СформироватьДоходыНДФЛПоНачислениям()",
    ДатаОперации);
	
    Отладка_ВыводОтладочныхДанных.ВыводОтладочныхДанных(МенеджерВременныхТаблиц, 
    "УчётНДФЛ:СформироватьДоходыНДФЛПоНачислениям:СформироватьДоходыНДФЛПоНачислениям", 
    Организация);
    
    Отладка_ВыводОтладочныхДанных.ВыводОтладочныхДанных(СведенияРегистра, 
    "УчётНДФЛРасширенный:СформироватьДоходыНДФЛПоНачислениям:СведенияРегистра"); 
    #КонецВставки

После запуска расчёта по кнопке Заполнить или другой промежуточные отладочные данные можно изучить с помощью обработки из меню Администрирование - Сервис. Естественно, данное расширение предназначено для использования в копии базы на локальном компьютере, а не на рабочей базе, так как данные выгружаются во всех сеансах работы.

В версии для 3.1.36 доработан вывод результатов запроса, так же отладка включена ещё для расчёта НДФЛ в ведомости на выплату ( например, по кнопке "Обновить налог").

Из-за того, что НДФЛ считается накопительным итогом за весь период работы в базе, любой сбой в старых документах при обновлении или изменении приводит к появлению непонятно откуда взявшихся сумм. А ещё смена в документах территорий выполнения работ и/или подразделений, когда записи минусуют неверные движения и делаются по новым данным ещё и рубли округления, которые туда сюда гоняются алгоритмом округления, да разделение на независимые налоговые базы РК и СН, вычеты, пределы и прочее сильно усложняют поиск ошибок.

Проверено на следующих конфигурациях и релизах:

  • Зарплата и управление персоналом, редакция 3.1, релизы 3.1.36.75, 3.1.36.45, 3.1.35.73, 3.1.35.48, 3.1.34.129

Вступайте в нашу телеграмм-группу Инфостарт

отладка подробности просмотр таблиц запросов выгрузка промежуточных данных

См. также

Инструментарий разработчика Роли и права Запросы СКД Программист Руководитель проекта 1С:Предприятие 8 Платные (руб)

Инструменты для разработчиков 1С 8.3: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.

16500 руб.

02.09.2020    258764    1430    421    

1165

WEB-интеграция Запросы Программист 1С 8.3 Абонемент ($m)

Post1C - это внешняя обработка, которая превращает 1С в полноценный инструмент для тестирования REST API. Всё управление сосредоточено в одном окне: настройка запроса, выполнение, просмотр ответа и генерация кода - без переключения между формами. Аналог Postman, но работающий в привычной среде 1С.

1 стартмани

02.04.2026    2218    68    priem_nv    23    

65

Инструментарий разработчика Запросы Программист 1С 8.3 1С:Библиотека стандартных подсистем Абонемент ($m)

Представляю новую версию подсистемы работы со схемой запроса, которая завершает её эволюцию от библиотеки по работе со схемой запроса до объектной реализации модели запроса 2. Теперь есть выбор между классическим и текучим стилем написанию кода - оба варианта взаимозаменяемы. Ключевое улучшение - использование объектов в качестве источников данных, значений полей и параметров в условиях виртуальных таблиц, а также новые операторы позиционирования в схеме

1 стартмани

29.03.2026    1763    kalyaka    16    

23

Инструментарий разработчика Запросы Программист 1С:Предприятие 8 1С:Зарплата и кадры государственного учреждения 3 1С:Зарплата и Управление Персоналом 3.x Абонемент ($m)

QueryConsole1C — расширение, включающее консоль запросов с поддержкой исполняемых представлений — аналогов виртуальных таблиц, основанных на методах программного интерфейса ЗУП. Оно позволяет выполнять запросы с учётом встроенной бизнес-логики, отлаживать алгоритмы получения данных и автоматически генерировать код на встроенном языке 1С.

1 стартмани

16.05.2025    11230    147    zup_dev    30    

83

Инструментарий разработчика Запросы Программист 1С:Предприятие 8 1С:ERP Управление предприятием 2 Абонемент ($m)

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

2 стартмани

05.03.2025    6524    21    XilDen    12    

29

Обновление 1С Запросы Программист 1С:Предприятие 8 1С:ERP Управление предприятием 2 Абонемент ($m)

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

3 стартмани

06.02.2025    5785    36    XilDen    26    

42

Запросы Программист 1С:Предприятие 8 1C:Бухгалтерия Бесплатно (free)

В статье приведена удобная возможность отладки исполняемого запроса динамического списка.

03.12.2024    13000    artemusII    11    

27
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. leosoft 169 10.11.25 15:19 Сейчас в теме
Я правильно понял - расширение именно для просмотра данных из хранилища?
Также в нем общий модуль написан Отладка_ВыводОтладочныхДанных?

А код куда вставлять? Или прямо в отладчике вводить?

А почему тогда на копии делать?
2. leosoft 169 10.11.25 15:26 Сейчас в теме
Из области фантазий - может расширение уже включает расстановку таких блоков кода в текущей версии ЗУП?
3. lisav 155 10.11.25 17:11 Сейчас в теме
(2) ну по всей конфигурации ставить выгрузку таблиц при включенном флаге только разработчики могут сделать на уровне платформы)))

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

В расширении код уже вставлен на примере исследования алгоритма расчёта НДФЛ - можно по кнопке Рассчитать в Начислении зарплаты или в других документах, где НДФЛ считается, запустить расчёт и посмотреть порядок расчёта с выгрузкой таблиц запросов. Там я код сам добавил, где посчитал нужным, это как пример.

Код вставлять туда, где надо исследовать что происходит.

На копии - потому что не в текущем сеансе, а во всех сеансах таблицы выгружаются, всё тормозить будет...
5. leosoft 169 10.11.25 17:30 Сейчас в теме
(3) Только Вы не написали версию ЗУП для которой настройки сделаны - при расчете или перерасчете НДФЛ у меня выдало ошибку "Недопустимое значение параметра (параметр номер '1') без какой-то трассировки!
6. leosoft 169 10.11.25 18:19 Сейчас в теме
(5) Извиняюсь - не заметил, что версия указана. У меня на 34.129 выдает при перерасчете НДФЛ

Ошибка при вызове метода контекста (ПолучитьИзВременногоХранилища)
{ПодробныйРасчетОтладка ОбщийМодуль.Отладка_ВыводОтладочныхДанных.Модуль(54)}:МассивСтруктурОтладочныхДанных = ПолучитьИзВременногоХранилища(АдресМассиваСтруктурОтладочныхДанныхСтрока);
{ПодробныйРасчетОтладка ОбщийМодуль.Отладка_ВыводОтладочныхДанных.Модуль(10)}:ПоместитьВМассивСтруктур(ДанныеОповещения);
{ПодробныйРасчетОтладка ОбщийМодуль.УчетНДФЛ.Модуль(4327)}:Отладка_ВыводОтладочныхДанных.ПоместитьСообщитьОТаблице(Результат.Выгрузить(), "УчётНДФЛ:СформироватьДоходыНДФЛПоНачислениям:СформироватьДоходыНДФЛПоНачислениям()");
{ПодробныйРасчетОтладка ОбщийМодуль.УчетНДФЛРасширенный.Модуль(109)}:УчетНДФЛ.СформироватьДоходыНДФЛПоНачислениям(Движения, Отказ, Организация, ДатаОперации, ДатаВыплаты, МенеджерВременныхТаблиц, МесяцНачисления, Записывать, ОкончательныйРасчет, ИмяВТНачисления, ИсключаемыйРегистратор, МенеджерКадровогоУчета, ДоходПолученНаТерриторииРФ);
{Обработка.МенеджерРасчетаЗарплаты.МодульОбъекта(14655)}:МенеджерКадровогоУчета(),
{Обработка.МенеджерРасчетаЗарплаты.МодульОбъекта(14557)}:СформироватьДоходыНДФЛПоНачислениям(Начисления, ДатаОперации);
{ПодробныйРасчетОтладка Обработка.МенеджерРасчетаЗарплаты.МодульОбъекта(19)}:СформироватьДоходыНДФЛ(Начисления, ДоговорыПодряда);
{Обработка.МенеджерРасчетаЗарплаты.МодульОбъекта(10323)}:РассчитатьНДФЛ();
{Обработка.МенеджерРасчетаЗарплаты.МодульОбъекта(721)}:РассчитатьЗарплатуСлужебный();
{ОбщийМодуль.РасчетЗарплатыРасширенный.Модуль(2738)}:МенеджерРасчета.РассчитатьЗарплату();
{Документ.НачислениеЗарплаты.Форма.ФормаДокумента.Форма(4505)}:РасчетЗарплатыРасширенный.ПодготовитьДанныеДляПерезаполнения(СтруктураПараметров, АдресХранилища);
{Документ.НачислениеЗарплаты.Форма.ФормаДокумента.Форма(4437)}:Результат = ПересчитатьСотрудникаНаСервере(СтруктураПараметров, УникальныйИдентификатор, СохранятьИсправления, АдресаРаспределения, АдресРаспределенияПоТерриториямУсловиямТруда);
{ОбщийМодуль.РасчетЗарплатыРасширенныйКлиент.Модуль(542)}:Форма.ПересчитатьСотрудника(ИмяТаблицы, ИдентификаторыСтрок, ВедущееПоле, ТипВедущегоПоля);
{Документ.НачислениеЗарплаты.Форма.ФормаДокумента.Форма(3004)}:РасчетЗарплатыРасширенныйКлиент.ПересчитатьСотрудника(ЭтаФорма, "Начисления", "Сотрудник", Тип("СправочникСсылка.Сотрудники"));

[ОшибкаВоВремяВыполненияВстроенногоЯзыка]
по причине:
Недопустимое значение параметра (параметр номер '1')
[ОшибкаИспользованияВстроенногоЯзыка]
7. leosoft 169 10.11.25 18:28 Сейчас в теме
(6) АдресМассиваСтруктур берет из константы Отладка_АдресМассива - а там пустая строка!?
8. leosoft 169 10.11.25 18:44 Сейчас в теме
(7) Подправил ошибку - при просмотре информации когда значение пустое неплохо бы очищать правую табличку, тогда и сообщение не надо писать "Значение пустое"

А так в целом неплохая идея и реализация!
9. lisav 155 10.11.25 19:08 Сейчас в теме
(7) я вроде делал, что если сначала сделать расчёт, а потом открыть обработку или наоборот - должен инициализироваться пустой массив и адрес записаться в ту константу, но видно где-то похожий момент пропустил. Спасибо за комментарии.
10. leosoft 169 10.11.25 19:37 Сейчас в теме
(9) При старте там пустая ссылка и сразу попытка получить данные - далее вылет...
11. leosoft 169 11.11.25 10:36 Сейчас в теме
(9) Еще вопрос или пожелание

- нельзя ли сделать одну функцию ВыводОтладочныхДанных и по входящему параметру определять тип данных? Тогда при расстановке точек отладки не надо будет разные функции писать.

- может имеет смысл расширить типы отладочных данных, например, параметрами запросов или любыми переменными типа структура, соответствие и т.п. Понятно, что структура может быть очень сложной для показа, но хотя бы простейший вариант.
12. lisav 155 11.11.25 11:31 Сейчас в теме
(11) да можно попробовать так сделать, удобство важная штука, спасибо за идею.
А если тип непонятный, то пытаться сериализовать в JSON )))
4. leosoft 169 10.11.25 17:23 Сейчас в теме
Все понял, буду изучать что получится!
13. leosoft 169 14.11.25 18:34 Сейчас в теме
Для отправки сообщения требуется регистрация/авторизация