[ Разбор вопросов ] Почему вариант использования параметров компоновки данных в СКД считается гибким и удалится ли автоматически из конфигурации отозванный патч релиза?

К сожалению, многие компании до сих пор используют прикладные решения 1С старого поколения, например, 1С:УПП, а специалисты, их сопровождающие, по-старинке разрабатывают отчеты через построитель отчетов. Это, прямо скажем, прошлый век! Каждый разработчик 1С, уважающий себя и уважающий своих заказчиков, должен в совершенстве владеть механизмом СКД. Только отчеты, построенные на СКД, предоставляют широкие и гибкие возможности для работы пользователей. Нюансам СКД будет посвящен первый вопрос.

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

 

Вопрос №1

Возник вопрос по занятию «Отбор в условиях виртуальной таблицы» в рамках темы «Настройки полей компоновки данных». Почему условие отбора остатков по полям Склад и Товар накладывается на виртуальную таблицу через вкладки “Компоновка данных –> Таблица”, а не напрямую через вкладку “Таблицы и поля” ?

Ответ

Если в самом запросе устанавливается отбор по полям Склад и Товар, то предполагается, что в запросе будут учитываться именно эти отборы всегда:

ВЫБРАТЬ
    ТоварныеЗапасыОстатки.Товар КАК Номенклатура,
    ТоварныеЗапасыОстатки.Склад КАК Склад,
    ТоварныеЗапасыОстатки.КоличествоОстаток КАК КоличествоОстаток
ИЗ
    РегистрНакопления.ТоварныеЗапасы.Остатки(, Склад = &Склад И Товар = &Товар) КАК ТоварныеЗапасыОстатки

То есть будут наложены отборы на равенство по Складу и Товару. При этом

  • пользователь обязательно должен будет использовать отбор по этим полям
  • отбор будет только по равенству (например, использовать вместо равенства «В группе» нельзя)
  • отключить такие отборы нельзя.

Получается достаточно жесткий вариант.

Теперь рассмотрим второй вариант запроса набора данных:

ВЫБРАТЬ
    ТоварныеЗапасыОстатки.Товар КАК Номенклатура,
    ТоварныеЗапасыОстатки.Склад КАК Склад,
    ТоварныеЗапасыОстатки.КоличествоОстаток КАК КоличествоОстаток
{ВЫБРАТЬ
    Номенклатура.*,
    Склад.*,
    КоличествоОстаток}
ИЗ
    РегистрНакопления.ТоварныеЗапасы.Остатки(, {(Склад).*, (Товар).* КАК Номенклатура}) КАК ТоварныеЗапасыОстатки
{ГДЕ
    ТоварныеЗапасыОстатки.КоличествоОстаток}

Здесь мы говорим системе, что если пользователь в настройках компоновки указал отбор по полю Склад или Товар, то такой отбор в тексте запроса нужно поместить в параметры виртуальной таблицы Остатки. При этом пользователь может выбрать вид сравнения для отбора (Равно, Не равно, В группе и т.д.), а может вообще не указывать в настройке никаких отборов. Все это будет работать корректно. Получается, что это не жесткое требование использовать отбор по конкретным значениям, а более гибкий вариант, рекомендация системе – что делать, если пользователь захочет использовать отборы в отчете.

Уточняющий вопрос

Я предполагал, что самый жесткий вариант – это когда условие отбора устанавливается непосредственно в секции ГДЕ. То есть получается по гибкости условий отбора варианты можно расположить примерно так:

  1. Условие отбора в секции ГДЕ – самый жесткий вариант
  2. Условие отбора в параметрах виртуальной таблицы через вкладку “Таблицы и поля” – менее жесткий вариант
  3. Условие отбора в параметрах виртуальной таблицы через вкладку “Компоновка данных” – самый гибкий вариант

Ответ

С этой точки зрения варианты 1 и 2 равнозначны, потому что и тот, и другой – это обязательные отборы. Просто, например, если в запросе используем таблицу справочника, то можем воспользоваться только предложением ГДЕ, поскольку для справочника в принципе не существует виртуальных таблиц. Разница получится только в том, какой запрос сгенерирует платформа и передаст для выполнения в СУБД, насколько он будет являться оптимальным. С точки зрения разработчика и отбор в предложении ГДЕ, и отбор в параметрах виртуальной таблицу – по сути фильтры, предназначенные для уменьшения объема данных, который попадет в результат запроса. И в п. 1, и в п. 2 пользователь при помощи настроек компоновки отчета не может отказаться от использования этих отборов (так как это может исказить логику отчета, которую закладывал разработчик). Поэтому я бы объединил п. 1 и п. 2 как «отборы непосредственно в тексте запроса набора данных». А п. 3 – действительно гибкий вариант.

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

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

 

Вопрос №2

Если патч текущего релиза отозван, то он удалится из конфигурации автоматически или это отслеживается вручную? Флаг “Устанавливать патчи” включен, расписание настроено.

Ответ

При автоматической установке патчей по расписанию система получает с сервера список отозванных исправлений. Отозванные исправления автоматически удаляются из базы.

Это действие выполняется регламентным заданием ПолучениеИУстановкаИсправленийКонфигурации.

ПолучениеИУстановкаИсправленийКонфигурации

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

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

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

Вход на сайт

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

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

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

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

E-mail или логин

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