Як в Скд задати поточну дату. Отримання запиту цін на дату документа. Операції над числами

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

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

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

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

Літерали

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

  • Рядок;
  • Число;
  • Дата;
  • Бульово.

Рядок

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

"Рядковий літерал"

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

Наприклад:

“Літерал ““у лапках“““

Число

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

10.5 200

Дата

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

Наприклад:

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

Бульово

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

Значення

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

Значення(Вигляду. Активний)

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

Унарний –

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

Продажі.

Унарний +

Ця операція не виконує над кількістю жодних дій. Наприклад:

Продажі.

Бінарний -

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

Залишки ІОбороти. Початковий Залишок – Залишки І Обороти. Кінцевий Залишок Залишки І Обороти.

Бінарний +

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

Залишки ІОбороти. Початковий Залишок + Залишки І Обороти. Оборот Залишки І Обороти. Початковий Залишок + 100 400 + 357

твір

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

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

Поділ

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

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

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

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

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

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

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

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

Номенклатура.Артикул + “: ”+ Номенклатура.Найменування

Подібно

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

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

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

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

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

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

"%АБВ[абвг]\_абв%" СПЕЦСИМВОЛ "\"

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

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

Рівно

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

Продажі.Контрагент = Продажі.НоменклатураОсновнийПостачальник

Не дорівнює

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

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

Менше

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

ПродажіПоточні.Сума< ПродажиПрошлые.Сумма

Більше

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

ПродажіПоточні.Сума > ПродажиМинули.Сума

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

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

ПродажіПоточні.Сума<= ПродажиПрошлые.Сумма

Більше або дорівнює

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

ПродажиПоточні.Сума >= ПродажиМинули.Сума

Операція В

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

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

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

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

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

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

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

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

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

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

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

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

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

Операція НЕ

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

НЕ Документ.Вантажоодержувач = Документ.Вантажовідправник

Операція І

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

Документ.Вантажоодержувач = Документ.Вантажовідправник І Документ.Вантажоодержувач = &Контрагент

Операція АБО

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

Документ.Вантажоодержувач = Документ.Вантажовідправник АБО Документ.Вантажоодержувач = &Контрагент

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

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

Сума

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

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

Кількість

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

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

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

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

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

Максимум

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

Максимум(Залишки.Кількість)

Мінімум

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

Мінімум(Залишки.Кількість)

Середнє

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

Середнє(Залишки.Кількість)

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

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

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

Вибір Коли Сума > 1000 Тоді Сума Інакше 0 Кінець

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

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

  • NULL (найнижчий);
  • Бульово;
  • Число;
  • Дата;
  • Рядок;
  • Посилальні типи

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

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

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

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

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

Є винятки:

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

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

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

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

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

Обчислити

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

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

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

Рівень

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

Рівень()

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

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

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

НомерПорядкуУгрупованні

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

НомерПорядкуУгрупованні()

Формат

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

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

Параметри:

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

Формат (Витратні Накладні. Сумма Док, "ЧДЦ = 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 (понеділок) до 7 (неділя).

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

Година

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

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

Хвилина

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

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

Секунда

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

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

Виразити

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

Параметри:

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

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

ЄNull

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

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

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

Функції спільних модулів

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

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

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

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

СКД 1С розшифровується як Система Компонування Даних. СКД 1С – це новий спосіб написання звітів у 1С, який дозволяє користувачу повністю налаштовувати звіт самостійно.

Мінус СКД 1С у тому, що його налаштування досить складні та не всі користувачі засвоюють їх швидко.

Написання звітів СКД вимагає вміння працювати із запитами в 1С, що ми обговорювали у .

Яка технологія створення звіту СКД 1С:

  • Написати запит 1С в СКД 1С, який забезпечує отримання даних
  • Вказати СКД 1С роль полів (обчислювані поля, ресурси)
  • Ввести налаштування СКД 1С за замовчуванням.

Користувачеві залишається можливість змінити безліч налаштувань за власним бажанням.

Якою є технологія створення звіту за попередніми технологіями:

  • Написати запит у програмі 1С
  • Розробити форму налаштувань (унікальну для звіту), яка дозволить змінювати лише вибрані програмістом N налаштувань
  • Написати код (програму) виконання запиту та побудови друкованої форми звіту.

Як Ви бачите, СКД 1С має значну перевагу як для користувача, так і для програміста:

  • Програміст – позбавляє написання програми для виконання звіту та налаштувань
  • Користувач – отримує значний доступ до установок звіту.

У всіх нових конфігураціях 1С всі звіти будуть використані лише на СКД 1С.

Давайте подивимося, як створити звіт на СКД 1С самому з нуля.

Створюємо звіт СКД 1С

У конфігураторі натисніть кнопку нового файлу (меню Файл/Новий).

Виберіть тип файлу Новий звіт.

Буде створено новий звіт. Введемо найменування - без пробілів для конфігурації, синонім для користувача.

Створимо основну схему СКД 1С.

Створюємо запит для звіту СКД 1С

Джерел даних для СКД 1С може бути безліч. Щоб використати, наприклад, два окремі запити – додайте спочатку «Набір даних – об'єднання», а потім кілька запитів.

У прикладі ми будемо використовувати простий запит.

Надаємо запит для отримання даних.

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

В результаті формування запиту, СКД 1С створить список доступних для використання полів і заповнить їм за промовчанням найменування.

Якщо найменування незручне, його можна змінити.

Зверніть увагу, що ми використовували у запиті параметр &ДатаПочатку. У СКД 1С є параметр (дата) за умовчанням під назвою &Період і Ви можете використовувати його.

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

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

Налаштування СКД 1С

На закладці Ресурси вкажемо ті поля, які сумуватимуться для підсумків (тобто цифри). У полів можна вказати функцію підсумовування. За замовчуванням це Сума (тобто підсумовувати цифри з усіх рядків і отримати разом), а можна використовувати Середнє, Кількість, Максимум і т.п.

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

Основне налаштування проводиться на закладці Установки:


Відкриємо його у режимі Підприємство. Зверніть увагу, що ми не займалися жодним програмуванням, малюванням форм та іншого. Щоб встановити параметр, натисніть кнопку Настройки.

Користувач бачить майже таку форму налаштувань, як і програміст.

Вуаль. Звіт працює.

Налаштування СКД 1С

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

Перетягніть Склад з Колонки в Рядки.

Перетягнемо номенклатуру на склад.

Натисніть кнопку ОК і сформуйте звіт. Ура – ми тільки-но змінили роботу звіту в режимі Програмування без програмування.

Натисніть правою кнопкою на Рядки (а можна на будь-яке з полів) і виберіть Нове угруповання.

Розкриємо поле Склад і виберемо одне з його полів, наприклад, Вид складу.

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

Якщо Ви додасте нове угруповання, але поле не виберете, це означає «Всі поля» (відображається як «Детальні записи»). Це так.

Схопіть лівою кнопкою миші наше угруповання (Склад/Номенклатура) та перетягніть його на нове угруповання (Вигляд складу).

Результат наших налаштувань.

Крім налаштувань, про дію яких легко здогадатися за їхньою назвою (Відбір, Сортування тощо) є закладка «Інші налаштування». Вона дозволяє дозволити чи заборонити такі речі як відображення підсумків, розташування угруповань у колонках тощо.

Зверніть увагу, що налаштування можуть бути задані для всього звіту (вибрано Звіт) або для певного рядка полів (виберіть рядок, наприклад Номенклатура, та виберіть Установки:Нонменклатура).

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

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

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

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

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

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

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

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

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

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

2. ВИЧИСЛИТИ ВИРАЗ ()

Синтаксис:

ОбчислитиВираз(,)

Опис:

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

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

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

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

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

Компонувальник макету при генерації виразу функції ОбчислитиВираз, якщо вираз упорядкування містить поля, які не можуть бути використані в групуванні, замінює функцію ОбчислитиВиразна 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С:Підприємство».

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

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

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

При досить частій зустрічається необхідність роботи зі змінними типу «Дата». У цій статті ми розглянемо основні прийоми – передача поточної дати, перевірка на пусте значення, довільна дата.

При написанні запитів часто потрібно порівнювати дані з поточною датою. У вбудованій мові 1С є функція ПоточнаДата(). Вона дозволяє визначити поточний час та дату на комп'ютері. Для виконання операцій з поточною датою необхідно передавати в запит значення цієї функції як параметр.

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

Приклад Запиту = Новий Запит;
Приклад Запиту. Текст = «
| ВИБРАТИ
| АвансовийЗвітПриєднаніФайли.Посилання

| Довідник.
|ДЕ
| АвансовийЗвітПриєднаніФайли.Дата< &ТекДата»;
ПрикладЗапроса.УстановитьПараметр(«ТекДата», ПоточнаДата());

Довільна дата

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

Зверніть увагу, що використовуючи цю функцію в прикладі вище, як вхідні параметри ми передавали лише три числа (рік, місяць, день). Останні три (година, хвилина, секунда) є обов'язковими і за відсутності замінюються на «0», тобто початок дня.

В рамках цього прикладу будуть отримані всі файли, які приєднані до авансових звітів до кінця минулого 2016 року. У зв'язку з цим ми вкажемо годину, хвилину та секунду, щоб порівнювати моментом часу «31 грудня 2016 р 23:59:59».

ВИБРАТИ
АвансовийЗвітПриєднаніФайли.Посилання
З
Довідник.АвансовийЗвітПриєднаніФайли ЯК АвансовийЗвітПриєднаніФайли
ДЕ
АвансовийЗвітПриєднаніФайли.Дата< ДАТАВРЕМЯ(2016, 12, 31, 23, 59, 59)

Порожня дата

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

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

Система компонування даних 1С 8.3 для початківців: перший звіт на СКД

Якщо ви не читали вступ до цього модуля - будь ласка, прочитайте його: .

Для виконання уроків вам знадобиться 1С 8.3 (не нижче 8.3.13.1644 ) .

Якщо у вас є встановлена ​​1С версії 8.3 - використовуйте її. Якщо ні - скачайте та встановіть навчальну версію, яку фірма 1С випускає спеціально для освітніх цілей: .

На вашому робочому столі має з'явитися такий ярлик:

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

Якщо ви її видалили - завантажте заново по наступній , розпакуйте і до списку баз.

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

Ставимо мету

Мета цього уроку- створити звіт, який у режимі користувача виводить список клієнтів із наступними полями:

  • Ім'я
  • Підлога
  • Улюблений колір клієнта.

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

Щоб сформувати такий звіт у 1С користувачеві, потрібно буде запустити базу в режимі користувача, відкрити цей файл і натиснути кнопку "Сформувати".

Поїхали!

Створюємо звіт

Запускаємо конфігуратор для бази "Гастроном":

З головного меню вибираємо пункт "Файл"->"Новий...":

Вибираємо "Зовнішній звіт":

Створюємо схему компонування даних усередині звіту

Відкрилося вікно створення зовнішнього звіту. Як ім'я вводимо: " Урок 1", а потім тиснемо кнопку " Відкрити схему компонування даних":

Запустився конструктор створення схеми. Погоджуємося з ім'ям за умовчанням " ОсновнаСхемаКомпонівкиДаних"і тиснемо кнопку" Готово":

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

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

Зараз ми знаходимося на закладці Набори данихНа ній і залишимося.

Пишемо запит через конструктор

Система компонування даних (скорочено СКД) вимагає від нас дані,які вона виводитиме користувачеві.

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

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

Наше завдання – написати в це поле текст запиту. Ви ще не забули, як це робиться?

Я вам підкажу:

У цьому запиті ми вибрали три поля (" Найменування", "Підлога"і" Улюблений колір") із таблиці " Довідник.".

Але не поспішайте писати цей текст у полі "Запит" вручну.

Зараз ми створимо той самий запит візуально, тільки за допомогою мишки. Цей спосіб називається " Конструктор запиту".

Щоб викликати цей конструктор, натисніть кнопку " Конструктор запиту...у верхній правій частині поля "Запит":

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

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

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

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

Вчинимо так само з полями " Підлога"і" Улюблений колір". Результат буде таким:

Натисніть кнопку "ОК", щоб вийти з конструктора запиту та побачимо, що текст запиту автоматично додався у полі "Запит".

Більше того на підставі тексту запиту 1С сама витягла імена полів (область вище за запит), які будуть використовуватися схемою компонування даних:

Тепер, коли ми склали запит, СКД знає, яким чином отримувати дані для звіту.

Налаштовуємо представлення даних

Залишилось якось візуалізувати ці данідля користувача як друкованої форми. І ось тут СКД може творити чудеса!

Щоб створити таке диво, перейдемо на вкладку " Налаштуванняі натиснемо кнопку конструктора налаштувань ( Чарівна паличка):

У вікні вкажемо тип звіту " Перелік"і натиснемо " Далі":

У наступному вікні виберемо (шляхом перетягування) поля, які потрібно буде відобразити в списку (перетягнемо всі доступні нам: " Улюблений колір", "Найменування"і" Підлога"):

Отримаємо такий результат і натиснемо кнопку " ОК":

Конструктор налаштувань закрився і з'явився пункт Детальні записи":

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

Зберігаємо звіт у вигляді файлу

Відкриємо пункт головного меню Файл"->"Зберегти":

Я збережу його на робочий стіл під ім'ям Урок 1":

Перевіряємо звіт у режимі користувача

Нарешті закриємо конфігуратор і зайдемо в нашу базу в режимі користувача:

Ім'я користувача "Адміністратор", пароля немає:

Через меню виберемо пункт " Файл"->"Відкрити...":

І вкажемо файл звіту (я зберігав його на робочий стіл під ім'ям "Урок1.erf":

Відкрилася форма звіту, натисніть кнопку " Сформувати":

Готово! Ось вона наша друкована форма зі списком клієнтів, їх улюбленим кольором та підлогою:

Друковану форму можна легко роздрукувати. Для цього достатньо вибрати в меню пункт " Файл"->"Друк...":

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

учнів - відповідаю поштою, але спочатку загляньте в.

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

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