[ Разбор вопросов ] Нюансы настроек компоновки динамического списка, индексирования временных таблиц и сохранения встроенных отчетов как внешних

Следующая группа вопросов подобрана из Мастер-групп курсов серии “must have” – это курсы по СКД, запросам и расширениям. Слушатели еще долгое время после прохождения обучения пользуются методическими материалами данных курсов как шпаргалками.

Итак, если хотите узнать, почему в 1С:БП не получается открыть встроенный отчет как внешний, есть ли смысл задавать настройки компоновки для динамического списка и при каких условиях нужно индексировать временные таблицы, то ознакомьтесь с сегодняшней подборкой. Приятного прочтения!

 

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

Если для динамических списков используется СКД, то значит ли это, что запрос динамического списка тоже будет преобразован при выполнении? Имеет ли смысл для динамического списка использовать расширение языка запросов (на закладке “Компоновка данных” конструктора запросов)?

Ответ

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

В одном из занятий курса по СКД мы рассматриваем, как получить исполняемые настройки компоновки для динамического списка.

  1. Да, может использоваться.

Например, в типовой конфигурации 1С:БП в форме списка справочника “Контрагенты” используется динамический список с запросом:

  ВЫБРАТЬ
    ...
    ВЫБОР
        КОГДА (СправочникКонтрагенты.ИННВведенКорректно
                    И СправочникКонтрагенты.КППВведенКорректно
                ИЛИ СправочникКонтрагенты.ИННВведенКорректно
                    И СправочникКонтрагенты.ЮридическоеФизическоеЛицо = ЗНАЧЕНИЕ(Перечисление.ЮридическоеФизическоеЛицо.ФизическоеЛицо))
                И СостоянияКонтрагентов.Состояние В (&Состояния)
            ТОГДА ИСТИНА
        ИНАЧЕ ЛОЖЬ
    КОНЕЦ КАК ПроверкаКонтрагентовКонтрагентНеСуществует,
    СостоянияКонтрагентов.Состояние КАК ПроверкаКонтрагентовСостояние,
    ВЫБОР
        КОГДА СостоянияКонтрагентовБЭД.Состояние = ЗНАЧЕНИЕ(Перечисление.СостоянияКонтрагентаБЭД.Подключен)
            ТОГДА 1
        КОГДА СостоянияКонтрагентовБЭД.Состояние = ЗНАЧЕНИЕ(Перечисление.СостоянияКонтрагентаБЭД.НастроенЭДО)
            ТОГДА 2
        ИНАЧЕ 0
    КОНЕЦ КАК ЭДО
ИЗ
    Справочник.Контрагенты КАК СправочникКонтрагенты
        {ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НаличиеДублейУКонтрагентов КАК НаличиеДублейУКонтрагентов
        ПО СправочникКонтрагенты.Ссылка = НаличиеДублейУКонтрагентов.Контрагент
            И СправочникКонтрагенты.ИНН = НаличиеДублейУКонтрагентов.ИНН
            И СправочникКонтрагенты.КПП = НаличиеДублейУКонтрагентов.КПП}
        {ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостоянияКонтрагентов КАК СостоянияКонтрагентов
        ПО СправочникКонтрагенты.Ссылка = СостоянияКонтрагентов.Контрагент
            И (&ИспользованиеПроверкиВозможно)}
        {ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостоянияКонтрагентовБЭД КАК СостоянияКонтрагентовБЭД
        ПО СправочникКонтрагенты.Ссылка = СостоянияКонтрагентовБЭД.Контрагент}

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

Это пример разобранного вопроса из Мастер-группы курса
Профессиональная разработка отчетов в 1С 8.3 на СКД.

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

 

Вопрос №2: При каких условиях необходимо индексировать временные таблицы?

Хотел бы задать вопрос про индексирование временных таблиц. Рекомендуется индексировать те поля, которые участвуют в условиях отбора или условиях соединения, но в тоже время нельзя бездумно использовать индекс. В связи с этим вопрос: при каком примерном количестве строк нужно индексировать ВТ (временная таблица)? Имеет ли смысл индексировать, если в ВТ будет до 100 строк? Где-то попадалась рекомендация, что нужно индексировать при наличии от 1000 строк.

Ответ

Этот вопрос рассмотрен в статье на нашем сайте – 3 главных вопроса про временные таблицы 1С.

В общем случае рекомендацию можно сформулировать следующим образом – индексирование временной таблицы нужно использовать тогда, когда это дает эффект. Если же индекс не будет использоваться СУБД или наоборот – на индексирование будет потрачено дополнительное время, то индексирование таблицы будет неэффективно. Способ проверки, будет ли использоваться индекс в конкретной ситуации, также приведен в указанной статье.

P.S.

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

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

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

 

Вопрос №3: Почему сохраненный типовой отчет 1C:БП не открывается как внешний?

Помогите решить следующую проблему – клиент попросил доработать типовой отчет в  типовом решении 1С:БП 3.0, конфигурация на поддержке. Было принято решение сделать отчет внешним, но столкнулся с проблемой. Когда сохраняю отчет как внешний и пытаюсь открыть его через Файл -> Открыть, то появляется ошибка “неизвестный тип объекта метаданных, ВнешнийОтчет.ЗадолженностьПокупателейПоСрокамДолга“. Как победить эту ошибку? В 1С:УТ ред. 11.4 таких проблем не возникает.

Ответ

Причина ошибки заключается в том, что у внешнего отчета или обработки в принципе нет модуля менеджера. А у отчета или обработки из конфигурации такой модуль присутствует.

В 1С:БП в модуле менеджера отчетов есть программный код, а в 1C:УТ – нет. Этим объясняется разница в поведении конфигураций.

При сохранении отчета или обработки во внешний файл модуль менеджера будет потерян. Поэтому нужно учесть этот момент, доработать внешний отчет, например, добавив нужные процедуры в модуль объекта.

Альтернативный вариант – создать расширение, в котором реализовать новый отчет, модуль менеджера в таком случае будет доступен.

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

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

Вход на сайт

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

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

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

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

E-mail или логин

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