Інші розглянемо зараз.

Функції роботи з рядками у запитах 1С

Функцій та операторів для роботи з рядковими даними у запитах 1С небагато.

По-перше, рядки у запитах можна складати. Для цього використовується оператор «+»:

Запит. Текст = "ВИБРАТИ
Рядок: " + Джерело.Найменування
;

По-друге, можна виділити частину рядка. Для цього використовується функція ПІДСТРОКУ.Функція аналогічна до вбудованої мови 1С. Має три параметри:

  1. Рядок-джерело.
  2. Номер символу, з якого повинен починатися рядок, що виділяється.
  3. Кількість символів.

Запит. Текст = "ВИБРАТИ
ПІДСТРОКУ("
Рядок: ", 4, 3) ЯК Результат"; // Результат: ока

Функція Є NULL

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

Оскільки NULL не є ні нулем, ні порожнім рядком, ні навіть значенням НЕ визначено,його часто буває корисно замінювати на якийсь корисніший тип даних. Для цього і призначено функцію Є NULL.

Вона має два параметри:

  1. Перевірене значення.
  2. Значення, на яке потрібно замінити перший параметр, якщо він дорівнював NULL.

Запит. Текст = "ВИБРАТИ
Є NULL (Джерело. Залишок, 0) ЯК Залишок"
; // Якщо в результаті запиту поле залишок = NULL,
// воно заміниться на 0, і з ним можна буде виконувати математичні дії

Функції ПРЕДСТАВЛЕННЯі ПОДАННЯ ПОСИЛАННЯ

Ці функції призначені для отримання рядкових уявлень різних значень. Тобто, вони перетворять посилання, числа, бульова тощо. у звичайний текст. Різниця між ними в тому, що функція ПРЕДСТАВЛЕННЯперетворює на текст (рядок) будь-які типи даних, а функція ПОДАННЯ ПОСИЛАННЯ— лише посилання, а решта значень повертає як є, не перетвореними.

Запит. Текст = "ВИБРАТИ
ПРЕДСТАВЛЕННЯ (ІСТИНА) ЯК Бульово,
ПОДАННЯ (4) ЯК Число,
ПОДАННЯ (Джерело.Посилання) ЯК Посилання,
ПРЕДСТАВЛЕННЯ(ДАТАЧАС(2016,10,07)) ЯК Дата"
;
// Бульово = "Так", Число = "4", Посилання = "Документ Видатковий касовий ордер № ... від ..."
// Дата="07.10.2016 0:00:00"

Запит. Текст = "ВИБРАТИ
ПОДАННЯ ПОСИЛАННЯ (ІСТИНА) ЯК Бульово,
ПОДАННЯ ПОСИЛАННЯ (4) ЯК Число,
ПОДАННЯ ПОСИЛАННЯ (Джерело.Посилання) ЯК Посилання,
ПОДАННЯ ПОСИЛАННЯ (ДАТАЧАС(2016,10,07)) ЯК Дата"
;
// Бульово = ІСТИНА, Число = 4, Посилання = "Документ Видатковий касовий ордер № ... від ..."
// Дата=07.10.2016 0:00:00

Функції ТИПі ТИЗНАЧЕННЯ

Функція ТИПповертає тип даних платформи 1С:Підприємство.

Запит. Текст = "ВИБРАТИ
ТИП (Число),
ТИП (Рядок),
ТИП (Документ. Витратний Касовий Ордер)
;

Функція ТИЗНАЧЕННЯповертає тип переданого до неї значення.

Запит. Текст = "ВИБРАТИ
ТИПЗНАЧЕННЯ (5) ЯК Число,
ТИП ("
"Рядок" ") ЯК Рядок,
ТИП (Джерело.Посилання) ЯК Довідник
З Довідник.Джерело ЯК Джерело"
;
// Число = Число, Рядок = Рядок, Довідник = Довідник Посилання.

Ці функції зручно застосовувати, наприклад, коли потрібно з'ясувати, чи є отримане в запиті поле значенням якогось типу. Наприклад, отримаємо контактну інформацію контрагентів з регістру відомостей Контактна інформація (там зберігаються контакти не тільки контрагентів, а й організацій, фізичних осіб тощо):

Запит. Текст = "ВИБРАТИ

З

ДЕ
ТИПЗНАЧЕННЯ(КонтактнаІнформація.Об'єкт) = ТИП(Довідник.Контрагенти)"
;

Функція ЗНАЧЕННЯ

Функція Значеннядозволяє використовувати в запиті конфігураційні об'єкти 1С безпосередньо, без застосування .

Доповнимо попередній приклад ще однією умовою. Необхідно отримати лише телефони контрагентів.

Запит. Текст = "ВИБРАТИ
Контактна Інформація.
З
РеєстрДовідок.КонтактнаІнформація ЯК КонтактнаІнформація
ДЕ
ТИПЗНАЧЕННЯ(КонтактнаІнформація.Об'єкт) = ТИП(Довідник.Контрагенти)
І КонтактнаІнформація.Тип = ЗНАЧЕННЯ(Перерахування.ТипиКонтактноїІнформації.Телефон)"
;

Слід зазначити, що цю функцію можна використовувати з певними значеннями, тобто. зі значеннями, яких можна звернутися безпосередньо з конфігуратора. Тобто функція ЗНАЧЕННЯне можна використовувати з елементами довідників, створеними користувачами, але може працювати з перерахуваннями, з визначеними елементами довідників, зі значеннями ПорожнєПосилання.

Оператор ПОСИЛАННЯ

Оператор ПОСИЛАННЯпризначений для перевірки значень, одержуваних запитом, на належність до певного типу посилань. Це завдання можна виконати за допомогою функцій ТИПі ТИЗНАЧЕННЯ(які мають більш широку сферу застосування та були розглянуті вище).

Наприклад, завдання вибору контактної інформації контрагентів можна було й так:

Запит. Текст = "ВИБРАТИ
Контактна Інформація.
З
РеєстрДовідок.КонтактнаІнформація ЯК КонтактнаІнформація
ДЕ
КонтактнаІнформація.Об'єкт ПОСИЛАННЯ Довідник.Контрагенти"
;

Оператор ВИРАЗИТИ

Оператор ВИРАЗИТИвикористовується у запитах 1С у двох випадках:

  • коли необхідно змінити характеристики примітивного типу;
  • коли потрібно з поля зі складеним типом даних зробити поле з одиночним типом.

До примітивних типів даних належать: число, рядок, дата, бульова.Деякі з цих типів даних мають додаткові характеристики. Тип Числомає довжину та точність, тип Рядокдовжину чи необмеженість.

Оператор ВИРАЗИТИдозволяє змінювати тип даних, саме додаткові характеристики. Наприклад, він може з рядка з необмеженою довжиною зробити рядок з обмеженою довжиною. Це буває корисним, якщо потрібно згрупувати результати запиту по такому полю. Виконувати угруповання по полях з необмеженою довжиною не можна, тому ми його перетворимо на рядок із довжиною 200 символів.

Запит. Текст = "ВИБРАТИ
КІЛЬКІСТЬ (РІЗНІ ВСТУП ТОВАРІВ Послуг. Посилання) ЯК Посилання
З
Документ.Надходження ТоварівПослуг ЯК НадходженняТоварівПослуг
ЗГРУПУВАТИ ПО
ВИРАЗИТИ(НадходженняТоварівПослуг.Коментар ЯК РЯДКУ(200))"
;

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

Запит. Текст = "ВИБРАТИ
ВИРАЗИТИ(Рух ТоварівОбороти.Розпорядження ЯК Документ.ЗамовленняКлієнта).Дата ЯК ДатаЗамовлення,
Рух ТоварівОбороти.Номенклатура
З
РегістрНакопичення.Рух Товарів.Обороти ЯК РухТоварівОбороти
ДЕ
Рух ТоварівОбороти.Розпорядження ПОСИЛАННЯ Документ.ЗамовленняКлієнта"
;

Оператори ВИБІРі Є NULL

Оператор ВИБІРаналогічний оператору ЯКЩОу вбудованій мові 1С, але має дещо урізаний функціонал.

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

Запит. Текст = "ВИБРАТИ
Контактна Інформація.
ВИБІР
КОЛИ ТИПЗНАЧЕННЯ(КонтактнаІнформація.Об'єкт) = ТИП(Довідник.Контрагенти)
ТОДИ
Контрагент "
Інакше ВИБІР
КОЛИ ТИПЗНАЧЕННЯ (Контактна Інформація. Об'єкт) = ТИП (Довідник. Фізичні Особи)
ТОДИ
Фіз особа"
Інакше " Хтось інший "
КІНЕЦЬ
КІНЕЦЬ ЯК Власник
З
РеєстрВідомостей.КонтактнаІнформація ЯК КонтактнаІнформація"
;

Як видно з прикладу, у конструкції ВИБІРзавжди є умова після слова КОЛИ;значення, яке застосовується, якщо умова виконується, після слова ТОДІі значення, яке застосовується, якщо умова не виконується, після слова Інакше.Усі три елементи конструкції ВИБІРє обов'язковими. Опустити елемент Інакше, так само, як це робиться при використанні оператора ЯКЩОу вбудованій мові 1С, не можна. Також у оператора ВИБІРвідсутній аналог конструкції Інакше, Зате можна вкласти один ВИБІРв іншій, як і було зроблено у нашому прикладі.

Оператор Є NULLвикористовується в конструкції ВИБІРпорівняння поля запиту з типом NULL.

Запит. Текст = "ВИБРАТИ
ВИБІР
КОЛИ Значення Є NULL ТОДІ 0
Інакше значення
КІНЕЦЬ"
;

Крім того, оператор Є NULLможна використовувати в умовах запиту, наприклад, у пропозиції ДЕ.

Несумісні типи «ВИРАЗИТИ»— таке повідомлення з'являється, коли програміст 1С 8.2 або 8.3 намагається порівняти два різних типу.

Функція Виразити() дозволяє привести значення поля запиту 1С до певного типу. Це може знадобитися у двох випадках:

1. Отримати необхідну розрядність чи кількість потрібну кількість символів рядкового значення. Кількість символів полів необмеженого типу доводиться обмежити через певні особливості.

Отримайте 267 відеоуроків з 1С безкоштовно:

Наприклад:

ВИРАЗИТИ(Номенклатура.Коментар ЯК РЯДКУ(300))
ВИРАЗИТИ(Номенклатура.Ціна ЯК ЧИСЛО(15, 2)) ЯК Сума

2. Перетворити поле складеного типу на поле з одним типом. Це може знадобитися з метою. Якщо в типізоване поле потрапить значення іншого типу, система поверне NULL, тому завжди необхідно додатково встановлювати умову в секції «ДЕ», обмежуючи його оператором ПОСИЛАННЯ.

Наприклад:

ВИБРАТИ

ВИРАЗИТИ(Продажи.Реєстратор ЯК Документ.Реалізація)

З

ДЕ Продажі.Реєстратор ПОСИЛАННЯ Документ.Реалізація

Як уникнути помилок

Помилки типу «Несумісні типи ВИРАЗИТИ …» можуть виникати при неправильному використанні синтаксису.

Наприклад, конструкція «ВИРАЗИТИ(«123» ЯК ЧИСЛО(5, 2)) ЯК Сума» вважається помилковою, оскільки у запиті не можна штатними методами перетворювати з одного типу на інший.

Якщо Ви починаєте вивчати програмування 1С, рекомендуємо наш безкоштовний курс (не забудьте

У цій статті розберемо можливості наведення типів мовою запитів 1С, які надає функція «Виразити».
Розглянемо кілька варіантів застосування цієї функції.
І перший варіант – заокруглення чисел.

Для цього необхідно використати функцію Виразити у наступному форматі:

Виразити(<Число>як Число(<ДлинаЧисла>,<Точность>))

Де:
Число- поле, параметр яке потрібно округлити
ДовжинаЧисла- максимальна довжина числа
Точність- Точність округлення числа

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

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

Для того, щоб він працював, необхідно поле необмеженої довжини привести в рядок з певною довжиною, робиться це за допомогою функції Виразити в наступному форматі:

Виразити(<Строка>як Рядок(<ДлинаСтроки>)

Де
ДовжинаРядки– максимальна довжина, до якої буде наведено рядок.
Переробимо запит: будемо в умові наводити необмежений рядок до рядка з певною довжиною. Тоді жодних помилок не буде.

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

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

Виразити(<Документ>як документ.<ИмяТаблицы>)
Виразити(<Справочник>як Довідник.< ИмяТаблицы >)
.

Де
Ім'яТаблиці- Назва об'єкта в .

Завжди використовуйте функцію висловити, коли працюєте зі складовими типами, це суттєво оптимізує запит.

Якщо Ви все ще плаваєте в конструкціях мови запитів, і у Вас викликають труднощі навіть найпростіші запити, то рекомендую вам мій курс «Запити в 1С від новачка до профі». Де ці та багато інших питань розглядаються докладніше.

У чому особливість цього курсу:
Курс розрахований на тих, хто не знайомий із мовою запитів у 1С;
Навчальний матеріал грамотно скомпонований та простий у освоєнні;
Декілька десятків уроків;
Корисні приклади;
Усі уроки викладені зрозумілою та простою мовою

Для моїх читачів купон на знижку 25%: hrW0rl9Nnx

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

Можете перерахувати будь-яку суму безпосередньо:
Яндекс.Гроші — 410012882996301
Web Money - R955262494655

Вступайте до моїх груп.

Механізмів для роботи з рядками у запитах 1С мало. По-перше, рядки можна складати. По-друге, від рядка можна взяти підрядок. По-третє, рядки можна порівнювати, зокрема за шаблоном. Ось мабуть і все, що можна робити з рядками.

Складання рядків

Для додавання рядків у запиті використовується операція «+». Складати можна лише рядки обмеженої довжини.

ВИБРАТИ "Найменування: " + Контрагенти.Найменування ЯК Колонка1 З Довідник.Контрагенти ЯК Контрагенти ДЕ Контрагенти.Посилання = &Посилання

Функція Підстроювання

ПІДСТРОКУ(<Строка>, <НачальнаяПозиция>, <Длина>)

Аналог функції Серед () з об'єктної моделі. Функція Підстрока() може застосовуватися до даних рядкового типу та дозволяє виділити фрагмент <Строки> , що починається з номер символ <НачальнаяПозиция> (символи в рядку нумеруються з 1) та довжиною <Длина> символів. Результат обчислення функції має рядковий тип змінної довжини, причому довжина вважатиметься необмеженою, якщо <Строка> має необмежену довжину та параметр <Длина> не є константою чи перевищує 1024.

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

Увага!Використання функції ПІДСТРОКУ() з метою приведення рядків необмеженої довжини до рядків обмеженої довжини не рекомендується. Замість неї краще використовувати операцію наведення типу ВИРАЗИТИ().

Функція Подібно

Якщо потрібно переконатися, що рядковий реквізит відповідає певним критеріям, ми його порівнюємо:

ВИБРАТИ Контрагенти.Найменування ЯК Колонка1 З Довідник.Контрагенти ЯК Контрагенти ДЕ Контрагенти.Найменування = "Газпром"

А що, якщо потрібно хитріше порівняння? Не просто на рівність чи нерівність, а на подібність до певного шаблону? Ось саме для цього і створена функція подібно.

ПОДІБНО — Оператор перевірки рядка на зразок шаблону. Аналог LIKE у SQL.

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

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

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

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

У цій статті ми хочемо обговорити з Вами всі функції мови запитів 1с, а також конструкції мови запитів. Чим відрізняється функція від конструкції? Функція викликається з дужками та можливими параметрами у них, а конструкція пишеться без дужок. Безумовно всі конструкції та функції мови запитів 1сроблять процес отримання даних гнучким та багатофункціональним. Дані функції та конструкції застосовні до полів запиту, а деякі також застосовні за умов.

Функції мови запитів 1с

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

1. Функція ДАТА ЧАС- Ця функція створює константне поле з типом "Дата".

Синтаксис: ДАТА ЧАС(<Год>,<Месяц>,<День>,<Час>,<Минута>,<Секунда>)

Приклад використання:

2. Функція Різноманітність- Повертає різницю двох дат в одному з вимірювань (рік, місяць, день, година, хвилина, секунда). Вимірювання передається у параметрі.

Синтаксис: РІЗНІСТЬДАТ(<Дата1>, <Дата2>, <Тип>)

Приклад використання:

Запит.Текст = "ВИБРАТИ | РІЗНЕСТЬДАТ(ДАТАВРЕМЯ(2015, 4, 17), ДАТАВРЕМЯ(2015, 2, 1), ДЕНЬ) | ЯК Колводнів";

3. Функція ЗНАЧЕННЯ- задає константне поле з наперед визначеним записом з бази даних, також можна отримати порожнє посилання будь-якого типу.

Синтаксис: ЗНАЧЕННЯ(<Имя>)

Приклад використання:

Запит.Текст = "ВИБРАТИ //зумовлений елемент | ЗНАЧЕННЯ(Довідник.Валюти.Долар) ЯК Долар, //порожнє посилання | ФізОсоба) ЯК ФізОбличчя, / / ​​зумовлений рахунок |

4. Функція ВИБІР- Перед нами аналог конструкції ЯКЩО який використовується в коді, тільки ця використовується в запитах 1С.

Синтаксис: ВИБІР КОЛИ<Выражение>ТОДІ<Выражение>Інакше<Выражение>КІНЕЦЬ

Приклад використання:

Запрос.Текст = //якщо сума більше 7500, тоді має бути знижка 300 рублів, //тому якщо умова спрацьовує то функція //повертає Сума - 300 //інакше запит поверне просто Сума "ВИБРАТИ | ВИБІР | КОЛИ ТЧ Надходження.Сума > 7500 | ТОДІ ТЧНадходження.Сума - 300 | Інакше ТЧНадходження.Сума |

5. Функція ВИРАЗИТИ- дозволяє виразити константне поле певним типом.

Синтаксис: ВИРАЗИТИ(НазваПоля ЯК НазваТипу)

Приклад використання:

Запит.Текст = "ВИБРАТИ РІЗНІ | Продажі.Реєстратор.Номер, | ВИБІР | КОЛИ Продажі.Реєстратор ПОСИЛАННЯ Документ.Видаткова | Реалізація | ТОДИ ВИРАЗИТИ(Продажи.Реєстратор ЯК Документ.Реалізація) | КІНЕЦЬ | ... | КІНЕЦЬ ЯК Номер | З | РеєстрНакопичення.Закупівлі ЯК Закупівлі";

Є ще варіант використання функції ВИРАЗИТИ в полях змішаних типах, де такі зустрічаються? Найпростіший приклад це "Реєстратор" у будь-якого регістру. То навіщо нам може знадобитися уточнювати тип у реєстраторі? Давайте розглянемо ситуацію, коли ми з реєстратора вибираємо поле "Номер", з якої таблиці буде обраний номер? Правильна відповідь із усіх! Тому щоб наш запит працював швидко, слід вказувати явний тип за допомогою функції ВИРАЗИТИ

Приклад використання:

Запит.Текст = "ВИБРАТИ | ВИРАЗИТИ(Номенклатура.Коментар ЯК Рядок(300)) ЯК Коментар, | ВИРАЗИТИ(Номенклатура.Сума ЯК Число(15,2)) ЯК Сума |З | Довідник.Номенклатура ЯК

6. Функція ISNULL(альтернативне написання Є NULL) - якщо поле має тип NULL, воно замінюється на другий параметр функції.

Синтаксис: Є NULL (<Поле>, <ПодставляемоеЗначение>)

Приклад використання:

Також відзначимо що тип NULL бажано ЗАВЖДИ замінювати якесь значення, т.к. порівняння з типом NULL завжди дає брехня навіть якщо ви порівнюєте NULL з NULL. Найчастіше значення NULL утворюються внаслідок з'єднання таблиць (всі види з'єднань крім внутрішнього).

Запит.Текст = //Вибираємо всю номенклатуру і залишки по ній //якщо залишокв але якоїсь номенклатури немає то буде поле //NULL яке заміниться значенням 0 "ВИБРАТИ | Ном.Посилання, | Залишок |З |Довідник.Номенклатура ЯК Ном |Ліве З'єднання РеєстрНакопичення.ТовариНаСкладах.Залишки ЯК ТовариНаСкладахЗалишки |ПЗ (ТовариНаСкладахЗалишки.Номенклатура = Ном.Посилання)";

7. Функція ПРЕДСТАВЛЕННЯ- дозволяє одержати подання поля запиту.

Синтаксис: ПРЕДСТАВЛЕННЯ(<НаименованиеПоля>)

Приклад використання:

Запит.Текст = "ВИБРАТИ | ПРЕДСТАВЛЕННЯ(ВільніЗалишкиЗалишки.Номенклатура) ЯК Номенклатура, | ПРЕДСТАВЛЕННЯ(ВільніЗалишкиЗалишки.Склад) ЯК Склад, |

Конструкції у мові запитів 1с

Вище ми розглянули з Вами функції мови запитів 1с, тепер настав час розглянути конструкції у мові запитів 1с, вони не менш важливі та корисні, приступаємо.

1. Конструкція ПОСИЛАННЯ- являє собою логічний оператор перевірки типу посилання. Найчастіше зустрічається під час перевірки поля складеного типу на конкретний тип. Синтаксис: ПОСИЛАННЯ<Имя таблицы>

Приклад використання:

Запит.Текст = //якщо тип значення реєстратора документ Прибуткова, //тоді запит поверне "Надходження товарів", інакше "Реалізація товарів" "ВИБРАТИ | ВИБІР | КОЛИ Залишки.Реєстратор ПОСИЛАННЯ Документ. ""Витрата"" | КІНЕЦЬ ЯК Види руху | З | Реєстр Накопичення.

2. Конструкція МІЖ- Цей оператор перевіряє чи входить значення у вказаний діапазон.

Синтаксис: МІЖ<Выражение>І<Выражение>

Приклад використання:

Запрос.Текст = //отримаємо всю номенклатуру код якої лежить в діапазоні від 1 до 100 "ВИБРАТИ | Номенклатура. Посилання | З | Довідник. Номенклатура ЯК Номенклатура | ДЕ | Номенклатура.

3. Конструкція В та В ІЄРАРХІЇ- перевіряють чи знаходиться значення в списку, що передається (як списку можуть передаватися масиви, таблиці значень і т.д.). Оператор В ІЄРАРХІЇ дозволяє переглядати ієрархію (приклад використання План Рахунків).

Синтаксис: В(<СписокЗначений>), В ІЄРАРХІЇ(<СписокЗначений>)

Приклад використання:

Запрос.Текст = // вибираємо всі субрахунки рахунку "ВИБРАТИ | Госпрозрахунковий. Посилання ЯК Рахунок | З | План Рахунок.Госпрозрахунковий ЯК Хозрозрахунковий | ДЕ | Госпрозрахунковий.

4. Конструкція ПОДІБНО- Ця функція дозволяє нам порівнювати рядок із шаблоном рядка.

Синтаксис: ПОДІБНО "<ТекстШаблона>"

Варіанти шаблону рядка:

% - Послідовність, що містить будь-яку кількість довільних символів.

Один символ довільний.

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

[^...] - будь-який одиночний символ, або послідовність символів з перелічених усередині квадратних дужок крім тих, які перелічені за значком заперечення.

Приклад використання:

Запрос.Текст = //знайдемо всю номенклатуру яка містить корінь ТАБУР і починається //або з маленької або з великої літери т "ВИБРАТИ | Номенклатура.Посилання |З | Довідник.Номенклатура ЯК Номенклатура |ДЕ | Товари.Найменування ПОДІБНО ""[Тт ]абур%""";

5. Конструкція ДОЗВОЛЕНІ- цей оператор дозволяє вибрати лише записи з БД, куди викликає має право читання. Ці права налаштовуються лише на рівні записів (RLS).

Синтаксис: ДОЗВОЛЕНІ пишеться після ключового слова ВИБРАТИ

Приклад використання:

Запит.Текст = "ВИБРАТИ ДОЗВОЛЕНІ | Контрагенти.Посилання |З | Довідник.Контрагенти ЯК Контрагенти";

6. Конструкція РІЗНІ- дозволяє вибрати записи, у яких відсутні повторні записи.

Синтаксис: РІЗНІ пишеться після ключового слова ВИБРАТИ

Приклад використання:

Запрос.Текст = // вибирає записи на які є права у читача "ВИБРАТИ РІЗНІ | Контрагенти. Найменування | З | Довідник. Контрагенти ЯК Контрагенти";

Також Конструкція РІЗНІ може використовуватися з оператором ДОЗВОЛЕНІ та іншими операторами.

Приклад використання:

Запрос.Текст = // вибирає різні записи на які є права у читача "ВИБРАТИ ДОЗВОЛЕНІ РІЗНІ | Контрагенти. Найменування | З | Довідник. Контрагенти ЯК Контрагенти";

7. Конструкція ПЕРШІ- вибирає вказану в параметрі кількість записів із результату запиту.

Синтаксис: ПЕРШІ<число>

Приклад використання:

Запит. Текст = // Вибирають перші 4 номери ВМД з довідника "ВИБРАТИ ПЕРШІ 4 | Номери ВМД. Посилання | З | Довідник.

8. Конструкція ДЛЯ ЗМІНИ- дозволяє заблокувати таблицю, працює лише у транзакціях (актуально лише автоматичних блокувань).

Синтаксис: ДЛЯ ЗМІНИ<НаименованиеТаблицы>

Приклад використання:

Запит.Текст = "ОБРАТИ |

9. Конструкція ПОРЯДОЧИТИ ПО- впорядковує дані щодо певного поля. Якщо полем є посилання, то при установці прапора Автоупорядкуваннябуде відбуватися сортування за поданням посилання, якщо прапор вимкнено, то посилання сортуються за старшинством адреси посилання в пам'яті.

Синтаксис: ВПОРЯДКУВАТИ ЗА<НаименованиеПоля>Автоупорядкування

Приклад використання:

Запит.Текст = "ВИБРАТИ | Вільні Залишки Залишки. Номенклатура ЯК Номенклатура, | Вільні Залишки Залишки. отрутування";

10. Конструкція ЗГРУПУВАТИ ПО- використовується для угрупування рядків запиту за певними полями. Числові поля повинні використовуватись із будь-якою агрегатною функцією.

Синтаксис: ЗГРУПУВАТИ ПО<НаименованиеПоля1>, .... , <НаименованиеПоляN>

Приклад використання:

Запит.Текст = "ВИБРАТИ | ТовариНа Складах.Номенклатура ЯК Номенклатура, | ТовариНаСкладах.Склад, | на складах.

11. Конструкція МАЮЧІ- дозволяє застосувати агрегатну функцію умови вибірки даних, схожа на конструкцію ДДЕ.

Синтаксис: МАЮЧІ<агрегатная функция с условием>

Приклад використання:

Запит.Текст = // вибирає згруповані записи де поле ВНаявності більше 3 " ВИБРАТИ | ТовариНаСкладах.Номенклатура ЯК Номенклатура, | ТовариНаСкладах.Склад, | ПЗ | ТовариНаСкладах.Номенклатура, | ТовариНаСкладах.Склад | |МІЮЧІ | СУМА(ТовариНаСкладах.ВНаявності) > 3" ;

12. Конструкція ІНДЕКСУВАТИ ПО- Використовується для індексації поле запиту. Запит з індексацією довше виконується, але прискорює пошук індексованих полів. Можна використовувати лише у віртуальних таблицях.

Синтаксис: ІНДЕКСУВАТИ ПО<Поле1, ... , ПолеN>

Приклад використання:

Запрос.Текст = " ВИБРАТИ | Тз. Найменування ОС, | Тз. Номер Папки, | Тз. КодОС, | Тз. Термін, | Тз. Тип | ПОМІСТИТИ Дані Тз | .КодОС";

13. Конструкція ДЕ- дозволяє накласти умову будь-які поля вибірки. В результаті потраплять записи, що тільки задовольняють умові.

Синтаксис: ДЕ<Условие1 ОператорЛогСоединения УсловиеN>

Приклад використання:

Запит.Текст = //вибираються всі записи у яких КомпенсаціяЗалишок<>0 і //СуммаДляРозчКомпОстаток > 100 " ВИБРАТИ | КомпенсаціяРПостатки.Контрагент, | КомпенсаціяРПостатки.Дитина, | КомпенсаціяРпостатки.КомпенсаціяЗалишок, | КомпенсаціяРпостач. . Залишки ЯК КомпенсаціяРПОстатки |ДЕ |КомпенсаціяРПОстатки.КомпенсаціяЗалишок<>0 | І КомпенсаціяРПОстатки.СуммаДляРозчКомпОстаток > 100" ;

14. Конструкція ПІДСУМКИ... ЗА ЗАГАЛЬНІ- застосовується для підрахунку результатів, у конструкції вказуються поля якими вважатимуться підсумки і агрегатні функції які застосовуються до підсумковим полям. При використанні підсумків на кожне поле наступне після конструкції ПІДСУМКИ проводиться групування даних. Є необов'язкова конструкція ЗАГАЛЬНІ, її використання також забезпечує додаткове угруповання. Приклад результату запиту ви побачите нижче.

Синтаксис: ПІДСУМКИ<АгрегатнаяФункция1, ... , АгрегатнаяФункцияN>ПЗ<ОБЩИЕ> <Поле1, ... , ПолеN>

Приклад використання:

Запит.Текст = "ВИБРАТИ | Розрахунки.ДоговірКонтрагенту.ВидДоговіру ЯК ВидДоговіру, | Розрахунки.ДоговірКонтрагенту ЯК Договір, | Розрахунки.Контрагент, | ГІ |СУМА(Залишок) |ПО | ЗАГАЛЬНІ, | ВидДоговору ";

На малюнку обведені угруповання які утворилися в ході виконання запиту, найвище відноситься до секції ЗАГАЛЬНІ, а друге до поля ДоговірКонтрагентуВідДоговіру.