Інтернет Windows Android

Примітивний тип булево. Примітивний тип булево Що значить в 1с тип булево

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

  • Які типи даних є примітивними?
  • Як можна працювати з рядками і які особливості слід врахувати?
  • Які тонкощі роботи є з числовими виразами?
  • Як описати дату конкретним значенням? Як задати порожню дату?
  • Як працює перетворення типів?
  • Null і Невизначено - що це і в чому відмінності?
  • Як визначити, який тип у об'єкта / змінної?

застосовність

Стаття написана для платформи 1С версії 8.3.4.496, тому інформація актуальна і для поточної версії платформи. Однак слід зауважити, що у версії 8.3.6.1977 були додані нові функції роботи з рядками. Тому, коли будете повторювати дії зі статті, не дивуйтеся, якщо у відповідному розділі Синтакс-помічника ви побачите якісь функції, які не показані у нас на скріншоті. Також рекомендуємо ознайомитися з новим методом СтрокаСЧіслом (), доданим в платформі 8.3.10.

Примітивні типи даних і деякі їх функції

Виділяють наступні примітивні типи данн:

строкові константи

Примітивний тип даних рядок(Строкова константа) складається з різних символів. рядокзавжди обрамляється лапками. Приклад строкової константи:

Сообщеніе.Текст \u003d "Присутні незаповнені дані";

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

Рядок може складатися з будь-яких символів. Рядки можуть бути багаторядковими. При цьому кожну нову рядок необхідно визначати в лапки. наприклад:

Текст \u003d "Невірно заповнений реквізит"
"Проведення документа неможливо";

Крапка з комою ставиться тільки в кінці останнього рядка.

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

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

Запрос.Текст \u003d
"ВИБРАТИ
| Сотруднікі.Наіменованіе ЯК Співробітник,
| Сотруднікі.ДатаРожденія ЯК ДатаРожденія
| З
| Справочник.Сотрудники ЯК Співробітники
| ДЕ
| НЕ Сотруднікі.ЕтоГруппа ";

Слід зазначити, що для рядків визначена операція додавання. Це не арифметична операція, її називають операцією конкатенації.

Тобто потрібно об'єднати, наприклад, два рядки, при цьому між рядками ставиться знак складання «+»:

Текст \u003d "Невірно заповнений реквізит" + "Проведення документа неможливо";

Таким чином, відбувається склеювання рядків. Операція конкатенації, природно, може бути застосована і для більшої кількості рядків. Інші операції (віднімання, множення, ділення) для рядків не припустимі.

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

Текст \u003d "Помилка в модулі" "Загальний модуль1" "";

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

А в кінці виходить три лапки: найостанніша лапки закриває рядок, дві попередні позначають знак лапки.

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

Всі ці функції доступні в будь-якому місці конфігурації.

У синтаксис-помічника вони знаходяться в розділі Загальний опис вбудованої мовивбудовані функціїФункції роботи зі значеннями типу Рядок.

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

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

Умова задачі:

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

Послідовність цифр (від однієї і більше), обмежена від інших знаків пробілами, становить ціле позитивне число.

Наприклад, рядок "72 АВС 6АП 31 54ф -22" містить два цілих позитивних числа: 72 і 31. Крім прогалин, інші незначні символи (такі як табуляція, повернення каретки) не використовуються. Функція повинна повертати кількість цілих позитивних чисел.

Вона повинна розміщуватися в модулі керованого застосування. Необхідно забезпечити її виклик при запуску системи. Рядок визначити за допомогою змінної.

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

Усередині обробника визначимо змінну рядок, Наприклад:

Рядок \u003d "72 АВС 6АП 31 54ф -22";

Кількість \u003d КолічествоЦелихЧісел (Рядок);

Оформимо передачу повідомлення про кількість цілих чисел:

Повідомити ( "Рядок містить" + Кількість + "цілих числа");

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

Визначимо початок і кінець (тобто шаблон) функції КолічествоЦелихЧісел (Рядок).

Тепер розглянемо один з можливих варіантів розробки функції КолічествоЦелихЧісел (Рядок). При цьому познайомимося з деякими вбудованими функціями, призначеними для роботи з рядками.

Перш за все, слід познайомитися з функцією КодСімвола. Ця функція отримує код символу, розташованого в переданої рядку в позиції з зазначеним номером.

синтаксис:

КодСімвола (,)

параметри:

(Обов'язковий)

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

Значення, що повертається:
Код переданого символу. Код повертається відповідно до кодуванням Unicode.

Зверніть увагу, що у параметра Немає значення за замовчуванням 1.

Рядок теж може складатися з одного символу. Таким чином, є можливість визначити код 0 і код 9, а коди всіх інших цифр знаходяться, як відомо, в інтервалі між ними.

Визначимо відповідні змінні і їх значення:

Код0 \u003d КодСімвола ( "0");
Код9 \u003d КодСімвола ( "9");

Для вирішення завдання виберемо наступну схему:

  1. Якщо в рядку присутні початкові або кінцеві прогалини в будь-якій кількості, то позбудемося них спеціальний пристрій. Далі нас будуть цікавити групи символів між внутрішніми пробілами. Якщо група складається з одних цифр, то це ціле число. Є спеціальна функція, за допомогою якої можна визначити позицію першого пробілу.
  2. Отримавши позицію першого пробілу, за допомогою іншої функції можна отримати групу символів (підрядок) зліва від пробілу.
  3. Проаналізуємо символи, що складають групу і визначимо: чи є вона цілим числом. Виявлені цілі числа будемо підсумовувати в спеціальній змінній.
  4. Вкоротити початкову рядок, вибравши за допомогою ще однієї функції все символи тепер уже праворуч від пробілу. Ця прогалина міг бути не один, а ціла серія прогалин, що йдуть підряд, тому в що залишилася рядку мае спеціальний пристрій позбудемося всіх крайніх лівих прогалин (що йдуть підряд) і повернемося до пункту 2. Будемо повторювати дії від пункту 2 до пункту 4, поки не досягнемо стану, що в рядку не залишиться прогалин. В цьому випадку укорочена рядок становитиме останню групу аналізованих символів.

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

СокрЛП
Синтаксис: СокрЛП ()
параметри: (Обов'язковий).
Відсікає пробіли (незначні символи), що стоять зліва від першого значущого символу в рядку, і стоять праворуч від останнього значущого символу в рядку.

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

Лев
Синтаксис: Лев (,)
параметри: (Обов'язковий), (Обов'язковий).
Вибирає перші зліва символи рядка. За допомогою цієї функції визначатимемо групи символів для аналізу (зліва до першого пробілу).

СтрДліна
Синтаксис: СтрДліна ()
параметри: (Обов'язковий).
Отримує кількість символів в рядку. Будемо використовувати для визначення довжини рядка.
функція КодСімвола, Яку будемо використовувати для виявлення груп символів, які є цілими числами, описана раніше.

прав
Синтаксис: Прав (,)
параметри: (Обов'язковий), (Обов'язковий).
Вибирає крайні праворуч символи рядка. За допомогою цієї функції будемо виділяти ще необроблену частину рядка.

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

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

числові вирази

Числовими можуть бути змінні модулів і реквізити об'єктів бази даних.
Для числа існує обмеження розрядності. Для числового реквізиту довжина цілої частини не може перевищувати 32 символів.

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

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

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

Операції, які застосовуються для чисел:

  • звичайні арифметичні операції (-, +, *, /). У множення і ділення пріоритет більше, ніж у додавання і віднімання. Дужки мають найвищий пріоритет. Є ще унарні операції + і -, у яких пріоритет йде відразу за дужками;
  • операція "залишок від ділення" (%). Наприклад, 12% 5 \u003d 2;
  • математичні функції, які можна застосовувати для чисел (тригонометричні функції, зведення в ступінь, витяг квадратного кореня, округлення до зазначеної розрядності, вибір цілої частини числа)

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

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

булевские значення

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

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

Літерали типу Дата

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

Спочатку пишеться рік, потім місяць і потім день.

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

ДатаДокумента \u003d '20140315121020';

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

ДатаДокумента \u003d '2014.03.15';

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

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

В системі 1С: Підприємство 8 порожня дата - це самий початок календаря. Варіанти запису:

ПустаяДата \u003d '00010101';
ПустаяДата \u003d Дата (1,1,1);

І та і інша запис поверне однаковий результат, і ця дата буде вважатися порожній.

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

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

Перетворення примітивних типів даних

В операторі присвоювання, де підсумовується кілька змінних (наприклад, Мінлива \u003d А + В + С), Можливо перетворення примітивних типів даних. Перетворення типу даних здійснюється за значенням першого типу даних.

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

І так, рядок + число \u003d рядок. Іноді число можна скласти з рядком, в тому випадку, якщо з рядка можна виділити якесь числове значення (наприклад, 123 + "456").

Для логічного типу даних застосовні вираження:

Істина І 1 \u003d Істина;
Істина І 0 \u003d Брехня.

Будь-яке число більше нуля перетворюється в Істина, 0 перетворюється в Брехня.

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

В цьому випадку Істина перетворюється в 1, а Брехня в 0.

Крім перетворення типів в операторах можливо явне перетворення типів з використанням відповідних функцій: Рядок (), Число (), Дата (), Булево ().

До рядкуконвертується будь-який тип даних.

Число може бути отримано з Рядки або з Булево. Булево конвертується: Істина в 1, Брехня в 0.

До Даті можна привести рядок, якщо там буде міститися значення дати. Наприклад, Дата ( "20140315"). Як зазначалося раніше, можливо перетворення по позиціях:

Дата (,).

У Булево можна перетворити Число і саме значення Булево.

Дані функції можна використовувати в програмному коді для того, щоб виконати явне перетворення типів.

Примітивні типи даних Число, Рядок, Дата і Булево можуть виступати в якості полів бази даних.

Значення типу NULL і Не визначено

NULL - це буквальний. Застосовується він, як правило, в запитах до бази даних, коли з'єднуються дві і більше таблиць.

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

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

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

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

Тобто NULL - це дійсно той тип даних, який виходить при роботі з запитами. Значення NULL саме на мові запитів потрібно відпрацьовувати по-особливому.

А саме, на рівні запитів не працюватиме порівняння A \u003d NULL, потрібно буде застосовувати спеціалізовані функції. Однак у вбудованому мовою порівняння зі значенням NULL буде коректно відпрацьовано.

Тип даних Не визначено - це не пусте значення будь-якого реквізиту.

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

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

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

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

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

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

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

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

NULL і Не визначено - це і типи даних і значення в цих типах, причому одне єдине. Для NULL - це значення NULL, для Не визначено - Не визначено.

Тип даних Тип

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

Тобто в алгоритмі потрібно зрозуміти, який тип у даного об'єкта.

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

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

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

Як повертається ця функція повертає саме тип типу тип.

Надалі слід його порівняти з будь-яким цікавлять типом. наприклад:

Якщо ТіпЗнч (Елемент) \u003d Тип ( "СправочнікСсилка.Номенклатура") Тоді
Повідомити ( "Це товар");
КонецЕсли;

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

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

У наступній статті ми вивчимо ці об'єкти більш детально, тому не перемикайтеся! ;)

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

Що стосується типу даних Булево, То тут все досить просто. Існує два значення істина і брехня, Які можуть бути отримані різними способами. Наприклад, можна використовувати операції порівняння:

  • 101\u003e тисяча один одно брехня
  • 101 Істина
  • '20000101' \u003d '20000102' одно брехня
  • 'Відритих' 'Відкрито' одно істина

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

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

ТекущаяДата \u003d "20141002"; // 02.10.2014

Якщо є необхідність, то ми можемо вказати час, тому що в системі 1С: Підприємство 8 будь-яка дата містить в собі і дату і час. Тому при необхідності можна вказати, наприклад такий час: 15 годин 5 хвилин і 50 секунд. Вийде рік / місяць / день / год / хвилина / секунда.

ТекущаяДата \u003d '20141002150550'; // 02.10.2014 15:05:50

Якщо не вказувати час, то за замовчуванням він дорівнюватиме нулю, причому дату можна описувати ось таким чином: '20141002'.
Для ясності, можна використовувати будь-який роздільник, наприклад, точки «.». Тому дата може виглядати так: '2014.10.02'. Це був перший спосіб опису дати. Зверніть увагу, що використовуються одинарні лапки, тобто буквальний, який не можна розірвати. Він пишеться в одинарних лапках.

Другий спосіб визначення дати, це використання функції глобального контексту Дата (). В цьому випадку ми передаємо як параметр цієї функції те ж саме: рік / місяць / день. Параметри тут потрібно вказувати через кому.

ТекущаяДата \u003d Дата (2014 року, 10, 02); // 02.10.2014 00:00:00

Також можна вказати час.

ТекущаяДата \u003d Дата (2014 року, 10, 02, 15, 05, 50); // 02.10.2014 15:05:50

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

ТекущаяДата \u003d Дата ( "20141002150550"); // 02.10.2014 15:05:50

Тут використовується один параметри з рядком, яка повинна містити дату в форматі: рік / місяць / день / год / хвилина / секунда.

Для того щоб описати порожню дату в системі 1С: Підприємство 8 потрібно зробити наступне:

ПустаяДата \u003d ""; // 01.01.0001 00:00:00

Або використовуючи опис через буквальний:

ПустаяДата \u003d "00010101"; // 01.01.0001 00:00:00

Інший спосіб, використовуючи вже знайому нам функцію глобального контексту:

Порожня дата \u003d Дата (1, 1, 1); // 01.01.0001 00:00:00

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

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

ТекущаяДата \u003d Дата (2014 року, 10, 02, 15, 05, 50); // 02.10.2014 15:05:50 ТекущаяДата \u003d ТекущаяДата + 10;

В результаті ми отримаємо дату на десять секунд більше:

02.10.2014 15:06:00

Отже, операція додавання додає до зазначеної дати певну кількість секунд. Ця відмінність від версії системи 1С: Підприємство 7.7, де при складанні дат додавалося кількість днів, а не секунд.

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

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

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

5 < 7 — Да;

5 \u003d 8 - Ні;

4\u003e 9 - Ні.

Так само можу і бути більш складні питання:

Кнопка натиснута - так;

Кнопка натиснута - немає;

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

якщо< Булево выражение1> тоді

// оператори

ІначеЕслі< БулевоВираженіе2\u003e тоді

// оператори

КонецЕсли;

У мові програмування 1С змінну з примітивним типом Булево можна задати явно:

А \u003d Істина;

Б \u003d Брехня;

Де Істина і Брехня єдині значення, які може приймати примітивний тип Булево.

Істина - значить, що якесь твердження відповідає дійсності (Відповідь - Так).

Брехня - значить, що якесь твердження, навпаки, не відповідає дійсності (Відповідь -Ні).

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

А \u003d 5< 7 ;

Б \u003d 6\u003e 9;

В цьому випадку, в зміною А буде значення Істина, а в змінної типу Б - брехня;

У мові програмування 1С над змінними типу булево можна здійснювати різні операції.

наприклад:

А \u003d 5< 7 ;

Б \u003d 6\u003e 9;

В \u003d А І Б;

С \u003d А ЧИ Б;

Д \u003d Чи не А;

Всього їх три - І, АБО і НЕ.

Зрозуміти функціональність цих операцій допоможуть наступні таблиці

операція НЕ

А Б
істина брехня
брехня істина

операція І

С \u003d А І Б А Б
істина істина істина
брехня брехня істина
брехня істина брехня
брехня брехня брехня

операція АБО

С \u003d А ЧИ Б А Б
істина істина істина
істина брехня істина
істина істина брехня
брехня брехня брехня

А чи можна виконувати дані операції поспіль?

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

Перший: в першу чергу виконуються операції в дужках

Другий: Операція НЕ

Третій: Операція І

Четвертий: Операція АБО.

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

наприклад:

А \u003d Брехня;

Б \u003d Істина;

С \u003d Брехня;

Д \u003d А і С або Б;

В даному випадку спочатку буде працювати операція Іміж А і С.

Дивимося таблицю А - брехня, З - брехня, Результат А ІЗ буде брехня.

Наступним кроком буде виконання операції АБОміж брехнею(Результат попередньої операції) і значенням Б, яке істина.

результат буде істина.

А якщо нам треба, щоб пройшла спочатку операція АБОміж С і Б, а потім тільки операція Іміж А і тим, що вийшло, то для цього необхідно використовувати дужки.

А \u003d Брехня;

Б \u003d Істина;

С \u003d Брехня;

Д \u003d А і (С або Б);

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

Багато починаючі програмісти не зовсім до кінця розуміють принципи взаємодії між змінними типу Булево. Допомогти в цьому зможе тільки практика. А практики зі змінними типу Булево досить в моєму задачнику до книги

Вивчайте основи конфігурації в 1С і вчіться програмувати в «1С: Підприємство» за допомогою моїх книг: і «Основи розробки в 1С: Таксі»

Вивчайте програмування в 1С в місці з моєї книги «Програмувати в 1С за 11 кроків»

  1. Книга написана зрозумілою і простою мовою - для новачка.
  2. Навчіться розуміти архітектуру 1С;
  3. Станете писати код на мові 1С;
  4. Освоїте основні прийоми програмування;
  5. Закріпіть отримані знання за допомогою задачника;

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

  1. Дуже доступний і зрозумілий мову викладу
  2. Книга посилається на електронну пошту в форматі PDF. Можна відкрити на будь-якому пристрої!
  3. Зрозумієте ідеологію керованого застосування 1С
  4. Дізнаєтеся, як розробляти кероване додаток;
  5. Навчіться розробляти керовані форми 1С;
  6. Чи зможете працювати з основними і потрібними елементами керованих форм
  7. Програмування під керованим додатком стане зрозумілим

Промо-код на знижку в 15% - 48PVXHeYu


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

можна оплатити вручну:

Яндекс.Деньги - 410012882996301
Web Money - R955262494655

Вступайте в мої групи.

Як правило, вивчення будь-якої мови програмування починається з прикладу написання першої найпростішої програми ( "Hello world!"). Робиться це для того, щоб наочно показати роботу з базовими синтаксичними конструкціями. Ми не будемо робити виключення з цього загальноприйнятого способу подачі матеріалу при вивченні нового середовища розробки і тому нашу першу статтю слід розглядати в цьому ж ключі. У ній ми детально розберемо відповіді на наступні питання, що стосуються програмування на платформі «1С: Підприємство 8»:

  • Де і за допомогою чого писати програмний код на вбудованій мові 1С?
  • Що таке програмні модулі, Які існують правила роботи з ними?
  • Що таке змінна, як з нею працювати, як і де її оголошувати?
  • Які оператори порівняння, присвоювання і умов існують і як їх застосовувати?
  • Булеві операції - що це і як з ними працювати?
  • Навіщо потрібні цикли і як їх використовувати?

Стаття буде корисна всім тим, хто ще не знайомий з розробкою на платформі «1С: Підприємство 8», але хоче навчитися програмувати на 1С.

застосовність

Матеріал актуальний для платформи «1С: Підприємство 8» редакцій 8.2. і 8.3.

Змінні і оператори

У цій статті ми приступаємо до вивчення вбудованої мови 1С: Підприємство 8. Виконавчий код міститься в програмних модулях.

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

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

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

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

Перем Склад, Підрозділ, Комірник Експорт;

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

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

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

Стан \u003d 1;
НовоеВираженіе \u003d 2;
Результат \u003d 3;

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

Роздільником операторів є символ «;» (крапка з комою). Цей знак є ознакою закінчення оператора. Тобто оператор може бути записаний в такому вигляді:

Результат \u003d 100х200
+400
-600;

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

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

Крапку з комою можна не ставити в завершальному операторі даної конструкції, наприклад, процедури. Тобто Наступного код буде працювати:

Процедура ВичісленіеЗначенія ()

ІсходноеЗначеніе \u003d 100;
ПромежуточноеЗначеніе \u003d ІсходноеЗначеніе / 5;
ІтоговоеЗначеніе \u003d ІсходноеЗначеніе + ПромежуточноеЗначеніе

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

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

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

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

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

Створено \u003d Брехня;
Створено \u003d Істина;
Створено \u003d 100;

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

  • неявний спосіб (згадка в лівій частині оператора присвоювання описує дану змінну, немає попереднього опису змінної зі словом Перем, тобто немає спеціального розділу опису змінних);
  • явне опис змінних (Перем КонтрольниеДанние;). Явна опис змінних використовується, наприклад, якщо передбачається подальша передача цієї змінної в функцію.

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

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

Приклади правильного назви змінних: Лічильник (збільшується змінна для циклу), Контрагент. Якщо ім'я змінної містить кілька слів, то кожне нове слово, для наочності, слід починати з великої літери.

У назві змінних не можна використовувати зарезервовані слова, такі як Процедура, Функція, Цикл, КонецЦікла і т.д. (Ці конструкції виділяються в програмному модулі червоним кольором).

Зарезервовані слова - це оператори вбудованої мови і їх досить невелика кількість. Всі вони представлені в Синтакс-помічника.

Слід зазначити, що типи даних до зарезервованих словам не відносяться (наприклад, Масив, Булево, Істина, Брехня). Система такі імена змінних сприйме коректно.

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

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

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

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

булеві операції

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

Наприклад, в умовному операторі можна порівнювати: Якщо Подія \u003d Продаж Тоді алгоритм піде по одній гілці (тобто при значенні Істина), за умовою Брехня виконується інша гілка алгоритму.

Умови можуть бути досить складними, вони можуть комбінуватися, при цьому застосовуються такі оператори: І, АБО, і НЕ. Так, для оператора І:

Істина І істина \u003d Істина;
Істина І Брехня \u003d Брехня;
Брехня І Істина \u003d брехня;
Брехня І брехня \u003d брехня.

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

Оператор НЕ просто інвертує поточне значення (Брехня в Істину, Істину в Брехня).

За допомогою комбінації даних операторів можна будувати досить складні умови. При складанні складних умовних операторів слід враховувати пріоритети.

Вищий пріоритет має оператор НЕ, наступним йде оператор І, а за ним оператор АБО. Те, що укладено в дужки, має найвищий пріоритет і виконується в першу чергу.

Наприклад, розставимо пріоритети (послідовність виконання) для операцій в наведеному вираженні:

НЕ (Условіе1 АБО Условіе2) І Условіе3 АБО Условіе4
1. Результат1 \u003d (Условіе1 АБО Условіе2);
2. Результат2 \u003d НЕ результат1;
3. Результат3 \u003d Результат2 І Условіе1;
4. Результат \u003d Результат3 АБО Условіе4;

Існує правило перетворення:

НЕ (Условіе1 АБО Условіе2) \u003d НЕ Условіе1 І НЕ Условіе2.

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

оператор присвоювання

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

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

Переменная1 \u003d Переменная2 \u003d Переменная3;

Переменной1 присвоюється значення рівності з булевою логіки, тобто Істина, якщо Переменная2 \u003d Переменная3, або Брехня в зворотному випадку.

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

Дане завдання вирішується з використанням оператора присвоювання і має два рішення.

Рішення №1 з використанням тимчасової змінної:
ВременнаяПеременная \u003d Переменная1;
Переменная1 \u003d Переменная2;
Переменная2 \u003d ВременнаяПеременная;

Рішення №2:
Переменная1 \u003d Переменная1 + Переменная2;
Переменная2 \u003d Переменная1 - Переменная2;
Переменная1 \u003d Переменная1 - Переменная2;

умовний оператор

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

Далі може слідувати ключове слово Інакше і серія інших операторів. Якщо різних умов кілька, можна використовувати серію ключових слів ІначеЕслі (Див. Приклад нижче). Вся конструкція обов'язково завершується ключовим словом КонецЕсли, Після чого слід знак крапки з комою.

Крім простого і множинного умови існує скорочена форма умовного оператора:? (Умова, Вираз1, Вираженіе2);

Якщо умова справжнє, то буде виконуватися вираз1, в іншому випадку - Вираженіе2. Приклад коду: ДорогойТовар \u003d? (Товар.Цена\u003e 100000, Істина, Брехня);

На практиці замість записів порівняння зі значенням істина (брехня) Типу:

Якщо Мінлива \u003d Істина Тоді
і
Якщо Мінлива \u003d Брехня Тоді

реально використовуються еквівалентні записи:

Якщо Мінлива Тоді
і
Якщо НЕ Мінлива Тоді

циклічні оператори

Для будь-якого виду циклу обов'язково явне вказівку закінчення цього циклу за допомогою ключового слова КонецЦікла. Існує кілька типів циклів.

Цикл по лічильнику - цикл з фіксованою кількістю повторень. Умовою виходу з циклу є перевищення граничного значення. Приклад використання для розрахунку значення А!

А \u003d 5;
Факторіал \u003d 1;
Для Лічильник \u003d 1 За А Цикл
Факторіал \u003d Факторіал Лічильник;
КонецЦікла;

Цикл за умовою - виконується поки істинно умова даного циклу. приклад:

ОстатокСумми \u003d 1000;
ЦенаДополнітельногоТовара \u003d 243;
Кількість \u003d 0;
Поки ОстатокСумми\u003e 0 Цикл
Кількість \u003d кількість + 1;
ОстатокСумми \u003d ОстатокСумми - Кількість * ЦенаДополнітельногоТовара;
ЦенаДополнітельногоТовара \u003d ЦенаДополнітельногоТовара * 0.8;
КонецЦікла
Кількість \u003d кількість-1;

Даний цикл обчислює, скільки одиниць товару можна купити на цю суму (1000 рублів), якщо після покупки кожної одиниці товару попередня його ціна множиться на коефіцієнт 0,8. Початкова ціна товару - 243 рубля.

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

Цикл по колекціях (інша назва Для кожного).

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

Обійти елементи колекції можна за допомогою циклу спеціального виду.

Наприклад, існує масив чисел, необхідно порахувати суму всіх елементів масиву:

Сума \u003d 0;
Для кожного Елемент З Масив Цикл
Сума \u003d сума + Елемент;
КонецЦікла;

Для циклів існують спеціальні оператори: продовжити і перервати.

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

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

На цьому ми завершуємо наше перше знайомство з розробкою на внутрішньому мові 1С.

А як же Hello World? Ми ж його ще не написали, так? Так, але ніщо не заважає вам зробити це самостійно, тому що знань ВЖЕ достатньо. Ну а якщо не виходить, то можете підглянути сюди.