Преобразование выборки в структуру

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

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

Вот как это делал я:

Где значок подчеркивания — это вызов функции по присвоению А = Б.

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

При дальнейшем выполнении программу нужно было перезапускать, потому что у структуры нет, конечно же, метода Следующий. Но дальнейшее в моем случае было и не важно, нужно было просто загнать выполнение в определенную ветку:

Вот такой способ управления выполнением кода!

fixin

Программирую на 1С с 1999 года. В 1С просто Гений. В 2020 году ушел из офиса на вольные хлеба фриланса. Принимаю заказы.

Читайте также:

комментария 4

  1. naf2000:

    Автор конечно знатный велосипедостроитель. В отладчике есть пункт «Установить новое значение в виде выражения», позволяющее не использовать вот это вот: _(…,…)
    Что касается того, что переменная Выборка «испорчена» и дальше работать невозможно — это не так, достаточно сохранять в той же структуре исходню выборк, чтобы потом к ней вернуться:

    Функция СтруктураИзВыборкиДляОтладки(Выборка)

    Результат = Новый Структура;
    Для каждого Колонка Из Выборка.Владелец().Колонки Цикл
    Результат.Вставить(Колонка.Имя);
    КонецЦикла;
    ЗаполнитьЗначенияСвойств(Результат,Выборка);
    Результат.Вставить(«ИсходнаяВыборка»,Выборка);

    Возврат Результат;

    КонецФункц

    • О, это добавлено было в платформу? Спасибо за совет, раньше нельзя было присваивать в отладчике.
      Что касается функции восстановления то да, можно, но мне не нужно было отлаживать следующий виток цикла.

  2. oValeriy:

    // или через строку из таблицы значений используя БСП
    Результат = Неопределено;

    Тз = Запрос.Выполнить().Выгрузить();
    Если Тз.Количество() Тогда
    Результат = ОбщегоНазначения.СтрокаТаблицыЗначенийВСтруктуру(Тз[0]);
    КонецЕсли;

    Возврат Результат;

    • не взлетит. вы заменяете выборку на таблицу значений.
      если бы так можно было сделать, то и проблем бы не было — ведь строка таблицы значений доступна для записи
      А тут секрет в том, чтобы вместо объекта строки выборки (который только на чтение) подсунуть структуру.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *