Особливості автозаповнення в СКД

На другу добу боротьби зі звітом, я зрозумів що таке галочка Автозаповнення в СКД. Жесть звичайно, тепер знатиму. http://its.1c.ru/db/metod81#content:2696:1

У налаштуваннях компонування даних можливе вказівка ​​головного відбору та відбору угруповань. Головний відбір встановлюється для всього звіту загалом. Відбір угруповань встановлюється у конкретного угруповання. У цій статті описуються особливості роботи системи з основним та відборами угруповань.

Головний відбір звіту

Головний відбір впливає отримання даних із наборів, виведення у звіт. Наприклад, якщо в головний відбір додати умову Номенклатура Рівно «1С:Бухгалтерія 7.7 Стандартна версія», то звіт будуть видаватися тільки записи, у яких поле Номенклатура має значення «1С:Бухгалтерія 7.7 Стандартна версія».

Застосування відбору у запитах

Якщо можливо, умови з головного відбору розміщуються в тексті запиту. Відбір може бути поміщений в умову віртуальної таблиці, у пропозицію ДЕ, у пропозицію МАЮЧІ, залежно від того, яке поле накладається відбір.

В умовах віртуальної таблиці відбір поміщається у разі якщо у вихідному запиті набору динних явно сказано, що відбір на дане поле потрібно поміщати в умову віртуальної таблиці або для набору даних вказано автоматичне заповнення полів.

Приклад явної вказівки необхідності розміщення умови на полі Номенклатура у параметрі віртуальної таблиці:

Згенерований запит набору даних при застосуванні відбору на полі Номенклатура може виглядати так:

Як бачимо, відбір поміщений за умови віртуальної таблиці.

У пропозицію ДЕ умова міститься у разі, якщо у вихідному запиті набору даних явно сказано, що відбір на полі потрібно поміщати впропозиція ДЕ або при автоматичному заповненні. Якщо для набору даних вказано автоматичне заповнення, то умова буде поміщатися в пропозицію ДЕ тільки у випадку, якщо відбір на полі не застосовувався за умови віртуальної таблиці, яка не знаходиться в лівій частині з'єднання.

приклад. У наборі даних використовується наступний запит і автоматичне заповнення:

Якщо добір додати умову на поля Номенклатура і Склад, то результуючий запит виглядатиме так:

Як бачимо, відбір на полі Номенклатура було поміщено параметри віртуальних таблиць і т.к. відбір на дане поле був поміщений в таблицю, яка не знаходиться в лівому з'єднанні (ПродажіОбороти), то відбір на це поле не був поміщений пропозицією ДЕ. Умова ж полі Склад було вміщено як і віртуальну таблицю, і у пропозицію ДЕ, т.к. таблиця Облік Номенклатури Залишки, за умови якої вміщено відбір, перебуває у лівому соединении.

Якби у вихідному запиті була явна вказівка ​​на те, що умову на полі Номенклатури потрібно поміщати в пропозицію ДЕ, як у наступному запиті:

То відбір на дане поле був би доданий у пропозицію ДЕ результуючого запиту незалежно від того, чи відбір був поміщений в умову віртуальної таблиці. Для вищеописаного прикладу результуючий запит виглядав би наступним чином:

У пропозицію МАЮЧІ умова міститься у разі якщо відбір накладається на поле, вираз якого містить агрегатну функцію.

Наприклад, якщо вихідний запит з автоматичним заповненням виглядає так:

То при застосуванні відбору на полі СуммаДок результуючий запит матиме такий вигляд:

Відбір, застосовуваний над запитом

У деяких ситуаціях умова в текст запиту не вдається. Таке може статисяу разі якщо в умовах використовуються поля з декількох наборів даних або в умові використовується обчислюване або поле користувача, що містить вирази, які не можуть бути представлені мовою запитів. У цьому випадку вираз умова поміщається у властивість Відбір згенерованого набору даних макета компонування даних. Якщо умови використовувалися поля з кількох наборів даних, то умова буде поміщатися в останній зв'язку дочірній набір даних, поле якого використовується в умові. Наприклад, якщо у схемі визначено набори даних Продажу та пов'язаний з ним набір даних Залишки та в умови використовуються поля з обох наборів даних, то умова буде поміщена у властивість Відбір набору даних Залишки.

Особливості використання відбору під час роботи з кількома наборами даних

При використанні в схемі декількох наборів даних, якщо в головному відборі накладається умова на полі деякого дочірнього набору даних, то в макеті, що згенерував, компонування даних дочірній набір даних буде пов'язаний з батьківським набором даних з типом зв'язку «Внутрішня». Батьківські набори даних набору даних, до якого застосовується умова, також будуть пов'язані зі своїми батьківськими наборами даних із типом зв'язку «Внутрішня». Тип зв'язку «Внутрішній» означає, що запис батьківського набору даних буде виводитись у результат звіту лише у випадку, якщо в дочірньому наборі даних буде знайдено пов'язані записи. Наприклад, якщо у схемі визначено набори даних Продажу та пов'язаний з ним набір даних Залишки та в умові використовуються поле з набору даних Залишки, то в згенерованому макеті компонування даних зв'язок між цими наборами даних буде визначено з типом зв'язку «Внутрішній». Якби при цьому набір даних Продажу був у свою чергу приймачем зв'язку длядеякого іншого набору даних, те й цей зв'язок також було б згенеровано з типом зв'язку «Внутрішній».

Відбір угруповань

Вибір угруповань використовується для фільтрації записів, які виводяться у групуванні. При цьому відбір поширюється на угруповання, на вкладені угруповання, і не впливає на інші угруповання наявні у звіті.

Наприклад. У схемі компонування опишемо набір даних, який отримує залишки номенклатури за складами.

У налаштуваннях звіту створимо таку структуру:

У перше угруповання по полю Номенклатура додамо умову «Склад» «Основний склад». У угруповання по полю Склад додамо умову Склад Не рівно «Основний склад».

Результат звіту буде виглядати так:

Як видно, у першому угрупованні видано залишки номенклатури за складом «Основний склад». У наступних угрупованнях видаються залишки номенклатури з інших складів.

Тип застосування відбору угруповань

У відборах, що застосовуються до угруповань, можливе зазначення типу застосування умови для записів, що виводяться.

Можливі три варіанти типу застосування:

  • Без ієрархії — умова застосовується лише до не ієрархічних записів. Ієрархічні записи не фільтруються. У звіт видаються ті ієрархічні записи, у яких присутні не ієрархічні записи, задовольняють умові. Підсумок з ресурсів в ієрархічних записах і загальний результат угруповання враховує умову.
  • Ієрархія - умова застосовується як до не ієрархічних, як і до ієрархічних записів. Підсумок з ресурсів в ієрархічних записах і загальний підсумок угруповання відбір не враховує.
  • Тільки ієрархія - умова застосовується тільки до ієрархічних записів. Підсумок з ресурсів у ієрархічних записах та загальнийрезультат з угруповання відбір не враховує.

У наступному прикладі результат звіту видають чотири угруповання за полем Номенклатура. При цьому в першому угрупованні виводяться записи без відбору, а в інших угрупованнях видаються записи з відбором Кількість залишок більше 40 з типами застосування Без ієрархії, Ієрархія, Тільки ієрархія.