Схема компонування даних обчислювані поля. Функції мови виразів системи компоновки даних

Мова виразів системи компоновки даних

Мова виразів системи компоновки даних призначений для запису виразів, використовуваних в різних частинах системи.

Вирази використовуються в наступних підсистемах:

  • схема компонування даних - для опису обчислюваних полів, полів підсумків, виразів зв'язку і т.д .;
  • настройки компонування даних - для опису виразів користувальницьких полів;
  • макет компонування даних - для опису виразів зв'язку наборів даних, опису параметрів макета і т.д.

літерали

У вираженні можуть бути присутніми літерали. Можливі літерали наступних типів:

  • рядок;
  • число;
  • Дата;
  • Булево.

рядок

Строковий літерал записується в символах «" », наприклад:

   "Строковий літерал"

При необхідності використання всередині строкового литерала символу «" », слід використовувати два таких символів.

наприклад:

   "Літерал" "в лапках" ""

число

Число записується без пропусків, в десятковому форматі. Дрібна частина відділяється за допомогою символу «.». наприклад:

10.5 200

Дата

Літерал типу дата записується за допомогою ключового литерала ДАТАВРЕМЯ (DATETIME). Після цього ключового слова, в дужках, через кому перераховуються рік, місяць, день, години, хвилини, секунди. Вказівка \u200b\u200bчасу не обов'язково.

наприклад:

ДАТАВРЕМЯ (1975, 1, 06) - Шосте січня 1975 року ДАТАВРЕМЯ (2006, 12, 2, 23, 56, 57) - Друге грудня 2006 року, 23 години 56 хвилин 57 секундода, 23 години 56 хвилин 57 секунд

булево

Булеві значення можуть бути записані за допомогою літералів Істина (True), Брехня (False).

значення

Для вказівки литералов інших типів (системних перерахувань, зумовлених даних) використовується ключове слово Значення, після якого в дужках йде вказівка \u200b\u200bімені литерала.

Значення (ВідСчета. Активний)

Операції над числами

унарний -

Дана операція призначена для зміни знака числа на зворотний. наприклад:

Продажі.Колічество

унарний +

Дана операція не виконує над числом ніяких дій. наприклад:

Продажі.Колічество

бінарний -

Дана операція призначена для обчислення різниці двох чисел. наприклад:

ОстаткіІОбороти.НачальнийОстаток - ОстаткіІОбороти.КонечнийОстаток ОстаткіІОбороти.НачальнийОстаток - 100 400 - 357

бінарний +

Дана операція призначена для обчислення суми двох чисел. наприклад:

ОстаткіІОбороти.НачальнийОстаток + ОстаткіІОбороти.Оборот ОстаткіІОбороти.НачальнийОстаток + 100 400 + 357

твір

Дана операція призначена для обчислення добутку двох чисел. наприклад:

Номенклатура.Цена * 1.2 2 * 3.14

розподіл

Дана операція призначена для отримання результату ділення одного операнда на другий. наприклад:

Номенклатура.Цена / 1.2 2 / 3.14

Залишок від ділення

Дана операція призначена для отримання залишку від ділення одного операнда на другий. наприклад:

Номенклатура.Цена% 1.2 2% 3.14

Операції над рядками

Конкатенація (Бінарний +)

Дана операція призначена для конкатенації двох рядків. наприклад:

Номенклатура.Артікул + ":" + Номенклатура.Наіменованіе

подібно

Дана операція перевіряє відповідність рядка переданому шаблоном.

Значним оператора ПОДІБНО є ІСТИНА, якщо значення<Выражения>  задовольняє шаблоном, і БРЕХНЯ в іншому випадку.

Наступні символи в<Строке_шаблона>  мають сенс, відмінний від просто чергового символу рядка:

  • % - відсоток: послідовність, яка містить нуль і більш довільних символів;
  • _ - підкреслення: один довільний символ;
  • [...] - один або кілька символів у квадратних дужках: один символ, будь-який з перерахованих всередині квадратних дужок. У перерахуванні можуть зустрічатися діапазони, наприклад a-z, які означають довільний символ, що входить в діапазон, включаючи кінці діапазону;
  • [^ ...] - в квадратних дужках значок заперечення, за яким слід один або кілька символів: будь-який символ, крім тих, які перераховані слідом за значком заперечення;

Будь-який інший символ означає сам себе і не несе ніякого додаткового навантаження. Якщо в якості самого себе необхідно записати один з перерахованих символів, то йому повинен передувати<Спецсимвол>, Вказаний після ключового слова спецсимволи (ESCAPE).

Наприклад, шаблон

   "% АБВ [абвг] \\ _ абв%" спецсимволи "\\"

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

операції порівняння

Так само

Дана операція призначена для порівняння двох операндів на рівність. наприклад:

Продажі.Контрагент \u003d Продажі.НоменклатураОсновнойПоставщік

Не дорівнює

Дана операція призначена для порівняння двох операндів на нерівність. наприклад:

Продажі.Контрагент<>  Продажі.НоменклатураОсновнойПоставщік

менше

Дана операція призначена для перевірки того, що перший операнд менше другого. наприклад:

ПродажіТекщіе.Сумма< ПродажиПрошлые.Сумма

більше

Дана операція призначена для перевірки того, що перший операнд більше другого. наприклад:

ПродажіТекщіе.Сумма\u003e ПродажіПрошлие.Сумма

Менше або дорівнює

Дана операція призначена для перевірки того, що перший операнд менше або дорівнює другому. наприклад:

ПродажіТекщіе.Сумма<= ПродажиПрошлые.Сумма

Більше чи рівно

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

ПродажіТекщіе.Сумма\u003e \u003d ПродажіПрошлие.Сумма

операція В

Дана операція здійснює перевірку наявності значення в переданому списку значень. Результатом операції буде Істина, в разі, якщо значення знайдено, або Брехня - в іншому випадку. наприклад:

Номенклатура В (& Товар1, & Товар2)

Операція перевірки наявності значення в наборі даних

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

Продажі.Контрагент В Контрагенти

Операція перевірки значення на NULL

Дана операція повертає значення Істина в разі, якщо значення є значенням NULL. наприклад:

Продажі.Контрагент Є NULL

Операція перевірки значення на нерівність NULL

Дана операція повертає значення Істина в разі, якщо значення не є значенням NULL. наприклад:

Продажі.Контрагент Є НЕ NULL

Логічні операції

Логічні операції беруть в якості операндів виразу, що мають тип Булево.

операція НЕ

Операція НЕ повертає значення Істина в разі, якщо її операнд має значення Брехня, і значення Брехня в разі, якщо її операнд має значення Істина. наприклад:

НЕ Документ.Грузополучатель \u003d Документ.Грузоотправітель

операція І

Операція І повертає значення Істина в разі, якщо обидва операнда мають значення Істина, і значення Брехня в разі, якщо один з операндів має значення Брехня. наприклад:

Документ.Грузополучатель \u003d Документ.Грузоотправітель І Документ.Грузополучатель \u003d & Контрагент

операція АБО

Операція АБО повертає значення Істина в разі, якщо один з операндів має значення Істина, і Брехня в разі, якщо обидва операнда мають значення Брехня. наприклад:

Документ.Грузополучатель \u003d Документ.Грузоотправітель АБО Документ.Грузополучатель \u003d & Контрагент

агрегатні функції

Агрегатні функції здійснюють деяку дію над набором даних.

сума

Агрегатна функція Сума розраховує суму значень виразів, переданих їй як аргумент для всіх детальних записів. наприклад:

Сума (Продажі.СуммаОборот)

кількість

Функція Кількість розраховує кількість значень відмінних від значення NULL. наприклад:

Кількість (Продажі.Контрагент)

кількість різних

Ця функція розраховує кількість різних значень. наприклад:

Кількість (Різні Продажі.Контрагент)

максимум

Функція отримує максимальне значення. наприклад:

Максимум (Остаткі.Колічество)

мінімум

Функція отримує мінімальне значення. наприклад:

Мінімум (Остаткі.Колічество)

середнє

Функція отримує середнє значення для значень, відмінних від NULL. наприклад:

Середнє (Остаткі.Колічество)

інші операції

операція ВИБІР

Операція Вибір призначена для здійснення вибору одного з декількох значень при виконанні деяких умов. наприклад:

Вибір Коли Сума\u003e тисячу Тоді Сума Інакше 0 Кінець

Правила порівняння двох значень

Якщо типи порівнюваних значень відрізняються один від одного, то відносини між значеннями визначаються на підставі пріоритету типів:

  • NULL (найнижчий);
  • булево;
  • число;
  • Дата;
  • рядок;
  • довідкові типи

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

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

  • у типу Булево значення ІСТИНА більше значення БРЕХНЯ;
  • у типу Число звичайні правила порівняння для чисел;
  • у типу Дата більш ранні дати менше пізніших;
  • у типу Рядок - порівняння рядків відповідно до встановлених національними особливостями бази даних;
  • посилальні типи порівнюються на основі своїх значень (номера запису і т. п.).

Робота зі значенням NULL

Будь-яка операція, в якій значення одного з операндів NULL, буде давати результат NULL.

Є винятки:

  • операція І повертатимуть NULL тільки в разі, якщо жоден з операндів не має значення Брехня;
  • операція АБО буде повертати NULL тільки в разі, якщо жоден з операндів не має значення Істина.

пріоритети операцій

Операції мають наступні пріоритети (перший рядок має нижчий пріоритет):

  • В, Є NULL, Є НЕ NULL;
  • =, <>, <=, <, >=, >;
  • Бінарний +, бінарний -;
  • *, /, %;
  • Унарний +, Унарний -.

Функції мови виразів системи компоновки даних

обчислити

Функція Обчислити призначена для обчислення виразу в контексті деякої угруповання. Функція має такі параметри:

  • Вираз. Тип Рядок. Містить обчислюється вираз;
  • Угруповання. Тип Рядок. Містить ім'я угруповання, в контексті якої необхідно обчислити вираз. У разі якщо в якості імені угрупування використовується порожній рядок, обчислення буде виконано в контексті поточної угруповання. У разі якщо в якості імені угруповання буде використана рядок ОбщійІтог, обчислення буде виконано в контексті загального підсумку. В інших випадках обчислення буде виконуватися в контексті батьківської угруповання з таким ім'ям. наприклад:
  Сума (Продажі.СуммаОборот) / Обчислити ( "Сума (Продажі.СуммаОборот)", "ОбщійІтог")

В даному прикладі в результаті вийде відношення суми по полю "Продажі.СуммаОборот" записи угруповання до суми того ж поля у всій компонуванні.

рівень

Функція призначена для отримання поточного рівня запису.

Рівень ()

Номер по порядку

Отримати наступний порядковий номер.

Номер по порядку()

НомерПоПорядкуВГруппіровке

Повертає наступний порядковий номер у поточному угрупованню.

НомерПоПорядкуВГруппіровке ()

формат

Отримати отформатированную рядок переданого значення.

Форматна рядок задається відповідно до форматної рядком 1С: Підприємство.

параметри:

  • значення;
  • Форматна рядок.

Формат (РасходниеНакладние.СуммаДок, "ЧДЦ \u003d 2")

Початок періоду

параметри:

    • хвилина;
    • день;
    • тиждень;
    • місяць;
    • квартал;
    • декада;
    • Півріччя.

НачалоПеріода (ДатаВремя (2002, 10, 12, 10, 15, 34), "Місяць")

результат:

01.10.2002 0:00:00

КонецПеріода

Функція призначена для виділення певної дати із заданої дати.

параметри:

  • Дата. Тип Дата. Задана дата;
  • Тип періоду. Тип Рядок. Містить одне із значень:
    • хвилина;
    • день;
    • тиждень;
    • місяць;
    • квартал;
    • декада;
    • Півріччя.

КонецПеріода (ДатаВремя (2002, 10, 12, 10, 15, 34), "Тиждень")

результат:

13.10.2002 23:59:59

ДобавітьКДате

Функція призначена для додавання до дати деякої величини.

параметри:

  • Тип збільшення. Тип Рядок. Містить одне із значень:
    • хвилина;
    • день;
    • тиждень;
    • місяць;
    • квартал;
    • декада;
    • Півріччя.
  • Величина - на скільки необхідно збільшити дату. Тип Число. Дрібна частина ігнорується.

ДобавітьКДате (ДатаВремя (2002, 10, 12, 10, 15, 34), "Місяць", 1)

результат:

12.11.2002 10:15:34

РазностьДат

Функція призначена для отримання різниці між двома датами.

параметри:

  • Вираз. Тип Дата. Вихідна дата;
  • Вираз. Тип Дата. Віднімається дата;
  • Тип різниці. Тип Рядок. Містить одне із значень:
    • секунда;
    • хвилина;
    • день;
    • місяць;
    • квартал;

РАЗНОСТЬДАТ (ДАТАВРЕМЯ (2002, 10, 12, 10, 15, 34), ДАТАВРЕМЯ (2002, 10, 14, 9, 18, 06), "ДЕНЬ")

результат:

підрядок

Ця функція призначена для виділення підрядка з рядка.

параметри:

  • Рядок. Тип Рядок. Рядок, з якої виділяють подстроку;
  • Позиція. Тип Число. Позиція символу, з якого починається виділяється з рядка підрядок;
  • Довжина. Тип Число. Довжина виділяється підрядка.

Підрядки (Контрагенти.Адрес, 1, 4)

ДлінаСтрокі

Функція призначена для визначення довжини рядка.

параметр:

  • Рядок. Тип Рядок. Рядок, довжину якої визначають.

Рядок (Контрагенти.Адрес)

рік

Ця функція призначена для виділення року з значення типу Дата.

параметр:

  • Дата. Тип Дата. Дата, з якої визначають рік.

РІК (РасхНакл.Дата)

квартал

Ця функція призначена для виділення номера кварталу з значення типу Дата. Номер кварталу в нормі знаходиться в діапазоні від 1 до 4.

параметр

  • Дата. Тип Дата. Дата, з якої визначають квартал
  КВАРТАЛ (РасхНакл.Дата)

місяць

Ця функція призначена для виділення номера місяця з значення типу Дата. Номер місяця в нормі знаходиться в діапа-зоні від 1 до 12.

  • Дата. Тип Дата. Дата, з якої визначають місяць.
  МІСЯЦЬ (РасхНакл.Дата)

ДеньГода

Ця функція призначена для отримання дня року з значення типу Дата. День року в нормі знаходиться в діапазоні від 1 до 365 (366).

  • Дата. Тип Дата. Дата, з якої визначають день року.
  ДЕНЬГОДА (РасхНакл.Дата)

день

Ця функція призначена для отримання дня місяця з значення типу Дата. День місяця в нормі знаходиться в діапазоні від 1 до 31.

  • Дата. Тип Дата. Дата, з якої визначають дня місяця.
  ДЕНЬ (РасхНакл.Дата)

тиждень

Ця функція призначена для отримання номера тижні року з значення типу Дата. Тижня року нумеруються, починаючи з 1.

  • Дата. Тип Дата. Дата, з якої визначають номера тижні.
  ТИЖДЕНЬ (РасхНакл.Дата)

День тижня

Ця функція призначена для отримання дня тижня з значення типу Дата. День тижня в нормі знаходиться в діапазоні від 1 (понеділок) до 7 (неділя).

  • Дата. Тип Дата. Дата, з якої визначають день тижня.
  ДЕНЬНЕДЕЛІ (РасхНакл.Дата)

Годину

Ця функція призначена для отримання години доби з значення типу Дата. Час доби знаходиться в діапазоні від 0 до 23.

  • Дата. Тип Дата. Дата, з якої визначають годину доби.
  ЧАС (РасхНакл.Дата)

хвилина

Ця функція призначена для отримання хвилини години з значення типу Дата. Хвилина години знаходиться в діапазоні від 0 до 59.

  • Дата. Тип Дата. Дата, з якої визначають хвилина години.
  ХВИЛИНА (РасхНакл.Дата)

секунда

Ця функція призначена для отримання секунди хвилини з значення типу Дата. Секунда хвилини знаходиться в діапазоні від 0 до 59.

  • Дата. Тип Дата. Дата, з якої визначають секунди хвилини.
  СЕКУНДА (РасхНакл.Дата)

висловити

Ця функція призначена для виділення типу з виразу, яке може містити складовою тип. У разі, якщо вираз буде містити тип, відмінний від необхідного типу, буде повернуто значення NULL.

параметри:

  • Конвертувати вираз;
  • Вказівка \u200b\u200bтипу. Тип Рядок. Містить рядок типу. Наприклад, "Число", "Рядок" і т.п. Крім примітивних типів даний рядок може містити ім'я таблиці. У цьому випадку буде здійснена спроба висловити до заслання на зазначену таблицю.

Висловити (Данние.Реквізіт1, "Число (10,3)")

ЕстьNull

Ця функція повертає значення другого параметра в разі, якщо значення першого параметра NULL.

В іншому випадку буде повернуто значення першого параметра.

ЕстьNULL (Сума (Продажі.СуммаОборот), 0)

Функції загальних модулів

Вираз механізму компонування даних може містити виклики функцій глобальних загальних модулів конфігурації. Ніякого додатково синтаксису для виклику таких функцій не потрібно.

В даному прикладі буде здійснено виклик функції "СокращенноеНаіменованіе" із загального модуля конфігурації.

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

Крім того, функції загальних модулів не можуть бути використані у виразах користувальницьких полів.

У світлі найближчого виходу 8.2.14, спробую описати деякі нові функції системи компоновки даних.

Відкриваємо схему компоновки даних, бажано в зовнішньому звіті, щоб було простіше редагувати.

Додаємо набір даних типу запит і пишемо, або вручну, або за допомогою конструктора запитів найпростіший запит:

1. Налаштовуємо запит в СКД.

2. Налаштовуємо обчислювані поля в СКД

3. Виконуємо настройку макета даних на закладці налаштування

4. Запускаємо 1С Підприємство 8.2.14. Відкриваємо звіт. Формуємо, отримуємо.

Опис самих нових функцій:

1. Поточна дата()

Повертає системну дату. При компонуванні макета компонування у всіх виразах, які присутні в компонуванні, функція ТекущаяДата () замінюється значенням поточної дати.

2. ВИЧІСЛІТЬВИРАЖЕНІЕ ()

синтаксис:

ВичіслітьВираженіе (<Выражение>, <Группировка>, <ОбластьВычисления>, <Начало>, <Конец>, <Сортировка>, <ИерархическаяСортировка>, <ОбработкаОдинаковыхЗначенийПорядка>)

опис:

Функція призначена для обчислення виразу в контексті деякої угруповання.

Функція враховує відбір угруповань, але не враховує ієрархічні відбори.

Функція не може застосовуватися до угруповання в груповому відборі цього угруповання. Наприклад, у відборі угруповання Номенклатура не можна використовувати вираз ВичіслітьВираженіе ( «Сума (СуммаОборот)", «ОбщійІтог»)\u003e 1000. Але такий вислів можна використовувати в ієрархічному відборі.

Якщо кінцева запис передує початковій, то вважається, що записи для розрахунку детальних даних і розрахунку агрегатних функцій відсутні.

При розрахунку інтервальних виразів для загального підсумку (параметр Угруповання має значення ОбщійІтог) вважається, що записи для розрахунку детальних даних і розрахунку агрегатних функцій відсутні.

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

параметри

<Выражение>

Тип: Рядок. Вираз, який треба знайти.

<Группировка>

Тип: Рядок. Містить ім'я угруповання, в контексті якої необхідно обчислити вираз. У разі якщо в якості імені угрупування використовується порожній рядок, обчислення буде виконано в контексті поточної угруповання. У разі якщо в якості імені угруповання буде використана рядок ОбщійІтог, обчислення буде виконано в контексті загального підсумку. В інших випадках обчислення буде виконуватися в контексті батьківської угруповання з таким ім'ям.

наприклад:

Сума (Продажі.СуммаОборот) / Обчислити ( "Сума (Продажі.СуммаОборот)", "ОбщійІтог")

В даному прикладі в результаті вийде відношення суми по полю Продажі.СуммаОборот записи угруповання до суми того ж поля у всій компонуванні;

<ОбластьВычисления>

Тип: Рядок. Параметр може набувати таких значень:

  • ОбщійІтог - вираз буде обчислюватися для всіх записів угруповання.
  • Ієрархія - вираз буде обчислюватися для батьківської ієрархічної записи, якщо така є, і для всього угруповання, якщо батьківської ієрархічної записи немає.
  • Угруповання - вираз буде обчислюватися для поточної групової записи угруповання.
  • ГруппіровкаНеРесурса - при обчислення функції для групової записи по ресурсам, вираз буде обчислено для першої групового запису вихідної угруповання.

При обчисленні функції ВичіслітьВираженіе ()  зі значенням ГруппіровкаНеРесурса для групових записів, які не є угрупованнями по ресурсам, функція обчислюється так само, як би вона обчислювалася в тому випадку, якщо значення параметра було дорівнює значенню Угруповання.

Компоновщик макета компонування даних при генерації макета компонування даних при виведенні в макет поля-ресурсу, за яким виконується угрупування, поміщає в макет вираз, що обчислюється за допомогою функції ВичіслітьВираженіе (), Із зазначенням параметраГруппіровкаНеРесурса. Для інших ресурсів в угрупованні по ресурсу поміщаються звичайні вирази ресурсів.

<Начало>

Тип: Рядок. Вказує, з якою записи потрібно починати фрагмент, в якому розраховувати агрегатні функції вираження і з якої записи отримувати значення полів поза агрегатних функцій. Значення може бути одним з наступних:

<Конец>

Тип: Рядок. Вказує, до якої записи потрібно продовжувати фрагмент, в якому розраховувати агрегатні функції вираження. Значення може бути одним з наступних:

  • Перша (First). Необхідно отримувати перший запис угруповання. Після слова в дужках можна вказувати вираз, результат якого буде використовуватися як зміщення від початку угруповання. Одержуване значення має цілим бути числом, більше нуля. Наприклад, Перша (3) - отримання третьому записі від початку угруповання.

Якщо перший запис виходить за межі угруповання, то вважається, що записів немає. Наприклад, якщо записів 3, а потрібно получітьПервая (4), то вважається, що записів немає.

  • Остання (Last). Необхідно отримати останній запис угруповання. Після слова в дужках можна вказувати вираз, результат якого буде використовуватися як зміщення від кінця угруповання. Одержуване значення має цілим бути числом, більше нуля. Наприклад, Остання (3) - отримання третьому записі від кінця угруповання.

Якщо останній запис виходить за межі угруповання, то вважається, що записів немає. Наприклад, якщо записів 3, а потрібно получітьПоследняя (4), то вважається, що записів немає.

  • Попередня (Previous). Необхідно отримати попередній запис угруповання. Після слова в дужках можна вказувати вираз, результат якого буде використовуватися як зміщення назад від поточної записи угруповання. Наприклад, Попередня (2) - отримання попередньої від попереднього запису.

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

При отриманні попередньої записи для підсумку по угрупованню вважається, що виходить перший запис.

  • Наступна (Next). Необхідно отримати такий запис угруповання. Після слова в дужках можна вказувати вираз, результат якого буде використовуватися як зміщення вперед від поточної записи угруповання. Наприклад, Наступна (2) - отримання наступної від наступного запису.

Якщо такий запис виходить за межі угруповання, то вважається, що записів немає. Наприклад, якщо записів 3 і для третьої записи отримують Наступна (), то вважається, що записів немає.

При отриманні наступного запису для підсумку по угрупованню вважається, що записи немає.

  • Поточна (Current). Необхідно отримати поточну запис.

При отриманні для підсумку по угрупованню виходить перший запис.

  • ОгранічівающееЗначеніе (BoundaryValue). Необхідність отримати запис за вказаною значенням. Після слова ОгранічівающееЗначеніев дужках потрібно вказати вираз, зі значення якого потрібно починати фрагмент, першого поля упорядкування.

Як записи буде виходити перша запис, значення поля упорядкування у якій більше або дорівнює вказаному значенню. Наприклад, якщо в якості поля упорядкування використовується поле Період, і воно має значення 01.01.2010, 01.02.2010, 01.03.2010, та потрібно отримати ОгранічівающееЗначеніе (ДатаВремя (2010, 1, 15)), то буде отримана запис з датою 01.02. 2010 року.

<Сортировка>

Тип: Рядок. Перераховуються вираження, розділені комами, які опісиваютправіла упорядкування. Якщо не вказана, то упорядкування виконується також як і у угруповання, для якої обчислюється вираз. Після кожного виразу можна вказати ключове слово Вік (для упорядкування за зростанням), спад (для упорядкування по убування) і Автоупорядочіваніе (для упорядкування довідкових полів по полях, по яких потрібно упорядковувати об'єкт, на який виконується посилання). Слово Автоупорядочіваніе може використовуватися як зі словом Возр, так і зі словом спад.

<ИерархическаяСортировка>

Тип: Рядок. Аналогічно параметру Сортування. Застосовується для упорядкування ієрархічних записів. Якщо не вказано, компонувальник макета генерує упорядкування відповідно до упорядкуванням, зазначеним в параметрі Сортування.

<ОбработкаОдинаковыхЗначенийПорядка>

Тип: Рядок. Вказує правило визначення попередньої або наступний записи в разі якщо є кілька записів з однаковим значенням упорядкування:

  • Окремо (Separately) позначає, що для визначення попередньої і наступної записів використовується послідовність упорядкованих записів. Значення за замовчуванням.
  • Разом (Together) позначає, що попередня і наступні записи визначаються на підставі значень виразів упорядкування.

Наприклад, якщо отримана послідовність впорядкована за датою:

Дата ПІБ значення
1 01 січня 2001 року Іванов М. 10
2 02 січня 2001 року Петров С. 20
3 03 січня 2001 року Сидоров Р. 30
4 04 січня 2001 року Петров С. 40

Якщо значення параметра дорівнює Окремо, то:

§ попереднім записом до запису 3 буде запис 2.

§ якщо розрахунковий фрагмент визначається як Поточна, Поточна (відповідно, параметри початок і кінець), то для запису 2 цей фрагмент буде складатися з одного запису 2. Вираз ВичіслітьВираженіе ( «Сума (Значення)", Поточна, Поточна) дорівнюватиме 20.

Якщо значення параметра дорівнює Разом, то:

§ попереднім записом до запису 3 буде запис 1.

§ якщо розрахунковий фрагмент визначається як Поточна, Поточна (відповідно, параметри початок і кінець), то для запису 2 цей фрагмент буде складатися із записів 2 і 3. Вираз ВичіслітьВираженіе ( «Сума (Значення)", Поточна, Поточна) дорівнюватиме 50.

При вказівці значення параметра рівного Разом, в параметрах Початок і Кінець можна вказувати зміщення для позицій Перша, Остання, Попередня, Наступна.

ВичіслітьВираженіе ( "Сума (СуммаОборот)", "Перша", "Поточна")

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

ВичіслітьВираженіе ( "Курс", "Попередня")

список нових  функцій:

ВичіслітьВираженіеСГруппіровкойМассів(<Выражение>, <ВыражениеПолейГруппировки>, <ОтборЗаписей>, <ОтборГруппировок>) –

Функція повертає масив, кожен елемент якого містить результат обчислення виразу для угруповання за вказаною полю.

ВичіслітьВираженіеСГруппіровкойТабліцаЗначеній(<Выражения>, <ВыражениеПолейГруппировки>, <ОтборЗаписей>, <ОтборГруппировок>) –

Функція повертає таблицю значень, кожен рядок якої містить результат обчислення виразів для угруповання за вказаною полю

ЗначеніеЗаполнено(<Выражение>) - Повертає Істина, якщо значення відмінно від значення даного типу за замовчуванням, відмінно від значеніяNULL, відмінно від порожньої посилання, відмінно від значення Не визначено. Для логічних значень здійснюється перевірка на значення NULL. Для рядків здійснюється перевірка на відсутність не пробільних символів

формат(<Выражение>, <Форматная строка>) - Отримати отформатированную рядок переданого значення. Форматна рядок задається відповідно до форматної рядком системи «1С: Підприємство».

підрядок(<Выражение>, <Начальные символ>, <ДлинаПодстроки>) - Ця функція призначена для виділення підрядка з рядка.

ДлінаСтрокі(<Выражение>) - Функція призначена для визначення довжини рядка. Параметр - вираз строкового типу

рядок(<Выражение>) - Якщо в якості параметра переданий масив, то функція повертає рядок, що містить рядкові подання всіх елементів масиву, розділених символами "; ". Якщо в якості параметра передана таблиця значень, то функція повертає рядок, що містить рядкові подання всіх рядків таблиці значень, причому уявлення осередків кожного рядка поділяються символами "; ", А рядки - сміволом перекладу рядка. Якщо у будь-якого елементу строкове представлення пусте, то замість його уявлення виводиться рядок<Пустое значение>.

Увійдіть на сайт як учень

Увійдіть як учень, щоб отримати доступ до матеріалів школи

Система компоновки даних 1С 8.3 для початківців: вважаємо підсумки (ресурси)

Метою цього уроку буде:

  • Написати звіт, який виводить список продуктів (довідник Їжа), їх калорійність і смак.
  • Зробити угруповання продуктів за їх кольором.
  •   Познайомитися з можливістю підведення підсумків (ресурси) і обчислюються полями.

Створюємо новий звіт

Як і на попередніх уроках відкриваємо базу " гастроном"В конфігураторі і створюємо новий звіт через меню" файл"->"Новий...":

Вид документу - зовнішній звіт:

У формі настройки звіту пишемо ім'я " Урок3"І натискаємо кнопку" Відкрити схему компоновки даних":

Ми залишаємо ім'я схеми за замовчуванням і натискаємо кнопку " Готово":

Додаємо запит через конструктор

На закладці " Набір данних"натискаємо зеленийплюсик і вибираємо пункт " Додати набір даних - запит":

Замість того, щоб писати текст запиту вручну, знову запускаємо конструктор запиту:

На вкладці " таблиці"Перетягуємо таблицю" їжа"З першої колонки в другу:

Вибираємо з таблиці " їжа"Поля, які будемо запитувати. Для цього перетягуємо поля" Найменування", "смак", "колір"І" калорійність"З другої колонки в третю:

Вийшло ось так:

Натискаємо кнопку " ОК"- текст запиту сформувався автоматично:

Формуємо налаштування відображення звіту

Переходимо на закладку " налаштування"І натискаємо на   чарівну паличку, щоб визвати конструктор налаштувань:

Вибираємо вид звіту " список... "і натискаємо кнопку" далі":

Перетягуємо з лівої колонки в праву поля, які будуть відображатися в списку і натискаємо " далі":

Перетягуємо з лівої колонки в праву поле " колір"- по ньому буде відбуватися угруповання  рядків в звіті. натискаємо " ОК":

А ось і результат роботи конструктора. Ієрархія нашого звіту:

  •   звіт в цілому
  •   угруповання "Колір"
  •   детальні записи - рядки з назвами їжі

Збережемо звіт (кнопка дискета) і не закриваючи  конфігуратора тут же відкриємо його в режимі користувача. Вийшло ось так:

Міняємо порядок колонок

але давайте поміняємо порядок  колонок (стрілки вгору-вниз), щоб він був таким як на малюнку нижче:

Збережемо звіт і знову відкриємо в режимі користувача:

Відмінно, так набагато краще.

Підводимо підсумок (суму) по калорійності

Було б непогано виводити підсумок калорійності продуктів по групах. Щоб бачити суму калорійності всіх продуктів, скажімо, білого або жовтого кольору. Або дізнатися загальну калорійність взагалі всіх продуктів в базі.

Для цього існує механізм обчислення ресурсів.

Переходимо на вкладку " ресурси"І перетягуємо поле" калорійність"(Ми ж по ньому збираємося підсумок підводити) з лівої колонки в праву.

При цьому в полі вираз вибираємо зі списку " Сума (Калорійність)", Так як підсумком буде сума всіх вхідних в підсумок елементів:

Зберігаємо і формуємо звіт:

У нас з'явилися підсумки по кожній з груп і за звітом в цілому.

Підводимо підсумок (середнє) по калорійності

Тепер давайте зробимо так, щоб у ще одній колонці виводилася середня  калорійність продуктів по групам і в цілому по звіту.

Чіпати вже наявну колонку "Калорійність" не можна - в неї вже виводиться підсумок-сума, тому заведемо ще одне поле, Яке буде точною копією поля "Калорійність".

Щоб завести таке "віртуальне" поле скористаємося механізмом обчислюваних полів.

Переходимо на закладку " обчислювані поля"І натискаємо зеленийплюсик:

У колонці " Шлях до даних"Пишемо ім'я нового поля ( разом, без пропусків). Нехай воно буде називатися " СредняяКалорійность", А в колонці" вираз"Пишемо ім'я вже існуючого поля, на підставі якого буде розраховуватися нове поле. Пишемо туди" калорійність". Колонка" Заголовок"Заповниться автоматично.

Ми додали нове поле ( " СредняяКалорійность"), Але в звіті воно саме по собі не з'явиться - потрібно або знову викликати конструктор налаштувань  ( "Чарівна паличка") або додати це поле вручну.

зробимо другим  способом. Для цього переходимо на закладку " налаштування", Вибираємо" звіт"(Адже ми хочемо додати поле в цілому до звіту), вибираємо внизу закладку" Вибрані поля"І перетягуємо поле" СредняяКалорійность"З лівої колонки в праву:

Вийшло ось так:

Зберігаємо і формуємо звіт:

Поле з'явилося і ми бачимо, що його значеннями є значення поля "Калорійність". Відмінно!

Для цього знову скористаємося вже знайомим нам механізмом ресурсів  (підбиття підсумків). Переходимо на закладку " ресурси"І перетягуємо поле" СредняяКалорійность"З лівої колонки в праву:

При цьому в колонці " вираз"Вибираємо" Середнє (СредняяКалорійность)":

Зберігаємо і формуємо звіт:

Бачимо, що за групами, тобто по кожному кольору, і за звітом в цілому цілком правильно порахувати середнє значення. але присутні зайві записи  по окремих продуктах (не по групам), які хотілося б прибрати зі звіту.

Знаєте чому вони з'явилися (значення не по групах)? Тому що, коли ми додавали поле " СредняяКалорійность"В налаштування звіту, на другому кроці ми виділили весь звіт в цілому  і це нове поле потрапило в елемент " детальні записи".

Виправимо помилку. Для цього повернемося на закладку " налаштування", Виберемо" детальні записи"Спочатку зверху (крок 2), а потім" детальні записи"Знизу (крок 3), перейдемо на закладку" Вибрані поля"І побачимо в її правій колонці елемент" авто".

елемент " авто"- це не одне поле. Це кілька полів, які потрапляють сюди автоматично на підставі вищих налаштувань.

Щоб побачити, що це за поля - натиснемо на елемент " авто" правою  кнопкою і виберемо пункт " Розгорнути":

елемент " авто"Розкрився в наступні поля:

А ось і наше поле " СредняяКалорійность", Яке потрапило сюди з пункту" звіт", Коли ми його туди перетягували. Просто знімемо  галку поруч з цим полем, щоб прибрати його виведення.

Схема компонування даних (1С СКД)  - зручний конструктор для створення в програмних продуктах 1С: Підприємство складних звітів, що сприяють розвитку і відстеження автоматизації виробництва, що дозволяють зробити їх максимально гнучкими і красивими за мінімум часу. Додатковий плюс Схеми компонування даних (1С СКД) - автоматичне формування керованої форми звіту, а при подальшому розвитку даного напрямку, є важливим фактором при виборі методу розробки звіту. Але через складність структури Схеми компонування даних (1С СКД) і величезної кількості налаштувань часто призводить до більш тривалої розробки звіту, ніж через «конструктор вихідний форми». Тому програмісту 1С необхідно розбиратися у всіх тонкощах роботи Схеми компонування даних (1С СКД), щоб в подальшому прискорити час розробки формування звітів.

Розберемо перші три вкладки Схеми компонування даних (1С СКД) - набір даних, зв'язку набору даних і обчислювані поля.

Набір даних в 1С СКД

Набір даних включає в себе можливість створення трьох об'єктів - запит, об'єкт і об'єднання, зупинимося докладніше на кожному з них:

Являє собою звичайний запит, який формується по кнопці Конструктор запиту. Якщо встановлений прапор Заповнити форму, то всі вибрані реквізити автоматично потраплять в поля набору даних. Так само є можливість самим налаштувати заповнення полів в запиті на вкладці Компонування даних, де знаходяться три вкладки:

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

Поля, тут ми вибираємо ті об'єкти, які повинні потрапити в звіт, прапор дочірні вказує, чи будуть доступні дочірні елементи по об'єкту чи ні, логічно, що у строкових, числових і подібних даних не можна буде встановити прапор в положення Істина.

Умови, тут ми вибираємо ті об'єкти, які можна буде використовувати в умовах в СКД.

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

Спочатку створимо макет схема компонування даних у документа і назвемо СКД (наприклад: 1С СКД), в ньому створюємо набір даних об'єкт, далі заповнюємо поля, наприклад, маємо у документа табличну частину товари з реквізитами - номенклатура, кількість і ціна.

Додамо три поля і заповнюємо по кожному колонку поле найменуванням реквізитів, інші колонки заповняться автоматично:

Створимо кнопку на формі документа, опишемо механізм роботи в керованих формах:

& НаКліенте

Процедура Друк ()

НашОтчет \u003d ПечатьНаСервере (); // викликаємо функцію на сервері

НашОтчет.Показать (); // виводимо сформований звіт

КонецПроцедури

&На сервері

Функція ПечатьНаСервере ()

Об'ектДокумента \u003d РеквізітФормиВЗначеніе ( "Об'єкт");

//поміщаємо табличну частину Товари в структуру з найменуванням ТовариСКД так само, як ми вказали в самій СКД ім'я об'єкта, що містить дані

НаборДанних \u003d Новий Структура;

НаборДанних.Вставіть ( "ТовариСКД", Об'ектДокумента.Товари);

//отримуємо наш макет і виставляємо настройки за замовчуванням, щоб всі налаштування виводу звіту бралися з нашого макета

НашМакет \u003d Об'ектДокумента.ПолучітьМакет ( "СКД");

Налаштування \u003d НашМакет.НастройкіПоУмолчанію;

//створюємо макет компонування даних з нашими налаштуваннями

КомпоновщікМакета \u003d Новий КомпоновщікМакетаКомпоновкіДанних;

МакетКомпоновкі \u003d КомпоновщікМакета.Виполніть (НашМакет, Налаштування);

//виконуємо компонування даних з нашим набором даних

ПроцессорКомпоновкіДанних \u003d Новий ПроцессорКомпоновкіДанних;

ПроцессорКомпоновкіДанних.Ініціалізіровать (МакетКомпоновкі, НаборДанних);

//формуємо табличний документ і виводимо в нього наш звіт

ДокументОтчета \u003d Новий ТаблічнийДокумент;

ПроцессорВивода \u003d Новий ПроцессорВиводаРезультатаКомпоновкіДаннихВТаблічнийДокумент;

ПроцессорВивода.УстановітьДокумент (ДокументОтчета);

ПроцессорВивода.Вивесті (ПроцессорКомпоновкіДанних);

Повернення ДокументОтчета;

КонецФункціі

При бажанні можна отримати області і будь-якого іншого макета і так само вивести в даному звіті, наприклад, маємо типовий макет формування платіжки і в ньому дуже добре створена шапка, тоді, щоб нам не робити зайву роботу, просто спочатку отримаємо макет, виведемо шапку, потім сформуємо і виведемо наш звіт на СКД.

Про б'едіненіе

У нього ми можемо поміщати наш запити і об'єкти, але на відміну від зв'язку, він просто додає таблиці один до одного, тобто якщо ми зв'яжемо дві однакових таблиці, то отримаємо в підсумку одну, а при об'єднанні, вона подвоїться, розглянемо на простому прикладі :

Маємо таблиці:

При зв'язку ми отримаємо:

А при об'єднанні:

Розглянемо тепер заповнення колонок в наборах даних (деякі пропустимо, так як пов'язані з іншими вкладками, до них повернемося в майбутніх статтях):

- поле, Вказуємо загальна назва реквізиту;

­­- шлях, Вказуємо назву реквізиту, за яким будемо до нього звертатися в СКД, наприклад, в обчислюваних полях;

- заголовок, Вказуємо найменування реквізиту, яке буде виводиться в звіті;

- обмеження поля, Вказуємо доступність даного реквізиту;

- обмеження реквізитів, Вказуємо доступність дочірніх елементів, важливо, якщо вказана доступність реквізитів, то і саме поле буде доступно, можливо в майбутніх релізах змінять цю механіку;

- вираз, за \u200b\u200bяким обчислюється уявлення поле, Зручно використовувати, коли нам потрібно змінити трохи висновок реквізитів, наприклад, нам потрібно, щоб після імені номенклатури  виводився склад, На якому знаходиться вона, тоді заповнимо наступне: Номенклатура + "знаходиться на складі" + Склад. Повторюся, що звернення реквізитами здійснюється через назву, зазначену в колонці шлях;

- вираз упорядкування, Зручний механізм настройки упорядкування звіту, де умова можна задати вручну, аналогічно попередньому пункту, але як показує практика, часто цей механізм працює не так, як хотілося б, і раджу користуватися стандартною сортуванням;

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

- доступні значення, Працює лише при заповненому типі значення, Відкриваємо форму заповнення і в колонці значення  вказуємо елемент, який потрібно змінити, відповідно до типу, це може бути зумовлені об'єкти або у числових, наприклад, реквізитів прості значення, в поданні  вказуємо, на що нам потрібно поміняти, приклад булевского типу:

- оформлення  - стандартна настройка формату поля, аналогічна настройці в керованих формах, дозволяє більш точно і красиво налаштувати висновок певного реквізиту.

Зв'язки набору даних в 1С СКД

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

У світлі найближчого виходу 8.2.14, спробую описати деякі нові функції системи компоновки даних.

Відкриваємо схему компоновки даних, бажано в зовнішньому звіті, щоб було простіше редагувати.

Додаємо набір даних типу запит і пишемо, або вручну, або за допомогою конструктора запитів найпростіший запит:

1. Налаштовуємо запит в СКД.

2. Налаштовуємо обчислювані поля в СКД

3. Виконуємо настройку макета даних на закладці налаштування

4. Запускаємо 1С Підприємство 8.2.14. Відкриваємо звіт. Формуємо, отримуємо.

Опис самих нових функцій:

1. Поточна дата()

Повертає системну дату. При компонуванні макета компонування у всіх виразах, які присутні в компонуванні, функція ТекущаяДата () замінюється значенням поточної дати.

2. ВИЧІСЛІТЬВИРАЖЕНІЕ ()

синтаксис:

ВичіслітьВираженіе (,)

опис:

Функція призначена для обчислення виразу в контексті деякої угруповання.

Функція враховує відбір угруповань, але не враховує ієрархічні відбори.

Функція не може застосовуватися до угруповання в груповому відборі цього угруповання. Наприклад, у відборі угруповання Номенклатура не можна використовувати вираз ВичіслітьВираженіе ( «Сума (СуммаОборот)", «ОбщійІтог»)\u003e тисячі. Але такий вислів можна використовувати в ієрархічному відборі.

Якщо кінцева запис передує початковій, то вважається, що записи для розрахунку детальних даних і розрахунку агрегатних функцій відсутні.

При розрахунку інтервальних виразів для загального підсумку (параметр Угруповання має значення ОбщійІтог) вважається, що записи для розрахунку детальних даних і розрахунку агрегатних функцій відсутні.

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

параметри

Тип: рядок. Вираз, який треба знайти.

Тип: рядок. Містить ім'я угруповання, в контексті якої необхідно обчислити вираз. У разі якщо в якості імені угрупування використовується порожній рядок, обчислення буде виконано в контексті поточної угруповання. У разі якщо в якості імені угруповання буде використана рядок ОбщійІтог, обчислення буде виконано в контексті загального підсумку. В інших випадках обчислення буде виконуватися в контексті батьківської угруповання з таким ім'ям.

наприклад:

Сума (Продажі.СуммаОборот) / Обчислити ( "Сума (Продажі.СуммаОборот)", "ОбщійІтог")

В даному прикладі в результаті вийде відношення суми по полю Продажі.СуммаОборот  записи угруповання до суми того ж поля у всій компонуванні;

Тип: рядок. Параметр може набувати таких значень:

· Загальний підсумок  - вираз буде обчислюватися для всіх записів угруповання.

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

· угруповання  - вираз буде обчислюватися для поточної групової записи угруповання.

· ГруппіровкаНеРесурса  - при обчислення функції для групової записи по ресурсам, вираз буде обчислено для першої групового запису вихідної угруповання.

При обчисленні функції ВичіслітьВираженіе ()   зі значенням ГруппіровкаНеРесурса  для групових записів, які не є угрупованнями по ресурсам, функція обчислюється так само, як би вона обчислювалася в тому випадку, якщо значення параметра було дорівнює значенню угруповання.

Компоновщик макета компонування даних при генерації макета компонування даних при виведенні в макет поля-ресурсу, за яким виконується угрупування, поміщає в макет вираз, що обчислюється за допомогою функції ВичіслітьВираженіе () , Із зазначенням параметра ГруппіровкаНеРесурса. Для інших ресурсів в угрупованні по ресурсу поміщаються звичайні вирази ресурсів.

Тип: рядок. Вказує, з якою записи потрібно починати фрагмент, в якому розраховувати агрегатні функції вираження і з якої записи отримувати значення полів поза агрегатних функцій. Значення може бути одним з наступних:

· Перша (First)

· Остання (Last)

· Попередня (Previous)

· Наступна (Next)

· Поточна (Current)

· ОгранічівающееЗначеніе  (BoundaryValue) ОгранічівающееЗначеніе

Тип: рядок. Вказує, до якої записи потрібно продовжувати фрагмент, в якому розраховувати агрегатні функції вираження. Значення може бути одним з наступних:

· Перша (First). Необхідно отримувати перший запис угруповання. Після слова в дужках можна вказувати вираз, результат якого буде використовуватися як зміщення від початку угруповання. Одержуване значення має цілим бути числом, більше нуля. Наприклад, Перша (3) - отримання третьому записі від початку угруповання.

Якщо перший запис виходить за межі угруповання, то вважається, що записів немає. Наприклад, якщо записів 3, а потрібно отримати Перша (4), то вважається, що записів немає.

· Остання (Last). Необхідно отримати останній запис угруповання. Після слова в дужках можна вказувати вираз, результат якого буде використовуватися як зміщення від кінця угруповання. Одержуване значення має цілим бути числом, більше нуля. Наприклад, Остання (3) - отримання третьому записі від кінця угруповання.

Якщо останній запис виходить за межі угруповання, то вважається, що записів немає. Наприклад, якщо записів 3, а потрібно отримати Остання (4), то вважається, що записів немає.

· Попередня (Previous). Необхідно отримати попередній запис угруповання. Після слова в дужках можна вказувати вираз, результат якого буде використовуватися як зміщення назад від поточної записи угруповання. Наприклад, Попередня (2) - отримання попередньої від попереднього запису.

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

При отриманні попередньої записи для підсумку по угрупованню вважається, що виходить перший запис.

· Наступна (Next). Необхідно отримати такий запис угруповання. Після слова в дужках можна вказувати вираз, результат якого буде використовуватися як зміщення вперед від поточної записи угруповання. Наприклад, Наступна (2) - отримання наступної від наступного запису.

Якщо такий запис виходить за межі угруповання, то вважається, що записів немає. Наприклад, якщо записів 3 і для третьої записи отримують Наступна (), то вважається, що записів немає.

При отриманні наступного запису для підсумку по угрупованню вважається, що записи немає.

· Поточна (Current). Необхідно отримати поточну запис.

При отриманні для підсумку по угрупованню виходить перший запис.

· ОгранічівающееЗначеніе  (BoundaryValue). Необхідність отримати запис за вказаною значенням. після слова ОгранічівающееЗначеніе в дужках потрібно вказати вираз, зі значення якого потрібно починати фрагмент, першого поля упорядкування.

Як записи буде виходити перша запис, значення поля упорядкування у якій більше або дорівнює вказаному значенню. Наприклад, якщо в якості поля упорядкування використовується поле Період, і воно має значення 01.01.2010, 01.02.2010, 01.03.2010, та потрібно отримати ОгранічівающееЗначеніе (ДатаВремя (2010, 1, 15)), То буде отримана запис з датою 01.02.2010.

Тип: рядок. Перераховуються вираження, розділені комами, які опісиваютправіла упорядкування. Якщо не вказана, то упорядкування виконується також як і у угруповання, для якої обчислюється вираз. Після кожного виразу можна вказати ключове слово Вік  (Для упорядкування за зростанням), спадання  (Для упорядкування по убування) і Автоупорядочіваніе  (Для упорядкування довідкових полів по полях, по яких потрібно упорядковувати об'єкт, на який виконується посилання). слово Автоупорядочіваніе  може використовуватися як зі словом Вік, Так і зі словом спадання.

Тип: рядок. аналогічно параметру Сортування. Застосовується для упорядкування ієрархічних записів. Якщо не вказано, компонувальник макета генерує упорядкування відповідно до упорядкуванням, зазначеним в параметрі Сортування.

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

· Окремо (Separately)  позначає, що для визначення попередньої і наступної записів використовується послідовність упорядкованих записів. Значення за замовчуванням.

· Разом (Together)  позначає, що попередня і наступні записи визначаються на підставі значень виразів упорядкування.

Наприклад, якщо отримана послідовність впорядкована за датою:

Дата ПІБ значення
1 01 січня 2001 року

Іванов М.

10
2 02 січня 2001 року Петров С. 20
3 03 січня 2001 року Сидоров Р. 30
4 04 січня 2001 року Петров С. 40

окремо, То:

§ попереднім записом до запису 3 буде запис 2.

Поточна, поточна  (Відповідно, параметри початок  і кінець), То для запису 2 цей фрагмент буде складатися з одного запису 2. Вираз дорівнюватиме 20.

Якщо значення параметра дорівнює разом, То:

§ попереднім записом до запису 3 буде запис 1.

§ якщо розрахунковий фрагмент визначається як Поточна, поточна  (Відповідно, параметри початок  і кінець), То для запису 2 цей фрагмент буде складатися із записів 2 і 3. Вираз ВичіслітьВираженіе ( «Сума (Значення)", Поточна, Поточна)  дорівнюватиме 50.

При вказівці значення параметра рівного разом, В параметрах початок  і кінець  не можна вказувати зміщення для позицій Перша, Остання, Попередня, Наступна.

ВичіслітьВираженіе ( "Сума (СуммаОборот)", "Перша", "Поточна")

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

ВичіслітьВираженіе ( "Курс", "Попередня")

список нових  функцій:

ВичіслітьВираженіеСГруппіровкойМассів(,) -

Функція повертає масив, кожен елемент якого містить результат обчислення виразу для угруповання за вказаною полю.

ВичіслітьВираженіеСГруппіровкойТабліцаЗначеній(,) -

Функція повертає таблицю значень, кожен рядок якої містить результат обчислення виразів для угруповання за вказаною полю

ЗначеніеЗаполнено() - Повертає Істина, якщо значення відмінно від значення даного типу за замовчуванням, відмінно від значення NULL, відмінно від порожньої посилання, відмінно від значення Не визначено. Для логічних значень здійснюється перевірка на значення NULL. Для рядків здійснюється перевірка на відсутність не пробільних символів

формат(,) - Отримати отформатированную рядок переданого значення. Форматна рядок задається відповідно до форматної рядком системи «1С: Підприємство».

підрядок(,,) - Ця функція призначена для виділення підрядка з рядка.

ДлінаСтрокі() - Функція призначена для визначення довжини рядка. Параметр - вираз строкового типу

рядок() - Якщо в якості параметра переданий масив, то функція повертає рядок, що містить рядкові подання всіх елементів масиву, розділених символами ";". Якщо в якості параметра передана таблиця значень, то функція повертає рядок, що містить рядкові подання всіх рядків таблиці значень, причому уявлення осередків кожного рядка поділяються символами ";", а рядки - сміволом перекладу рядка. Якщо у будь-якого елементу строкове представлення пусте, то замість його уявлення виводиться рядок.

Поділитися