[ Разбор вопросов ] Нюансы работы с консолью запросов и пользовательскими настройками компоновки данных

В процессе обучения на курсах по запросам 1С и механизму СКД Вы обязательно познакомитесь с интересными вспомогательными инструментами (от консоли запросов до редактора хранилищ настроек), которые значительно облегчат ваш нелегкий труд разработчика 1С :)

Вопрос №1: Почему при использовании консоли запросов с сайта ИТС может возникать ошибка “Метод объекта не обнаружен”?

Подскажите, почему возникает такая ошибка?

Ошиба в консоли запроса

(нажмите, чтобы увеличить картинку)

Ответ

Это ошибка в консоли запросов с сайта ИТС. Когда в запросе используются итоги, эта консоль выдает ошибку, как на Вашем скриншоте. Чтобы найти строку с ошибкой, можно в конфигураторе включить остановку по ошибке. Ошибка возникает в функции ВывестиРезультатОдногоЗапроса, которая расположена в модуле обработки.

Проблемная строка: КоличествоСтрок = РезультатЗапроса.Количество();

Переменная РезультатЗапроса имеет тип ДеревоЗначений, у которого нет метода Количество, поэтому и возникает ошибка.

Обработаем эту ситуацию и изменим строку:

Если ТипЗнч(РезультатЗапроса) = Тип("ДеревоЗначений") Тогда
        КоличествоСтрок = РезультатЗапроса.Строки.Количество();
Иначе
        КоличествоСтрок = РезультатЗапроса.Количество();
КонецЕсли;

После этого консоль не будет выдавать ошибки при работе с запросами, содержащими итоги.

Вопрос №2: Почему в управляемом конструкторе запросов не всегда можно открыть отдельный конструктор для написания текста вложенного запроса?

К сожалению, при редактировании произвольного выражения у меня не срабатывает лайфхак с постановкой пробела и открытием отдельного конструктора запроса для написания текста вложенного запроса (см. скриншот). В чём может быть причина? Пробовал консоли запросов для платформы 1С версии 8.2 и 8.3 с сайта its.1c.ru.

 

Ошибка в произвольном выражении

Ответ

Дело в том, что на скриншоте приведен управляемый конструктор запроса, который теперь используется в указанных консолях. Если Вы попробуете открыть конструктор запроса в конфигураторе, то приемом с пробелом получится воспользоваться, так как в конфигураторе используется обычный (не управляемый) конструктор запроса. Таким образом, в управляемом конструкторе запроса недоступен прием, возможный в конфигураторе или в обычном (не управляемом) конструкторе запроса, когда выделяем пробел и при помощи контекстного меню открываем вложенный конструктор запроса.

Также не получится вот в такой ситуации открыть вложенный конструктор запроса:

Конструктор запроса

Возникнет ошибка:

Ошибка

А вот в таком случае (без выделения пробела/текста) вложенный конструктор откроется:

Произвольное выражение

P.S.

Понимать, как работают запросы и уметь их строить - обязательный навык для всех, кто дорабатывает и внедряет 1С.

После курса Вы сможете:

  • Строить сложные запросы с несколькими источниками данных
  • Уверенно задействовать вложенные запросы и временные таблицы
  • Использовать встроенный язык для обработки результатов запроса
  • Учитывать особенности соединений и объединений нескольких таблиц.
  • Разрабатывать запросы на уровне задач Аттестации 1С:Специалист по платформе.
Программа, стоимость, условия и регистрация в группу: «Запросы в 1С 8.3, Базовый курс (с нуля до уровня Специалист по платформе)» Для всех, кто внедряет и дорабатывает 1С.

Вопрос №3: В чем смысл параметра формы КлючНазначенияИспользования?

Не совсем понял, как пользоваться параметром формы КлючНазначенияИспользования.

Для примера добавил в вызов отчета соответствующий ключ структуры:

ПараметрыФормы = Новый Структура("СформироватьПриОткрытии, Отбор, КлючНазначенияИспользования ", Истина, Отбор, "ИзСписка");

Затем в быстрых настройках установил значение отбора. Однако, вопреки моим ожиданиям, это же значение отбора восстанавливается и в случае открытия отчета не из формы справочника товаров, когда значение ключа назначения пустое. То есть разделения не произошло. Почему?

Также прошу прояснить момент: КлючНазначенияИспользования – это параметр или свойство?

Ответ

  1. Сделал пример – КлючНазначенияИспользования.zip.

Это конфигурация, созданная с нуля. В ней добавлен документ, в пользовательском режиме созданы 2 документа. Также в конфигурации реализован отчет по этим документам. В настройках компоновки отчета отбор вынесен в быстрые настройки:

Быстрые настройки

Для документа реализованы две команды, открываемые из панели навигации формы документа.

Команда1:

&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
   
    ПараметрыФормыОтчета = Новый Структура;
    ПараметрыФормыОтчета.Вставить("КлючВарианта", "Основной");
    ПараметрыФормыОтчета.Вставить("КлючНазначенияИспользования", "Документ1");
    ПараметрыФормыОтчета.Вставить("СформироватьПриОткрытии", Истина);
   
    ОткрытьФорму("Отчет.Отчет1.Форма",
        ПараметрыФормыОтчета,
        ПараметрыВыполненияКоманды.Источник,
        ПараметрыВыполненияКоманды.Уникальность,
        ПараметрыВыполненияКоманды.Окно);
   
КонецПроцедуры

Команда2:

&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
   
    ПараметрыФормыОтчета = Новый Структура;
    ПараметрыФормыОтчета.Вставить("КлючВарианта", "Основной");
    ПараметрыФормыОтчета.Вставить("КлючНазначенияИспользования", "Документ2");
    ПараметрыФормыОтчета.Вставить("СформироватьПриОткрытии", Истина);
   
    ОткрытьФорму("Отчет.Отчет1.Форма",
        ПараметрыФормыОтчета,
        ПараметрыВыполненияКоманды.Источник,
        ПараметрыВыполненияКоманды.Уникальность,
        ПараметрыВыполненияКоманды.Окно);
   
КонецПроцедуры

Команды отличаются только значением параметра КлючНазначенияИспользования.

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

Затем воспользуемся Командой2, в быстрых пользовательских настройках установим отбор по Документу с номером 000000002, сформируем отчет, закроем форму. И здесь при повторном обращении к команде сохраненные пользовательские настройки восстанавливаются.

Если попробуем открыть отчет из командного интерфейса, то отбор не заполнен. Всё корректно.

Теперь посмотрим, что сохранено в системном хранилище настроек. Воспользуемся механизмом ИР – Редактор хранилищ настроек. К нашему отчету относятся следующие сохраненные настройки:

Настройки

Строка имеет формат:

Отчет.ИмяОтчета/КлючВарианта/КлючНазначенияИспользования/ТекущиеПользовательскиеНастройки

Тип сохраняемого значения – ПользовательскиеНастройкиКомпоновкиДанных.

Так что здесь платформа ведет себя ожидаемо.

  1. Есть и свойство формы КлючНазначенияИспользования, и параметр формы КлючНазначенияИспользования. В программном коде выше мы передаем значение в параметр открываемой формы. Согласно Синтакс-помощнику при создании формы свойство формы КлючНазначенияИспользования заполняется на основе одноименного параметра формы.
Это пример разобранного вопроса из Мастер-группы курса
Профессиональная разработка отчетов в 1С 8.3 на СКД.

Описание курса и примеры видео

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

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

Вход на сайт

Зарегистрироваться

Подтверждение регистрации будет отправлено на указанный e-mail.

Я подтверждаю, что ознакомлен(а) с Пользовательским соглашением, принимаю его условия и даю свое согласие на обработку моих персональных данных.

Восстановить доступ

E-mail или логин

Ссылка на создание нового пароля будет отправлена на указанный e-mail.