СКД - использование расширений языка запросов, секция ХАРАКТЕРИСТИКИ

Публикация № 1092772 17.07.19

Приемы и методы разработки - СКД

расширения языка запросов для СКД использование характеристик в запросах

Автоматическое и не автоматическое заполнение полей компоновки данных. Использование расширений языка запросов для СКД «{…}», секция ВЫБРАТЬ, секция ГДЕ, параметры виртуальных таблиц. Автоматизированное использование дополнительных данных в запросе: секция ХАРАКТЕРИСТИКИ.

Предыдущие статьи можно посмотреть по ссылкам ниже:

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

{……}

И так, для чего же необходимы расширения языка запросов?

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

Понимание, и грамотное использование расширений языка запросов позволяет более гибко управлять формированием итогового запроса макета компоновки:

Общая схема расширений языка запросов

Оглавление

  1. Автоматическое заполнение полей компоновки данных
  2. Расширение языка запроса для СКД
  1. Использование дополнительных данных, секция ХАРАКТЕРИСТИКИ

 

Автоматическое заполнение полей компоновки данных

Перед тем, как начинать говорить о расширениях языка запросов, нужно понимать, что означает флаг «Автозаполнение», который расположен на закладке полей компоновки:

Автоматическое заполнение полей копоновки

Если флаг установлен, поля компоновки данных заполняются автоматически для всех полей, указанных на верхнем уровне запроса источника данных (не зависимо от наличия секций с расширениями в тексте запроса).

Также, при установленном флаге, в список полей компоновки попадают все измерения виртуальных таблиц, используемых в запросе. Если измерения не указаны в секции ВЫБРАТЬ в запросе набора данных, они будут доступны только для отбора данных в отчете. Их использование во всех остальных разделах настроек компоновки будет отключено:

Ограничение использования полей

Дополнительно, для виртуальных таблиц, флаг «Автозаполнение» неявно формирует отбор по периоду, создавая стандартные параметры: «Период» для таблиц остатков, «НачалоПериода» и «КонецПериода» для таблиц оборотов. Причем, указание значений этих параметров в настройках компоновки не является обязательным. В итоговый запрос макета компоновки параметры попадут только в том случае, если они заданы в настройках.

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

Если флаг «Автозаполнение» - отключен, автоматического формирования полей компоновки и стандартных параметров виртуальных таблиц по данным запроса источника данных не происходит. Заполнение будет происходить таким образом, как это описано в секциях расширений.

Еще несколько моментов при использовании флага «Автозаполнение»:

  1. Если в запросе источника данных используется виртуальная таблица, и в настройках компоновки добавлен отбор по какому-либо измерению, в итоговом запросе макета, СКД будет накладывать отбор на параметры виртуальных таблиц, если это возможно. Если кроме виртуальных таблиц, в запросе присутствуют и другие таблицы (не виртуальные), в итоговом запросе будет добавлен дополнительный отбор в секции ГДЕ всего запроса. То-есть будет присутствовать два отбора.
  2. Если в наборе данных используется пакет запросов, СКД будет пытаться наложить отбор на все запросы пакета, если это возможно.

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

Происходит это следующим образом. Если в настройках компоновки добавлены только группировки и ресурсы (без детальных записей), в итоговом запросе макета компоновки данные будут сгруппированы по выбранным в настройках группировкам.

 

Расширение языка запроса для СКД

Начнем с того, где именно можно использовать секции с расширениями?

Расширения языка запросов можно использовать в секциях: ВЫБРАТЬ, ГДЕ, ХАРАКТЕРИСТИКИ, и в параметрах виртуальных таблиц.

Также выделить как расширение можно целиком таблицу запроса.

Конструкции, добавленные в расширение в итоговом тексте запроса находятся в фигурных скобках «{…}». Для работы с расширениями в конструкторе запроса существует специальная закладка – «Компоновка данных»:

Закладка "Компановка данных"

Рассмотрим более подробно использование каждой секции.

 

Секция ВЫБРАТЬ­

Настройка выполняется на закладке «Поля» в окне редактирования расширений:

Секция ВЫБРАТЬ расширений языка запросов

Выбранные на этой закладке поля попадут в список полей компоновки, если отключена галка «Автозаполнение». Можно указать, нужно ли включать вложенные реквизиты полей – флаг «Использовать реквизиты». Можно изменить псевдонимы полей, если это необходимо.

Обратите внимание, если в основном запросе уже используются псевдонимы для полей, в расширении отображаются именно они, а не имена самих полей:

Использование псевдонимов для полей в расширении

Если в запросе используется объединение нескольких таблиц, расширение секции ВЫБРАТЬ необходимо задавать только для первой таблицы.

 

Секция ГДЕ

Настройка выполняется на закладке «Условия» в окне редактирования расширений:

Секция ГДЕ в расширении языка запросов

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

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

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

В данной секции, можно сконструировать произвольный отбор с указанием параметров:

ТоварныеЗапасыОстатки.Товар = &Товар

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

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

 

Параметры виртуальных таблиц

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

Параметры виртуальных таблиц в расширении языка запросов

Можно указать следующие параметры: 

  • Период, НачалоПериода, КонецПериода – задается отбор по периоду для виртуальных таблиц.

Если флаг «Автозаполнение» включен, данные параметры будут заполнены автоматически неявно. То-есть, в тексте запроса их нет, но фактически они будут присутствовать. Можно явно указать в качестве этих параметров произвольные имена:

РегистрНакопления.ТоварныеЗапасы.Обороты({(&ДатаНачала)}, {(&ДатаОкончания)}, , ) КАК ТоварныеЗапасыОбороты

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

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

  • Периодичность – можно указать параметр, с помощью которого можно будет задавать периодичность в настройках компоновки. Для параметра будет создан список выбора периода.
  • Метод дополнения – можно указать параметр, для задания в настройках компоновки метода дополнения: «Движения», «Движения и границы периода».
  • Условие – используется для выбора полей, по которым можно будет указывать отбор в настройках компоновки (аналогично секции ГДЕ). Отличие в том, что указанные пользователем отборы, в итоговом запросе макета компоновки будут наложены в параметрах виртуальных таблиц, а не в секции ГДЕ на уровне всего запроса.

 

 

Выделение в расширение отдельных таблиц запроса

Есть возможность выделить в расширение (заключить в фигурные скобки) целиком таблицу запроса источника данных. Выполняются эти действия также на закладке «Таблицы». Для выделения таблицы необходимо убрать флаг «Обязательная» и указать параметр «Номер группы»:

Выделение таблиц целиком в расширение языка запросов

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

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

 

Использование дополнительных данных, секция ХАРАКТЕРИСТИКИ

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

Так вот, значения этих дополнительных реквизитов или сведений можно АВТОМАТИЗИРОВАНО включать в схему компоновки данных. Вы конечно можете сделать это в ручную, добавив нужное количество соединений в запрос источника данных:

ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДополнительныеСвойства КАК ДопСвойства1  
   ПО (ДопСвойства.Номенклатура = Номенклатура.Ссылка    
    И ДопСвойства.ВидСвойства = &Свойство1)  
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДополнительныеСвойства КАК ДопСвойства2  
   ПО (ДопСвойства1.Номенклатура = Номенклатура.Ссылка    
    И ДопСвойства1.ВидСвойства = &Свойство2) 

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

Номенклатура.ДопРеквизит

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

Так вот, для автоматизации использования дополнительных данных (дополнительных реквизитов, сведений и прочей информации) существует специальная закладка конструктора запросов «Характеристики»:

Использование дополнительных данных в запросе

На этой закладке в таблице указывается вся необходимая информация о структуре хранения дополнительных данных. Рассмотрим поля этой таблицы подробнее:

  • Тип – вид объектов метаданных, для которых необходимо выводить характеристики (то-есть, через точку от которого они будут доступны),
  • Источник видов – способ получения видов дополнительных данных (характеристик): отдельная таблица или произвольный запрос (запрос можно использовать, если требуется наложить на таблицу дополнительные отборы),
  • Источник значений – способ получения значений дополнительных данных (характеристик): отдельная таблица или произвольный запрос.

 

Группа полей с описанием видов дополнительных данных (Виды характеристик)

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

 

Группа полей с описанием значений дополнительных данных (Значения характеристик)

  • Поле объекта – ссылка на основной объект, для которого получаются дополнительные данные,
  • Поле вида – ссылка на элемент вида дополнительных данных (в случае с дополнительными реквизитами, это ссылка на элемент плана видов характеристик),
  • Поле значения – значения дополнительных данных.

В случае, если значение поля «Значение характеристик (поле значения)» не указано, тип значения дополнительного реквизита считается «булево». Реквизит будет принимать значение «Истина» в том случае, если в значениях характеристик будет хотя бы одна строка для указанного объекта и вида дополнительных данных. Таким образом настроен вывод в отчеты категорий объектов в конфигурациях: УТ 10.3, УПП.

После заполнения структуры хранения дополнительных данных, система добавит в нижнюю часть запроса секцию ХАРАКТЕРИСТИКИ, следующего вида:

{ХАРАКТЕРИСТИКИ            
  ТИП(ПланВидовХарактеристик.ВидыХарактеристик)            
  ВИДЫХАРАКТЕРИСТИК ПланВидовХарактеристик.ВидыХарактеристик            
  ПОЛЕКЛЮЧА Ссылка            
  ПОЛЕИМЕНИ Наименование            
  ПОЛЕТИПАЗНАЧЕНИЯ ТипЗначения            
  ЗНАЧЕНИЯХАРАКТЕРИСТИК РегистрСведений.Характеристики            
  ПОЛЕОБЪЕКТА Объект            
  ПОЛЕВИДА ВидХарактеристики            
  ПОЛЕЗНАЧЕНИЯ Значение }

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

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

Использование дополнительных характеристик для объектов можно настроить непосредственно в конфигураторе для каждого объекта метаданных:

Настройка использования дополнительных данных для объекта

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

В механизме настроек характеристик для объектов источники видов и значений – это всегда таблицы. Так что нельзя указать запрос с произвольным отборам необходимых видов. Однако, отбор значений все-таки можно указать, заполнив поля: «Поле отборов видов» и «Значение отборов видов»:

Отбор видов характеристик для объектов

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

В следующих статьях рассмотрены следующие темы:

Для ознакомления с предыдущими статьями можно перейти по ссылкам:

Спасибо а внимание.

  

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. YPermitin 12438 17.07.19 07:53 Сейчас в теме
(0) спасибо за полезный материал!
jaroslav.h; ids79; jif; +3 Ответить
6. ids79 7206 17.07.19 21:12 Сейчас в теме
2. lmnlmn 65 17.07.19 10:18 Сейчас в теме
Отличные материалы!
7. ids79 7206 17.07.19 21:13 Сейчас в теме
3. пользователь 17.07.19 11:53
Сообщение было скрыто модератором.
...
4. AllexSoft 17.07.19 12:32 Сейчас в теме
Параметры..
Условие – используется для выбора полей, по которым можно будет указывать отбор в настройках компоновки (аналогично секции ГДЕ). Отличие в том, что указанные пользователем отборы, в итоговом запросе макета компоновки будут наложены в параметрах виртуальных таблиц, а не в секции ГДЕ на уровне всего запроса.

Тут есть один забавный нюанс, а именно если у вас указано больше чем 1 отбора на этой вкладке, то СКД их объединит в одну группу условий, то есть ввод сразу всех параметров станет обязательным.
Например
РегистрСведений.CR_СтатусыОбъектовАренды.СрезПоследних(, {(Контрагент = &Контрагент
			    И Договор = &Договор)})

При попытке задать только один параметр выдаст не задано значение для параметра..
Прикрепленные файлы:
5. dhurricane 17.07.19 20:53 Сейчас в теме
(4) В Вашем примере, полагаю, это запланированное поведение от разработчика. Либо решение "по незнанию". :) Для того, чтобы параметры не зависели друг от друга, необходимо их разделять запятыми:
РегистрСведений.CR_СтатусыОбъектовАренды.СрезПоследних(, {(Контрагент = &Контрагент), (Договор = &Договор)})

Однако и такое решение оставляет желать лучшего, т.к. в этом случае пользователь может указать для отбора лишь одно значение параметра. Но не может, например, ввести список исключаемых контрагентов, либо отобрать по некоторому реквизиту контрагента так, чтобы это условие попало именно в параметры виртуальной таблицы. Поэтому для параметров виртуальных таблиц используется несколько иной синтаксис:
РегистрСведений.CR_СтатусыОбъектовАренды.СрезПоследних(, {(Контрагент).* КАК Контрагент, (Договор).* КАК Договор})
В таком случае пользователь сможет настраивать любой отбор по данным полям, и этот отбор в том же самом виде попадет в параметры виртуальной таблицы.

Все описанное справедливо в первую очередь при снятом флажке Автозаполнения на закладке наборов данных СКД.

Ну и прошу прощения, если я проявил излишнюю прыть, описав то, что Вы и без меня хорошо знали. :)
Yashazz; user847517; Pavl0; kalyaka; jaroslav.h; MaZaHacKa_13; SirStefan; AllexSoft; jif; Поручик; +10 Ответить
9. ids79 7206 17.07.19 21:39 Сейчас в теме
(5) Спасибо за дополнение
11. triviumfan 30 18.07.19 09:07 Сейчас в теме
(5)
справедливо в первую очередь при снятом флаже Автозаполнение

Вы хотите сказать, что с включенным поведение отличается?
13. dhurricane 18.07.19 09:39 Сейчас в теме
(11) Немного отличается, да. Например, я указал, что при использовании параметров не получится указать список исключений контрагенту, либо договору так, чтобы это условие попало в параметры виртуальной таблицы. Только строгое равенство одному значению. Это справедливо, если снят флаг автозаполнения и нет дополнительных инструкций для СКД.
Но при включенном автозаполнении произвольный отбор по данным полям установить можно. И если в отборе на уровне отчета дополнительно установить фильтр по одному из полей на неравенство, то такое условие все равно попадет в параметры виртуальной таблицы. Хоть мы его явное об этом и не просили.
16. ids79 7206 18.07.19 10:46 Сейчас в теме
(13)Да правильно.
Как раз об этом я пишу в статье:
"Еще несколько моментов при использовании флага «Автозаполнение»:
....
Если в запросе источника данных используется виртуальная таблица, и в настройках компоновки добавлен отбор по какому-либо измерению, в итоговом запросе макета, СКД будет накладывать отбор на параметры виртуальных таблиц"
15. AllexSoft 18.07.19 10:23 Сейчас в теме
(5) я кстати не знал что так можно, в то время когда я учился либо такого не было, либо на курсах в УЦ1 по СКД не показывали.. спасибо в общем, век живи век учись. Автору в статье неплохо бы дополнить этим моментом, уверен что многие не знают
17. ids79 7206 18.07.19 10:47 Сейчас в теме
(15)Вы правы, стоит указать об этом в статье. Добавлю, когда будет время
26. Yashazz 4284 12.11.19 00:08 Сейчас в теме
(15) а такого и не было изначально. Для меня тоже стало открытием.
8. ids79 7206 17.07.19 21:38 Сейчас в теме
(4)Спасибо за дополнение.
Я имел в виду не параметры, а отбор:
{(Контрагент).* КАК Контрагент, (Договор).* КАК Договор},
о чем пишет Денис.
Вы правы, параметры тоже можно размещать здесь и в секции "ГДЕ".
И, если они объединены логическим оператором, то их использовать возможно только совместно.
В секции "ГДЕ", такие параметры будут находиться в одной строке:
Прикрепленные файлы:
10. triviumfan 30 18.07.19 09:06 Сейчас в теме
Множество ссылок на "справедливо для отключенного флага 'Автозаполнение'", - но ведь он почти всегда включен и поведение с ним такое же.
Да кто этот флаг вообще отключает?! Может вы просто "не умеете его готовить"?(с)
14. dhurricane 18.07.19 09:46 Сейчас в теме
(10)
Да кто этот флаг вообще отключает?! Может вы просто "не умеете его готовить"?(с)

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

В самом простом случае я его порой отключаю при выборке данных из регистра бухгалтерии, чтобы не было среди доступных полей таких как "Субконто1" и "Субконто2", а были мои, например "Контрагент" и "Договор".

Бывает отключаю для большого пакетного запроса, когда мне хочется лучше контролировать влияние пользовательских отборов на отбор данных в различных запросах пакета, а также на расстановку параметров виртуальных таблиц.
20. triviumfan 30 18.07.19 10:58 Сейчас в теме
(14)
В самом простом случае я его порой отключаю при выборке данных из регистра бухгалтерии, чтобы не было среди доступных полей таких как "Субконто1" и "Субконто2", а были мои, например "Контрагент" и "Договор".

Можно подробней? А то можно подумать...

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

Мне пока фигурных скобок хватает и ограничения поля в параметрах набора данных.
23. dhurricane 19.07.19 09:37 Сейчас в теме
(20) Реальных примеров, к сожалению, привести не могу, т.к. действительно редко использую отключение автозаполнения. Поэтому приведу небольшой синтетический пример для ERP 2.4. Запрос следующий:
ВЫБРАТЬ
	ХозрасчетныйОстатки.Субконто1 КАК Номенклатура,
	ХозрасчетныйОстатки.Субконто2 КАК Склад,
	ХозрасчетныйОстатки.КоличествоОстаток КАК КоличествоБУ,
	0 КАК КоличествоОУ
ПОМЕСТИТЬ СверкаБУиОУ
ИЗ
	РегистрБухгалтерии.Хозрасчетный.Остатки(, Счет В ИЕРАРХИИ (&СчетУчета), &ВидыСубконто, {(Субконто1).* КАК Номенклатура, (Субконто2).* КАК Склад}) КАК ХозрасчетныйОстатки

ОБЪЕДИНИТЬ ВСЕ

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

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	СверкаБУиОУ.Номенклатура КАК Номенклатура,
	СверкаБУиОУ.Склад КАК Склад,
	СУММА(СверкаБУиОУ.КоличествоБУ) КАК КоличествоБУ,
	СУММА(СверкаБУиОУ.КоличествоОУ) КАК КоличествоОУ,
	СУММА(СверкаБУиОУ.КоличествоБУ - СверкаБУиОУ.КоличествоОУ) КАК Отклонение
ИЗ
	СверкаБУиОУ КАК СверкаБУиОУ
{ГДЕ
	СУММА(СверкаБУиОУ.КоличествоБУ) КАК КоличествоБУ,
	СУММА(СверкаБУиОУ.КоличествоОУ) КАК КоличествоОУ,
	СУММА(СверкаБУиОУ.КоличествоБУ - СверкаБУиОУ.КоличествоОУ) КАК Отклонение}

СГРУППИРОВАТЬ ПО
	СверкаБУиОУ.Склад,
	СверкаБУиОУ.Номенклатура
Показать

При включенном автозаполнении на закладке наборов данных мы увидим множество полей, которые доступны для отбора. Все они - измерения используемых виртуальных таблиц: Организация, Субконто3, Характеристика, Серия и т.д. При этом действительно давать возможность пользователю устанавливать отбор по этим полям ни в коем случае нельзя, т.к. это приведет к искажению данных отчета: по Счету мы уже и так отобрали, в регистре оперативного учета нет Организации, а отбор по Субконто3 и вовсе приведет к ошибке формирования отчета. Приходится отключать доступность всех лишних полей для отбора, однако они так и остаются "висеть" на закладке наборов данных. При том лишних может быть действительно очень много, в случае, если запрос содержит множество разнообразных виртуальных таблиц - абсолютно все их измерения попадут в поля набора данных.

Пусть проблема с лишними полями отбора решена, но что если пользователю потребуется установить отбор по ресурсам? Скажем, вывести все строки отчета, где количество БУ отрицательно, либо КоличествоОУ выше некоего порога. Да, мы добавили подсказку для СКД, как нужно устанавливать отбор по полям количества в последний запрос пакета, однако это совсем не помагает: СКД все равно добавит условия по полю количества в первый запрос пакета, при том в каждый элемент объединения. В результате такой отбор опять таки исказит результат. И решить эту проблему простой установкой флажков не получится.
24. triviumfan 30 19.07.19 11:03 Сейчас в теме
(23) Может задать разные превдонимы полей?
25. dhurricane 19.07.19 21:24 Сейчас в теме
(24) Да, можно дать другие псевдонимы, это поможет. Также, например, как помогает в параметрах виртуальных таблиц регистров, где не нужен отбор за период, указание инструкции {&ПустаяДата}. Можно также в приведенном примере попробовать уйти от использования виртуальной таблицы, заменив ее на вложенный запрос. В целом всегда можно применить тот или иной прием, дабы "отвлечь" СКД от некоторых оптимизаций при составлении запроса.

Только я решительно не понимаю: зачем? Зачем применять различные приемы "обмана" СКД, зачем перестраивать исходный текст запроса, переименовывать поля и проводить прочие эксперименты с запросом? Ведь порой проще и красивее самому явно непосредственно в запросе указать СКД, как себя следует вести, что выбирать.

Из Ваших комментариев я сделал вывод, что если есть хоть какой-либо способ изменить запрос и настроить поля так, чтобы сохранить работоспособность отчета, и при этом не снимать флаг "Автозаполнение", то всегда следует сохранять автозаполнение. Так к чему же такая однозначность? За что Вы так не любите этот флаг, или вернее его отсутствие?
18. ids79 7206 18.07.19 10:52 Сейчас в теме
(10)Согласен с Денисом.
Отключать Автозаполнение нужно только в том случае, если Вы ХОРОШО, знаете как это работает, для более гибкой настройки.
Иначе можно получить очень неожиданный результат.
21. triviumfan 30 18.07.19 11:01 Сейчас в теме
(18) Отключить автозаполнение, программное выполнение...
Тогда уже можно вернуться к "построителю отчета" :)
12. DoctorRoza 18.07.19 09:20 Сейчас в теме
19. ids79 7206 18.07.19 10:53 Сейчас в теме
22. sam441 177 18.07.19 15:16 Сейчас в теме
Если флаг установлен, поля компоновки данных заполняются автоматически для всех полей, указанных на верхнем уровне запроса
может все-таки на нижнем т.е. последнем?
27. Yashazz 4284 12.11.19 00:09 Сейчас в теме
Отличная статья, спасибо. Чётко, полезно, грамотно, дельно.
CSiER; ids79; +2 Ответить
28. ids79 7206 12.11.19 10:06 Сейчас в теме
29. Yashazz 4284 17.04.22 08:45 Сейчас в теме
(28) Правда, есть маленькое уточнение: всё это как было, так и остаётся совершенно неприменимым для СКД динамических списков.
Оставьте свое сообщение

См. также

Как просто запомнить алгоритм программного вывода в СКД Промо

СКД v8 v8::СКД Бесплатно (free)

Порой нужно быстро вывести на экран таблицу значений, используя СКД \ получить данные отчета в таблицу значений.. Несмотря на очевидность алгоритма - раньше мне проще было загуглить программный вывод, благо эта инфа есть везде. Но постепенно понял как его можно быстро вспомнить, и лишний раз ничего не искать. Конечно эта статья не для Гуру :) Но я думаю - что любой неопытный в СКД программист сделает для себя небольшое открытие...

01.09.2017    55818    unichkin    19    

Хитрости СКД. Часть 3

СКД Универсальные функции v8 v8::СКД 1cv8.cf Бесплатно (free)

Столкнулся с тем, что мне приходится писать гору отчетов. Во многих приходится использовать повторяющиеся приемы. Решил написать шпаргалку, которая, надеюсь пригодится не только мне. В этой статье: Объединение ячеек в отчете только на определенном уровне иерархии, Постобработка итогов в табличном документе, Скрытие колонок в зависимости от количества месяцев в периоде.

28.05.2022    3364    milkers    11    

КУ! или Нарезка графика продолжается

СКД v8 v8::СКД Россия Бесплатно (free)

Продолжение публикации https://infostart.ru/public/1639182/. Как справиться с неудачным отображением концов графика. Проверено в версии 8.3.13.1644.

23.04.2022    481    AnatolPopov    0    

Нарезка графика ломтями

СКД v8::СКД Россия Бесплатно (free)

Как в СКД простыми средствами улучшить отображение графика, которому слишком тесно на шкале. Проверено в версии 8.3.13.1644.

09.04.2022    656    AnatolPopov    0    

Полезности применения СКД Промо

СКД v8::УФ v8::СКД УТ10 Россия Бесплатно (free)

Нюансы при работе из СКД на программном уровне.

11.04.2012    53259    logarifm    42    

Убираем параметры из отбора СКД

Универсальные функции СКД v8 v8::СКД Бесплатно (free)

Заметка о некоторых технических нюансах параметров данных и отборов СКД.

17.02.2022    3038    Yashazz    28    

Отладка СКД

СКД v8::СКД Бесплатно (free)

На митапе «Практика применения СКД» выступил ведущий разработчик 1С аутсорсинговой компании Programming Store Павел Шемякин. Павел рассказал, как бороться с нежелательной «оптимизацией» запроса СКД, какие инструменты для отладки СКД можно использовать – в чем их отличия и преимущества, и показал, как работать с консолью компоновки данных – на какие элементы структуры XML-файла макета СКД обращать внимание при поиске причин неправильной работы отчета.

08.02.2022    5415    ProfessionStore    2    

Программная работа и компоненты СКД

СКД v8::СКД Бесплатно (free)

На митапе «Практика применения СКД» выступил архитектор Digital Business Петр Базелюк. Он рассказал о том, как работать с СКД программно, и как, используя общедоступную библиотеку FoxyLink, создать свой процессор вывода результата СКД напрямую в формат JSON или в CSV.

04.02.2022    2988    pbazeliuk    3    

СКД программно для обработки (не отчета) + программное восстановление значений полей из настроек для управляемых форм Промо

СКД v8::СКД 1cv8.cf Бесплатно (free)

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

29.01.2014    96806    anig99    26    

Реализация отборов на форме с помощью СКД

СКД v8 v8::СКД 1cv8.cf Бесплатно (free)

В статье описана практическая методика использования системы компоновки данных (СКД) для реализации отборов на любых формах конфигурации.

28.12.2021    5202    quazare    6    

Как указать время в периоде типового отчета (СтандартныйПериод, СКД) в системах класса WMS, MES, SCADA, АСУ ТП на 1С, построить отчет за период с временем?

СКД v8 1cv8.cf Бесплатно (free)

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

13.12.2021    1510    SizovE    0    

Отбор/фильтр в отчетах/СКД/обработках 1C: БП, УТ, ERP, Кронос: WMS по файлу Excel, текстовому файлу или списку текстовых строк (номер документа, артикул, ИНН, QR-код, штрих-код, наименование)

СКД v8 v8::УФ 1cv8.cf Бесплатно (free)

Как построить отчет Анализ продаж или Остатки товаров с отбором/фильтром по списку кодов товаров/артикулов или ИНН покупателей из Эксель файла? Покажем, какой код нужно добавить в конфигурацию 1С (в том числе нетиповую), чтобы в любом отчете/отборе СКД/обработке можно было заполнять отбор по excel файлу, текстовому файлу или просто по списку строк - удобно и быстро.

23.11.2021    1620    SizovE    3    

СКД. Вставка разрыва страницы Промо

СКД v8::СКД 1cv8.cf Россия Бесплатно (free)

Столкнувшись с достаточно типовой проблемой при разработке отчетов на системе компоновки данных(СКД), вставка разрыва страницы в конце группировки, на форумах и в документации не нашел простого решения этой задачи. Пост-обработкой табличного документа заниматься не хотелось, хотя совсем этого избежать пока не удалось :) , поэтому было найдено не сложное решение которым я хочу с вами поделиться.

29.10.2011    57964    stoptime    58    

Варианты применения СКД вне отчетов в отраслевых конфигурациях

СКД v8::СКД Бесплатно (free)

Директор и ведущий разработчик компании «Арт Порт» Максим Артеменко выступил на митапе, посвященном практике применения СКД. Максим рассказал о вариантах применения механизма настроек СКД для решения нестандартных задач – визуального оформления, сегментирования данных и автоматического заполнения примечаний к документам.

18.11.2021    2870    drmaxart    0    

Кейсы решения задач на СКД

СКД v8 v8::СКД Бесплатно (free)

Разработчик 1С в компании Neti Александр Крынецкий выступил на Infostart Meetup, посвященном практике работы с СКД. Александр поделился с коллегами кейсами по решению сложных задач при работе с СКД.

08.11.2021    4784    echo77    7    

Грабли на СКД

СКД v8 v8::СКД Россия Бесплатно (free)

Наиболее частые проблемы, с которыми сталкиваются программисты 1С при разработке отчетов на СКД.

02.11.2021    6727    echo77    17    

Создаем отчет с заданной периодичностью на СКД Промо

СКД v8::СКД 1cv8.cf Россия Бесплатно (free)

Учимся создавать отчет с заданной периодичностью с использованием СКД.

16.04.2012    82492    Lyns_owner    38    

СКД: 5 советов, как сделать лучше

СКД v8 v8::СКД 8.3.14 Бесплатно (free)

Несколько примеров решения задач с использованием разных подходов

27.10.2021    7529    Neti    19    

Программное создание отчета на СКД с расшифровкой (обычные формы)

СКД v8::СКД 1cv8.cf Бесплатно (free)

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

04.10.2021    1620    Neti    4    

Программное открытие отчета СКД с параметрами и отбором

СКД v8 v8::УФ v8::СКД Бесплатно (free)

Периодически возникает задача открытия формы отчёта СКД уже со сформированным отчётом, с определёнными параметрами и отборами. В данной публикации рассматриваются способы сделать это как в обычном приложении, так и в управляемом.

07.08.2021    12664    Eugen-S    20    

Объект "Схема запроса" и расширения языка запросов СКД

СКД v8 v8::Запросы Россия Бесплатно (free)

Если использовать объект СхемаЗапроса для модификации текстов запросов, содержащих расширения СКД, то могут возникнуть ошибки времени исполнения. И полученных запрос не будет работать. В статье расскажу, как этого избежать.

18.07.2021    2861    mysm    14    

СКД: скрываем нужные группы (блоки) по требованию пользователя

СКД v8::СКД 1cv8.cf Бесплатно (free)

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

14.07.2021    4378    olja-ljaaa    7    

Изменение расшифровки макета СКД до компоновки

СКД v8 v8::СКД Бесплатно (free)

Это не про работу с данными расшифровки. Это про изменение расшифровок полей ДО того, как СКД выполнилась. Быстрый способ сделать нужные расшифровки.

12.07.2021    2949    Yashazz    6    

Чтоб в СКД по таблице значений был порядок!

СКД v8::СКД Бесплатно (free)

Сортировка СКД и источник - таблица значений. Заметка.

28.06.2021    1924    Yashazz    0    

Учебный пример программного формирования схемы компоновки данных: Универсальный отчет по регистрам накопления

СКД v8 Бесплатно (free)

Разберём учебную задачу создания Универсального отчета по оборотным регистрам накопления конфигурации.

14.06.2021    4282    maraton1185    4    

Формирование отчета СКД с расшифровкой из обработки

СКД v8 v8::СКД 1cv8.cf Бесплатно (free)

Формирование отчета СКД из обработки немного отличается от формирования из отчета.

27.04.2021    4989    John_d    14    

Нестандартное использование СКД

СКД v8::СКД Бесплатно (free)

Программист 1С в компании «БКС-технологии» Алексей Шиянов в ходе Infostart Meetup Novosibirsk продемонстрировал необычный способ использования СКД и сравнил результаты заполнения движений документа через СКД с классическим подходом к заполнению движений через запросы и циклы.

14.04.2021    4747    user1127305    11    

Эффективные приемы разработки

Математика и алгоритмы Рефакторинг и качество кода СКД v8 Бесплатно (free)

На Infostart Meetup Ekaterinburg.Online выступил Сергей Наумов – руководитель центра аналитики и консалтинга WiseAdvice. Сергей поделился с коллегами приемами разработки, которые помогут избежать потенциальных проблем при реализации сложных проектов.

07.04.2021    4115    SergeyN    13    

Полезные примеры СКД, ч.2

СКД v8 v8::СКД Бесплатно (free)

Еще несколько примеров решения задач в СКД.

06.04.2021    14116    Neti    8    

Пример платежного календаря. СКД. Работает на любой платформе, без привязки к данным. Подробное описание действий

СКД v8 v8::СКД 1cv8.cf Бесплатно (free)

Отчет-пример, в котором на СКД рассмотрены принципы построения платежного календаря без привязки к данным и работающий на любой платформе. Подробно описаны этапы решения задачи. Тестирование проводилось на платформе 8.3.16.1814.

02.04.2021    1770    parshachello    2    

Полезные примеры СКД, ч.1

СКД v8::СКД Бесплатно (free)

Подборка видео по решению различных задач в отчетах на СКД.

30.03.2021    17959    Neti    21    

Отбор на форму (документа, справочника, обработки) с помощью СКД

СКД v8 v8::СКД 1cv8.cf Бесплатно (free)

Добавляем удобный отбор на форму документа с помощью СКД

09.02.2021    7674    John_d    15    

Перенос/копирование и установка отбора/фильтра/периода при интерактивном переключении или смене варианта отчета/СКД в БСП 3.1 (1C ERP, УТ, БП, ...)

СКД v8 1cv8.cf Бесплатно (free)

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

18.01.2021    2259    SizovE    4    

Установка нескольких фильтров/отбора СКД в табличной форме, хранение в табличной части для отправки push/email уведомлений (ОтборКомпоновкиДанных, КомпоновщикНастроек, ДинамическийСписок)

СКД v8 v8::УФ v8::СКД Бесплатно (free)

Рассмотрим, как организовать установку фильтров/отбора СКД (динамического списка) на push/email уведомления в подсистеме EDIbot (WebApp) для 1С в табличной части "События уведомлений".

02.11.2020    1875    SizovE    0    

Пользовательское поле СКД одной процедурой

СКД v8 Бесплатно (free)

Быстрое создание пользовательского поля "выражение" одной процедурой

05.08.2020    2592    Yashazz    0    

Роль "Остатки" поля набора данных СКД в отчете и в расшифровке

СКД v8::СКД 1cv8.cf Бесплатно (free)

В СКД создан набор данных "Запрос". Запрос выполняется к виртуальной таблице "Остатки и обороты", периодичность регистра "Авто", выбираются все измерения и ресурсы регистра, а так же выбирается Регистратор и ПериодСекунда. Для полей содержащих остатки устанавливается роль "Остатки". Для полей "Регистратор" и "ПериодСекунда" устанавливается роль "Период". Для поля "Регистратор" устанавливается выражение упорядочивания.

24.05.2020    8935    kasper076    18    

Макет оформления в отчете с несколькими СКД

СКД v8::СКД Россия Бесплатно (free)

Как заставить работать макет оформления в отчёте с несколькими СКД.

14.05.2020    5467    vendim    2    

СКД. Использование Менеджера временных таблиц в системе компоновки

СКД v8 v8::Запросы v8::СКД 1cv8.cf Бесплатно (free)

С выпуском платформы 8.3.17 фирма 1С анонсировала возможность передачи в механизм системы компоновки данных менеджера временных таблиц. Платформа вышла из беты, самое время разобраться с новым механизмом, тем более в комментариях я встретил непонимание принципов работы этого нововведения. Постараюсь кратко.

29.04.2020    14985    the1    48    

Ограничения полей, или как обмануть СКД?

СКД v8 v8::СКД 1cv8.cf Бесплатно (free)

Каждое из ограничений полей можно обойти. Рассмотрим варианты обхода и способы обезопасить свой отчет.

15.04.2020    20401    SeiOkami    41    

Работа с запросами в 1С СКД. Отладка СКД

СКД v8::Запросы v8::СКД Россия Бесплатно (free)

В предыдущем разделе мы изучали с вами особенности работы с запросами в СКД. Для изучения (отладки) работы различных схем компоновки данных я использовал консоль компоновки данных.

15.04.2020    5799    ProfessionStore    3    

Работа с запросами в 1С СКД. Особенности работы запросов в СКД. Часть 3

СКД v8::Запросы v8::СКД Россия Бесплатно (free)

Почему при отборе по контрагенту наш отчет работает неправильно. Посмотрим на примере другого отчета, в котором нам нужно выбрать данные из расходных накладных и связанные с номенклатурой данные по ВСЕМ заявкам.

13.04.2020    10152    ProfessionStore    4    

СКД: Прозрачная обработка результата

СКД v8::СКД 1cv8.cf Бесплатно (free)

В статье дан ответ на вопрос о том, как "прозрачно" обработать результат компоновки (да хотя бы картинки вставить после того, как отчет сформирован).

13.04.2020    6636    starik-2005    16    

Работа с запросами в 1С СКД. Особенности работы запросов в СКД. Часть 2

СКД v8::Запросы v8::СКД Россия Бесплатно (free)

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

12.04.2020    8291    ProfessionStore    11    

Работа с запросами в 1С СКД. Особенности работы запросов в СКД. Часть 1

СКД v8::Запросы v8::СКД 1cv8.cf Россия Бесплатно (free)

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

11.04.2020    13970    ProfessionStore    9    

Работа с запросами в 1С СКД. Язык выражений СКД и подмена запросов

СКД v8::Запросы v8::СКД Россия Бесплатно (free)

Хотя эта статья называется «Работа с запросами в 1С СКД», нельзя не упомянуть про язык выражений СКД. Да – у системы компоновки данных есть свой язык! Это не язык платформы 1С, это не язык запросов. Это еще один язык, который используется 1С в СКД для обработки полученного набора (ов) данных.

11.04.2020    13066    ProfessionStore    25