1с підприємство 8.2 періодичні змінні. Запис нового значення константи

25.10.2019 Поради

Опис:

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

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

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

Синтаксис:

Параметри:

Ім'я_проц Призначає ім'я процедури.Знач Необов'язкове ключове слово, яке вказує на те, що наступний за ним параметр передається за значенням, тобто зміна значення формального параметра при виконанні процедури не вплине на фактичний параметр, переданий при виклику процедури. Якщо це ключове слово не вказано, параметр процедури передається за посиланням, тобто зміна всередині процедури значення формального параметра призведе до зміни значення відповідного фактичного параметра.Парам1 , ..., ПарамN Необов'язковий список формальних параметрів, що розділяються комами. Значення формальних параметрів повинні відповідати значенням фактичних параметрів, що передаються при виклику процедури. У цьому списку визначаються імена кожного параметра так, як вони використовуються в тексті процедури. Список формальних параметрів може бути порожнім.Експорт Необов'язкове ключове слово, яке вказує на те, що ця процедура доступна з інших програмних модулів.Оголошуються локальні змінні, на які можна посилатися лише в рамках цієї процедури.// Оператори Оператори процедури, що виконуються.Повернення Необов'язкове ключове слово, яке завершує виконання процедури та здійснює повернення до точки програми, з якої було звернення до процедури. Використання цього оператора в процедурі не обов'язково.КінецьПроцедури Обов'язкове ключове слово, що означає кінець вихідного тексту процедури, завершення виконання процедури. Повернення до точки, з якої було звернення до процедури.

Функція

Опис:

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

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

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

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

Синтаксис:

Параметри:

Ім'я_функції Призначає ім'я функції.Знач Необов'язкове ключове слово, що свідчить про те, що наступний його параметр передається за значенням, тобто. зміна значення формального параметра під час виконання функції ніяк не вплине на фактичний параметр, переданий під час виклику функції. Якщо це ключове слово не вказано, параметр функції передається за посиланням, тобто зміна всередині функції значення формального параметра призведе до зміни значення відповідного фактичного параметра.Парам1 , ..., ПарамN Необов'язковий список формальних параметрів, що розділяються комами. Значення формальних параметрів повинні відповідати значенням фактичних параметрів, що передаються при виклику функції. У цьому списку визначаються імена кожного параметра так, як вони використовуються в тексті функції. Список формальних параметрів може бути порожнім.= ДефЗнач Необов'язкове встановлення значення за замовчуванням. Параметри зі стандартними значеннями можна розміщувати в будь-якому місці списку формальних параметрів.Експорт Необов'язкове ключове слово, яке вказує на те, що ця функція доступна з інших програмних модулів.// Оголошення локальних зміннихОголошуються локальні змінні, на які можна посилатися лише в рамках цієї функції.// Оператори Оператори, що виконуються функції.Повернення Значення, що повертаєтьсяКлючове слово, яке завершує виконання функції та повертає вказане значення у вираз, у якому використовується функція. Як значення, що повертається може виступати вираз або змінна, значення якого містить результат звернення до функції.КінецьФункції Обов'язкове ключове слово, що означає кінець вихідного тексту функції.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Стан = 1;
НовийВираз = 2;
Результат = 3;

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

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

Результат = 100Х200
+400
-600;

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

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

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

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

Вихідне значення = 100;
ПроміжнеЗначення = ВихіднеЗначення/5;
ПідсумковеЗначення = ВихіднеЗначення+ПроміжнеЗначення

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Бульові операції

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

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

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

Істина І Істина = Істина;
Істина І Брехня = Брехня;
Брехня І Істина = Брехня;
Брехня І Брехня = Брехня.

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

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

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

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

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

НЕ(Умова1 АБО Умова2) І Умова3 АБО Умова4
1.Результат1 = (Умова1 АБО Умова2);
2. Результат2 = НЕ Результат1;
3. Результат3 = Результат2 І Умова1;
4. Результат = Результат3 АБО Умова4;

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

НЕ (Умова1 або Умова2) = НЕ Умова1 І НЕ Умова2.

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

Оператор присвоєння

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

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

Змінна1 = Змінна2 = Змінна3;

Змінної1 надається значення рівності з булевської логіки, тобто. Істина, якщо Змінна2 = Змінна3, або Брехня у протилежному випадку.

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

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

Рішення №1 з використанням тимчасової змінної:
Тимчасова Змінна = Змінна1;
Змінна1 = Змінна2;
Змінна2 = Тимчасова Змінна;

Рішення №2:
Змінна1 = Змінна1 + Змінна2;
Змінна2 = Змінна1 - Змінна2;
Змінна1 = Змінна1 - Змінна2;

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

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

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

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

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

Насправді замість записів порівняння зі значенням Істина (Брехня) типу:

Якщо Змінна = Істина Тоді
і
Якщо Змінна = Брехня Тоді

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

Якщо Змінна Тоді
і
Якщо НЕ Змінна Тоді

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

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

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

А = 5;
Факторіал = 1;
Для Лічильник = 1 По А Цикл
Факторіал = Факторіал * Лічильник;
КінецьЦикл;

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

ЗалишокСуми = 1000;
ЦінаДодатковогоТовара = 243;
Кількість = 0;
Поки ЗалишокСуми>0 Цикл
Кількість = Кількість +1;
ЗалишокСуми = ЗалишокСуми – Кількість*ЦінаДодатковогоТовара;
Ціна Додаткового товару = Ціна Додаткового товару * 0.8;
КінецьЦикл
Кількість = Кількість-1;

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

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

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

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

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

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

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

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

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

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

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

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

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

Для кожної константи потрібно обов'язково вказати її ім'я та тип даних.Звернення до константів у програмному модулі здійснюється дуже просто:

1. Читання значення константи

// Читання значення Константи
Назва = Константи. Назва організації. Отримати ();

Зверніть увагу на слово Константи (а не Константа, як це було у версії 7.7).

2. Запис нового значення константи

Для запису нового значення константи використовується метод Встановити ()

// Запис нового значення Константи
Константи. Назва організації. Встановити ("ТОВ Рогу та копита");

3. Роботу з набором констант

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

//створюємо набір із трьох констант

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

Набір = Константи. Створити Набір ("Керівник, Назва Організації, Адреса Організації");

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

//Встановлюємо значення констант в наборі (не в базі)
Набір. Керівник = "Іванов І.І.";
Набір. Назва Організації= "ТОВ Нові роги та копита";
Набір.Адрес Організації= "Росія, м. Москва, Кремль";
Набір. Записати (); //записуємо в базу одночасно значення трьох констант

4. Порівняння зі значенням константи у запитах

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

"ВИБРАТИ
| НашеЧ.Значення,
| Нагадування.Код,

| Константа.НашеКільк ЯК НашеЧ,
| Довідник.Нагадування ЯК Нагадування
|ДЕ
| Нагадування.Код = НашеЧ.Значення

Коментарі

    //тепер за допомогою методу Отримати() ми можемо прочитати значення констант нашого набору

    Набір.(); //прочитати з бази відразу три константи

    Цікаво, тут немає друкарської помилки? Начебто йшлося про методОтримати().