Перевірка тип значення 1с. Як перевірити тип значення документа, довідника

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

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

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

Мова запитів 1С 8.3 для програмістів-початківців: функції та оператори для роботи з типами (ТИПЗНАЧЕННЯ, ТИП, ПОСИЛАННЯ, Є NULL, ВИРАЗИТИ)

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

У мові запитів існує цілий клас функцій та операторів до роботи з типами реквізитів. Давайте розглянемо їх.

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

Ця функція приймає один параметр (значення) та повертає його тип. Для описаного на зображенні (вище) реквізиту Смакдовідника Їжаповернеться таке:

А тепер давайте розглянемо реквізит Відмінна ознакау довідника Міста:

Ви бачите, що цей реквізит може мати один із кількох типів: Рядок, Довідник.Смаки, Довідник.. Такий тип реквізитів називається СКЛАДНИМ.

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

І лише після нашого вибору дозволить ввести значення вибраного типу.

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

Ви можете переконатися в цьому самі клацнувши по елементах довідника Містав режимі 1С: Підприємство. Ви читаєте ознайомлювальну версію уроку, повноцінні уроки .

Тут значення відмітної ознаки є елементом довідника Смаки:

Тут рядком:

А тут взагалі є елементом довідника кольори:

Ось які можливості відкриває перед нами складовий тип даних!

Цікаво, як поведеться функція ТИЗНАЧЕННЯна реквізиті ВідмітнийЕлемент, що має складовий тип даних:

Це дуже цікаво. Давайте розбиратися з кожним рядком окремо.

Тип значення відмітної ознаки для елемента Росія дорівнює NULL. Ми вперше стикаємося із цим типом. Значення цього типу використовуються виключно для визначення відсутнього значення при роботі з базою даних.

Так і є, адже елемент Росія є групою, а не звичайним елементом довідника Містатому у нього немає поля Відмінна ознака. А тип у відсутнього значення, як ми прочитали вище, завжди дорівнює NULL.

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

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

Для Воронежа тип ознаки дорівнює Рядок, тому що значення введене в базі є звичайним рядком.

Індія знову група, тому значення немає. А тип у відсутнього значення, як ми пам'ятаємо, дорівнює NULL.

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

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

Функція ТИП

Вона приймає лише один параметр - ім'я примітивного типу ( РЯДОК, ЧИСЛО, ДАТА, Бульова), або ім'я таблиці, тип посилання якої необхідно одержати.

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

Звучить туманно, чи не так?

Давайте розглянемо застосування цієї конструкції і все відразу стане на свої місця.

Нехай нам потрібно відібрати всі записи довідника Міста, у яких складовий реквізит Відмінна ознакамає значення типу РЯДОК:

Тепер давайте відберемо всі записи, які мають значення реквізиту Відмінна ознакає посиланнями на елементи довідника кольори(Таблиця Довідник.):

Відступ

Як ви пам'ятаєте, деякі елементи довідника Містане мають реквізиту Відмінна ознака. Функція ТИЗНАЧЕННЯдля таких елементів видає NULL.

Як можна зробити вибір таких елементів у запиті? Для цього передбачено спеціальний логічний оператор Є NULL(Не плутати з функцією Є NULL, що ми розглянемо нижче). Ви читаєте ознайомлювальну версію уроку, повноцінні уроки .

Ось приклад його використання:

Чудово. Але ви помітили, що тут немає елемента Сан-Паулу, тип значення реквізиту Відмінна ознакаякого також видавав NULL. Чому так сталося?

А справа в тому, що ситуація для груп (Росія, Індія, Бразилія), для яких заповнення реквізиту Відмінна ознаканеможливо в принципі, тому що його у них немає зовсім, відрізняється від ситуації для елемента Сан-Паулу, для якого заповнення реквізиту можливе, але воно просто не заповнене і одно, як ми пам'ятаємо, спеціального значення НЕ ВИЗНАЧЕНЕ.

Щоб відібрати всі записи, які мають реквізит Відмінна ознакаприсутній, але не заповнений слід використовувати іншу конструкцію:

Але порівняння з НЕВИЗНАЧЕНО визначення порожніх (не заповнених) реквізитів працюватиме лише складових типів.

До речі, у логічного оператора Є NULL форма заперечення виглядає так:

Логічний оператор ПОСИЛАННЯ

Наприклад, давайте виберемо з довідника Місталише ті записи, у яких значення складеного реквізиту Відмінна ознакає посиланням на елемент довідника Смаки:

Як ви пам'ятаєте, це завдання ми могли б вирішити використовуючи ТИЗНАЧЕННЯі ТИП:

Функція ЄNULL

Функція призначена для заміни значення NULLінше значення.

Ми пам'ятаємо, що значення NULLповертається у тому випадку, якщо запитуваний реквізит (поле, властивість) немає.

Як, наприклад, реквізит Відмінна ознакадля груп довідника Міста:

Функція Є NULLдопоможе нам вивести інше значення у тому випадку, якщо це значення дорівнює NULL. Ви читаєте ознайомлювальну версію уроку, повноцінні уроки . Нехай у цьому випадку це буде рядок "Такого реквізиту немає!":

Виходить, що якщо перший параметр функції Є NULLне дорівнює NULL, то він повертається. Якщо він дорівнює NULL, то повертається другий параметр.

Функція ВИРАЗИТИ

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

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

Для поля Відмінна ознакатакими допустимими типами є РЯДОК, Довідник.і Довідник.Смаки.

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

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

У результаті всі значення елементів, які мали тип Довідник.залишилися заповненими та виявилися наведеними до зазначеного типу. Усі значення інших типів ( РЯДОК, Довідник.Смаки) тепер стали рівні NULL. У цьому полягає особливість наведення типу за допомогою функції ВИРАЗИТИ.

Наводити тип можна або до примітивного типу ( Бульова, ЧИСЛО, РЯДОК, ДАТА) або до посилального типу. Ви читаєте ознайомлювальну версію уроку, повноцінні уроки . Але тип, якого робиться приведення, обов'язково має входити до списку типів для даного складового поля, інакше система видасть помилку.

Пройдіть тест

Розпочати тест

1. Виберіть правильне твердження

2. Реквізити, здатні приймати значення одного з кількох типів, називаються

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

4. Незаповнені реквізити складеного типу мають значення

1С дозволяє значно спростити ведення бухгалтерії або просто управління будь-якою організацією, чи то маленький магазинчик чи велике підприємство. Програма є великою системою управління базами даних. Щоб не заплутатися у всьому цьому, необхідно вміти виконувати різні найпростіші дії та розуміти суть. Далі ви зрозумієте, як у 1С перевірити тип значення у запиті, а також які вони взагалі бувають, а також як їх розрізняти.

Типи значень

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

Насправді, це одне з базових понять, яке містить більшість мов програмування. За його допомогою можна проводити класифікацію різних даних. Наприклад: дати, числа, рядки, посилання. Це лише базові класифікації. Їх може бути набагато більше. Скажімо, якщо ви заносите до вашої системи інформацію про міста, можна використовувати: материк, країна, район тощо.

Перевірка

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

ТИПЗНАЧЕННЯ(Значення) = ТИП(Рядок)

На прикладі вище ми визначили, скориставшись командою найпростіший вид. Інший приклад перевірки запиту:

Документи

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

  • ДокументПосилання. Застосовується для зручного зберігання посилань різні об'єкти всередині інших частин системи.
  • ДокументОб'єкт - редагування документів.
  • ДокументВибірка - перебирання об'єктів із бази даних.

Крім того, є спеціальні терміни, що характеризують будь-які дані:

  • форма;
  • рядок;
  • бульова;
  • число;
  • дата;
  • масив;
  • прапорець;
  • картинка.

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

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

— ми почали обговорювати типи значень 1С і перетворення типів 1С.

Сьогодні ми поговоримо докладніше про типи об'єктів конфігурації 1С (тип документа 1С, тип довідника 1С та ін.)

Оскільки в програмному коді ми працюємо зі значеннями, періодично потрібно знати їх тип. Тип 1С завжди вказується у метаданих у реквізитів – у довідниках, документах.

Робота з типами 1С часто використовується:

  • Умови у програмі
    Різні дії в залежності від типу значення 1С у конструкції «Якщо… Тоді…»
  • Обмеження під час роботи в інтерфейсі
    Заборона чи дозвіл користувачеві вводити у полі на формі значення певних типів 1С.
  • Визначення фактичного параметра функції/процедури
    Якщо параметр функції/процедури може бути будь-якого типу 1С, потрібно його визначити, щоб правильно отримати значення.

Тип 1С можна отримати:

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

Типи 1С можна розділити на три види:

  • Базові типи 1С
  • Типи 1С бази даних (посилальні, об'єкти)
  • Типи 1С.

Визначення типу 1С та порівняння типів 1С

Дізнатися тип значення 1С можна за допомогою функції ТипЗнч (Змінна)

Щоб зрозуміти який тип 1С ця функція повернула – потрібно вказати потрібний нам Тип («Ім'яТипу»)

Наприклад, визначення (порівняння) типу 1С змінної:
Якщо ТипЗнч(Змінна) = Тип("Ім'яТипу") Тоді

Які типи писати як Ім'яТипу?

Базові типи

Базові типи 1С - число, рядок, дата, бульова.

Наприклад:
Знч = 12;
Якщо ТипЗнч(Знч) = Тип("Число") Тоді
ІнакшеЯкщо Знч = Тип("Рядок") Тоді
ІнакшеЯкщо Знч = Тип("Дата") Тоді
ІнакшеЯкщо Знч = Тип("Булеве") Тоді
КінецьЯкщо;

Типи бази даних

1С зберігає дані у базі даних, але з вигляді окремих записів, а вигляді об'єктів.

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

Наприклад:
Знч = Довідники.Організації.ПустаПосилання();
Якщо ТипЗнч(Знч) = Тип("ДовідникПосилання.Організації") Тоді
ІнакшеЯкщо Знч = Тип("ДовідникОб'єкт.Організації") Тоді
ІнакшеЯкщо ТипЗнч(Знч) = Тип("ДокументПосилання.НадходженняТоварів") Тоді
ІнакшеЯкщо Знч = Тип("ДокументОбъект.Надходження Товарів") Тоді
КінецьЯкщо;

Регістри можуть бути представлені різними типами. Ім'я типу регістру складене:
РеєстрТипреєструТипдоступу.Ім'яРегістра

Типи 1С регістрів:

  • Відомостей
  • Накопичення
  • Бухгалтерії
  • Розрахунки.

Типів доступів до регістру кілька. Найчастіше використовуються:

  • НабірЗаписів
  • перелік
  • Вибірка
  • Запис
  • КлючЗаписи.

Отже, приклад:
Якщо ТипЗнч(Знч) = Тип("РегістрВідомостейСписок.Ім'яРегістра") Тоді
ІнакшеЯкщо Знч = Тип("РегістрНакопиченняНабірЗаписів.Ім'яРегістра") Тоді
КінецьЯкщо;

Мова 1С дозволяє працювати з безліччю об'єктів, створюваних динамічно у програмі, наприклад – масив, список значень, таблиця значень, структура…

Такі типи 1С вказуються за їхньою назвою (одним словом, без прогалин). Наприклад:
Якщо ТипЗнч(Знч) = Тип("Масив") Тоді
ІнакшеЯкщо Знч = Тип("СписокЗначень") Тоді
КінецьЯкщо;

Визначення значення типу посилань 1С

Робота з усіма об'єктами бази даних (довідники, документи…) ведеться через посилання. Наприклад, якщо ми хочемо в документі зробити реквізит – довідник, його тип 1С буде «Довідник Посилання. Ім'я Довідника».

Наприклад:
Значення = Довідники.Організації.ПустаПосилання();
Якщо Довідники.ТипВсіПосилання().Містить(ТипЗнч(Значення))
// це довідник
ІнакшеЯкщо Документи.ТипВсіПосилання().Утримує(ТипЗнч(Значення)) Тоді
//це документ
КінецьЯкщо;

У запиті тип 1С можна перевірити двома способами.

Перший - аналогічно описаному, але в імені типу 1С не вказується "Посилання" або "Об'єкт", тобто замість "Довідник Посилання. Організації" пишемо "Довідник. Організації"

Наприклад:

Отримання доступних типів 1С

У багатьох об'єктів є властивість. ТипЗначення, яке містить список типів 1С:

  • Поле на формі товстого клієнта
    ЕлементиФорми.Ім'яПоля.ТипЗначення
  • Поле на формі тонкого клієнта (виняток: називається Доступні Типи)
    Елементи.Ім'яПоля.ДоступніТипи
  • Колонка таблиці значень дерева значень
  • Реквізит форми
  • Елемент відбору

Як працювати з цим списком типів 1С у полі. ТипЗначення – див. «Опис Типів» у розділі «Мова 1С».

Робота з типами 1С реквізитів у метаданих конфігураціях

При додаванні та редагуванні реквізитів у конфігураторі програміст вказує тип(и) 1С реквізиту. У програмному коді мовою 1С можна отримати (дізнатися) тип(и) 1С реквізиту.

Основні методи:

  • У об'єкта 1С викликати метод Метадані(), який повертає метадані конкретного об'єкта і далі працюватиме зі списком реквізитів (та реквізитів табличної частини)
    Документи.НадходженняТоваров.ПустаПосилання().Метадані().Реквізити
  • Використовувати глобальну змінну "Метадані", яка повертає всі метадані конфігурації, і далі вийти на реквізити конкретного об'єкта
    Метадані.Документи.Надходження Товарів.Реквізити

Реквізит має властивість. Тип, який містить список типів 1С, встановлений у конфігураторі цього реквізиту.

Як працювати з цим списком типів 1С – див. «ОписТипів» у розділі «Мова 1С».

Вказати фільтр типів 1С

У багатьох об'єктів можна вказати фільтр типів значень 1С, можливих до використання, наприклад:

  • Список значень (.ДоступніЗначення)
  • Поле форми керованого клієнта (.ДоступніТипи)

Там, де фільтр недоступний для зміни, можна вказати фільтр у методі об'єкта. Наприклад у колонки таблиці (дерева) значень є. ТипЗначення і ми не можемо його змінювати, але при додаванні колонки за допомогою методу. Додати () другим параметром можна вказати список доступних типів 1С.

Щоб вказати список типів 1С для фільтра – використовується список типів 1С, як з ним працювати – див. «Опис типів» у розділі «Мова 1С».

Визначаються типи - новий об'єкт метаданих 1С, який з'явився на платформі версії 8.3. Об'єкт має допоміжний характер. Розглянемо, що є типи і завдання, які вміє вирішувати даний об'єкт.

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

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

Налаштування

Налаштувань у даного об'єкта не так вже й багато:

Тобто. крім імені та синоніма в 1С обумовлені типи мають лише набір типів об'єктів.

Приклад застосування визначених типів 1С 8.3

Застосувань даного об'єкта можна знайти безліч.

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

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

і багато іншого.

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

Головна Для розробників-початківців Вчимося програмувати

Як перевірити тип значення документа, довідника?

По-перше, у вбудованій мові для роботи з одним прикладним об'єктом реалізовано кілька типів.

Наприклад, завдання, які в 1С:Підприємстві 7.7 вирішував тип Документвирішуються тепер кількома типами. Вони поділені за своїм призначенням.

Тип ДокументОб'єктвикористовується для запису та видалення окремих документів.

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

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

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

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

Щоб перевірити тип значення змінної потрібно визначити її тип функцією ТипЗнч()та використовувати функцію Тип()для отримання типу на ім'я.

Наприклад: