Мова 1С
У коді 1С здатна бути захована критична бізнес-логіка:
</div>
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
Тому що він здатна змінювати документи, регістри, залишки, бухгалтерські проводки, зарплату, ПДВ, права доступу й інтеграційні інформаційні дані. | Для бізнес-логіки, документів, форм, звітів, регістрів, обробок та інтеграцій. Помилка
'''Мова 1С''' — це базовий інструмент розробки й доопрацювання систем 1С/BAS.<syntaxhighlight lang="text">
Приклад циклу по рядках табличної частини документа:
Рядок.Номенклатура = Номенклатура;
'''компонент форми''' відповідає за поведінку інтерфейсу. Мова 1С має власну мову запитів. This is a 1C code example.");
Приклади:
СумаРядка = РядокТовару.Кількість * РядокТовару.Ціна;
[[Категорія:Міграція з BAS]]
Процедура ЗаписатиПовідомлення(ТекстПовідомлення)
== Масиви, структури і відповідності ==
Робота з довідниками
'''Хардкод''' — це коли значення жорстко записані в коді. Аналог у K2 ERP
|-
| Перевірка документа
| Забороняє запис без обов’язкових полів
| Не проводити без контрагента
|-
| Проведення
| Формує рухи по регістрах
| Списати товар зі складу
|-
| Заповнення
| автоматизовано заповнює табличну частину
| Заповнити ціни
|-
| Звіт
| Отримує інформаційні дані запитом
| продажі та реалізація по товарах
|-
| інтеграційні функції ERP
| Формує JSON і відправляє API
| Передати замовлення
|-
| Міграція
| Вивантажує довідники і залишки
| Перенести в K2 ERP
|}
Сообщить("Не заповнений контрагент");
'''критично.''' Код 1С часто містить критичну бізнес-логіку: фінансовий блок, складський облік, зарплату, ПДВ, банк, виробництво, собівартість, інтеграції та доступи. * [[1С]]
* [[BAS]]
* [[BAS ERP]]
* [[K2 ERP]]
* [[ERP]]
* [[Проведення документа 1С]]
* [[Рухи документа 1С]]
* [[Регістри 1С]]
* [[Регістр накопичення 1С]]
* [[Регістр відомостей 1С]]
* [[Регістр бухгалтерії 1С]]
* [[Регістр розрахунків 1С]]
* [[СКД 1С]]
* [[Запити 1С]]
* [[Зовнішня обробка 1С]]
* [[Зовнішній звіт 1С]]
* [[Регламентні завдання 1С]]
* [[Інтеграція через JSON]]
* [[Інтеграція з банками]]
* [[Типи цін 1С]]
* [[Партії 1С]]
* [[Виробництво 1С]]
* [[Специфікація 1С]]
* [[Закриття місяця 1С]]
* [[ПДВ 1С]]
* [[Зарплата 1С]]
* [[Кадровий облік 1С]]
* [[Power BI]]
* [[BI система]]
* [[Вивантаження даних 1С]]
* [[Міграція даних з 1С]]
* [[Міграція з 1С]]
* [[Міграція з BAS]]
* [[Заміна BAS]]
* [[Реплікатор K2]]
* [[Права доступу в ERP]]
* [[Аудит дій]]
* [[Українське програмне забезпечення]]
* [[Цифрова незалежність]]
Ціни = Новый Соответствие;
* [https://www.president.gov.ua/documents/1842020-33629 Указ Президента України №184/2020]
* [https://cip.gov.ua/ua/statics/perelik-zaboronenogo-do-vikoristannya-programnogo-zabezpechennya-ta-komunikaciinogo-merezhevogo-obladnannya Перелік забороненого до використання програмного забезпечення та комунікаційного мережевого обладнання]
* [https://erp.kyiv.ua Сайт K2 ERP]
* [https://wiki.erp.kyiv.ua Wiki K2 ERP]
* [https://cloud.corp2.eu хмарна інфраструктура K2 ERP]
Для Каждого Рядок Из Товари Цикл
== Типова помилка клієнт-сервер ==
== Обробка помилок ==
Мова 1С дає можливість створювати документи. Якщо ця логіка функціонує в ризиковому або підсанкційному ПЗ, компанії потрібно оцінити юридичні, технічні та кібербезпекові ризики і планувати перехід на безпечну ERP-платформу. Попытка
Повідомити("Контрагент знайдений");
У реальному коді потрібно опрацьовувати помилки, статуси, авторизацію, таймаути і логування.<syntaxhighlight lang="text">
Повідомити(Сума);
Приклад кнопки:
! Наслідок
* ПередЗаписью;
* ПриЗаписи;
* ПередПроведением;
* ОбработкаПроведения;
* ПриОткрытии;
* ПриСозданииНаСервере;
* ПриИзменении;
* ПередУдалением;
* ПриНажатии;
* ПриВыборе;
* ОбработкаЗаполнения. Саме через код реалізуються правила бізнесу: як проводиться документ, як списуються товари, як розраховується ціна, як формується JSON, як функціонує звіт або як закривається місяць. Тому доступ до розробки, зовнішніх обробок і виконання коду має бути обмежений. Задача
<syntaxhighlight lang="text">
* вивантаження продажів;
* вивантаження залишків;
* вивантаження взаєморозрахунків;
* вивантаження собівартості;
* вивантаження виробництва;
* вивантаження зарплати;
* формування проміжних таблиць;
* формування JSON або CSV;
* підготовка контрольних сум. |-
| Що критично при міграції? Ключове слово '''Экспорт''' дає можливість викликати функцію з інших модулів. ! Процедура КлієнтськаПроцедура()
[[Зовнішній звіт 1С]] здатна містити запити, СКД і код для формування аналітики. Сума = 0;
{| class="wikitable" style="width:100%;"
як приклад, складний запит або запис об’єкта не повинен виконуватися напряму в клієнтському коді. | Проведення, запити, клієнт-сервер, інтеграції, права, хардкод, продуктивність. КонецПроцедуры
Сообщить("Не заповнений контрагент");
Потрібно знайти не без зусиль код, а бізнес-логіку: правила проведення, розрахунки, перевірки, інтеграції, звіти, регламентні задача і зовнішні обробки.== Безпека коду 1С ==
КонецФункции
КонецЕсли;
ЗаписJSON.УстановитьСтроку();
[[Категорія:BAS]]
== Проведення документа мовою 1С ==
<div style="border:3px solid #b71c1c; background:#ffebee; padding:14px; margin:16px 0;">
'''Функція''' повертає значення. Рядок.Количество = 10;
Для Каждого Рядок Из Товары Цикл
ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура,
Без аудиту зміни коду можуть створювати приховані помилки в обліку. Не можна бездумно логувати паролі, токени, персональні інформаційні дані, зарплату або банківські ключі. Вона дає можливість описувати поведінку документів, форм, регістрів, звітів, обробок, інтеграцій і регламентних задач.[[Категорія:Міграція з 1С]]
КонецЦикла;
КонецЦикла;
ЗапросHTTP = Новый HTTPЗапрос("/orders");
НовийРядок.Номенклатура = "Товар А";
КонецПроцедуры
У мові 1С виступає як два основні типи підпрограм:
Сума = РозрахуватиСуму(10, 150);
<syntaxhighlight lang="text">
[[1С]] історично виступає як російською програмною екосистемою. У реальному коді залишок краще отримувати одним запитом по всіх товарах, а не окремим запитом у циклі.== Особливості мови 1С ==
Сума = Кількість * Ціна; Критично. Зовнішні обробки можуть змінювати багато даних одразу.</syntaxhighlight>
ТоварыНаСкладахОстатки.КоличествоОстаток КАК Остаток
Правильна міграція мови 1С — це не перенесення синтаксису, а перенесення корисної бізнес-логіки в сучасну, безпечну і контрольовану ERP-архітектуру. "customer": "ТОВ Ромашка", Ціна = 150; Процедура ОбработкаПроведения(Отказ, РежимПроведения)
ТоварыНаСкладахОстатки.складський облік КАК складський облік,
{{SEO
|title=Мова 1С — вбудована мова 1С:Підприємство, синтаксис, модулі, процедури, функції, запити, приклади і міграція в K2 ERP
|description=Мова 1С: що таке вбудована мова 1С/BAS, як працюють модулі, процедури, функції, змінні, об’єкти, запити, події, клієнт-сервер, типові приклади коду, помилки, безпека і міграція бізнес-логіки в K2 ERP.
|keywords=мова 1С, встроенный язык 1С, 1С:Підприємство, програмування 1С, код 1С, модулі 1С, процедури 1С, функції 1С, запити 1С, BAS програмування, K2 ERP, міграція з 1С
}}
Рух.ВидДвижения = ВидДвиженияНакопления.Расход;
Приклади типів:
Мова 1С потрібна для того, щоб платформа виконувала бізнес-правила компанії.<syntaxhighlight lang="text">
Док.Записать(РежимЗаписиДокумента.Проведение);
Рух.Количество = РядокТовару.Кількість;
<syntaxhighlight lang="text">
<div style="border:3px solid #b71c1c; background:#ffebee; padding:14px; margin:16px 0;">
"order_number": "WEB-10025",
[[Категорія:ERP]]
КонецПроцедуры
Спрощений приклад:
КонецЕсли;
* інтеграцій;
* запису документів;
* проведення;
* роботи з файлами;
* HTTP-запитів;
* регламентних завдань;
* міграційних обробок. КонецЕсли;
Позначки:
Аудит змін коду
</syntaxhighlight>
Процедури і функції
Док.Записать();
- заповнення документів;
- проведення документів;
- рухи по регістрах;
- перевірки перед записом;
- алгоритми розрахунків;
- форми користувача;
- кнопки і команди;
- зовнішні обробки;
- зовнішні звіти;
- друковані форми;
- обміни даними;
- HTTP-сервіси;
- JSON/XML-інтеграції;
- регламентні задача;
- правила доступу;
- запити до бази даних;
- обробку помилок. |-
Що таке функція?Типові питанняКонецФункции Для чого потрібна мова 1СЛогувати варто: Як писати код 1С краще |
Підпрограма, яка виконує дію і не повертає значення. СписокКодів = Новый Массив;
</syntaxhighlight> Для Каждого РядокТовару Из Товары Цикл НовийРядок.Кількість = 10; Код у 1С розміщується в модулях. {| class="wikitable" style="width:100%;" ЗаписJSON = Новый ЗаписьJSON; Повідомити(Вибірка.Номенклатура);
ЦиклиЗагальні модулі використовуються для спільного коду, який потрібен у різних місцях конфігурації.</syntaxhighlight> |
Отказ = Истина;
Тип значення визначається за тим, що присвоєно змінній. Результат = Запит.Выполнить(); Запити і СКД&НаКлиенте У сучасній ERP-архітектурі логіка, яка раніше була написана мовою 1С, здатна бути розподілена між: '''ТаблицаЗначений''' — один із найпоширеніших типів у мові 1С. Правильний підхід:
'''Проста аналогія.''' Конфігурація 1С — це “скелет” системи: довідники, документи, регістри, звіти. У керованих формах критично розуміти, де виконується код:
У [[K2 ERP]] частину старої логіки можна замінити стандартними механізмами, частину — налаштуваннями, частину — API, частину — окремими сервісами або BI-звітами. Рухи документа — основа облікової логіки. Погана практика:
== Реплікатор K2 і мова 1С ==
Функция СервернаФункціяБезКонтексту()
Мова 1С активно використовує подієву модель.== клієнт ERP і сервер у 1С ==
[[Категорія:Цифрова незалежність України]]
* змінені модулі конфігурації;
* зовнішні обробки;
* зовнішні звіти;
* регламентні задача;
* HTTP-сервіси;
* інтеграції;
* друковані форми;
* код проведення документів;
* загальні модулі;
* ручні обробки для бухгалтерії;
* обробки завантаження банку;
* обробки прайсів;
* обробки міграції;
* СКД-звіти;
* хардкод;
* обхід прав доступу;
* небезпечні масові зміни. |-
| Що таке мова 1С? Кількість = 10;
[[Категорія:Права доступу]]
КонецЕсли;
У 1С застосовується для конструкція Попытка / Исключение. Повідомити("Звичайна сума документа");
<syntaxhighlight lang="text">
Якщо в документі 500 рядків, буде 500 запитів.== Зовнішні звіти мовою 1С ==
== Див. так само ==
[[Категорія:Заміна BAS]]
КонецЦикла;
! НовийРядок = Таблиця.Добавить();
Краще:
<syntaxhighlight lang="text">
* кількості запитів;
* роботи з великими таблицями;
* циклів;
* звернень до бази;
* клієнт-серверного розділення;
* індексів у запитах;
* використання регістрів;
* розміру табличних частин;
* блокувань;
* регламентних завдань. Регістри можуть бути:
* завантажити банківську виписку;
* оновити ціни;
* вивантажити залишки на сайт;
* перевірити статуси замовлень;
* сформувати звіт;
* виконати обмін;
* очистити тимчасові інформаційні дані;
* перевірити помилки інтеграції. Потрібно контролювати:
Для Каждого РядокТовару Из Товары Цикл
Приклад використання:
Приклад:
== Мова 1С і продуктивність ==
== Робота з регістрами ==
== Що таке мова 1С ==
Пока Вибірка.Следующий() Цикл
{{DISPLAYTITLE:Мова 1С}}
[[Категорія:Рухи документа]]
=== Чому код 1С здатна бути небезпечним? ===
ЗаписатьJSON(ЗаписJSON, інформаційні дані);
== Карта міграції коду 1С ==
</div>
Продуктивність коду 1С залежить від:
== Санкції та ризики використання 1С/BAS в Україні ==
Вона застосовується для для тимчасових таблиць у коді. Функция ОтриматиСумуДокумента(Товари) Экспорт
Ні.
Приклад процедури, яка виводить повідомлення користувачу: Приклад: </syntaxhighlight> Для підтримки системи критично знати: Погано: Повідомити("Велика сума документа");
критично про 1С та BAS. В Україні продукти екосистеми 1С і частина продуктів BAS пов’язані з санкційними, юридичними, кібербезпековими та репутаційними ризиками. Після початку російської агресії проти України використання такого програмного забезпечення стало питанням не тільки бухгалтерії, а й кібербезпеки, комплаєнсу, репутації та цифрової незалежності. Логіка в 1С Мова 1С дає можливість створювати, шукати і змінювати елементи довідників. Тип Структура — набір ключів і значень. Таблиця.Колонки.Добавить("Сума"); РядокJSON = ЗаписJSON.Закрыть(); Повідомити(ТекстПовідомлення); </syntaxhighlight> Приклад спрощеної логіки: Умови використовуються для перевірок. * управлінської аналітики;
Код 1С здатна працювати з критичними даними. СписокКодів.Добавить("SKU-001"); компонент об’єкта</syntaxhighlight>
|
100 | Число | Кількість = 100 |
|---|---|---|---|---|---|
| "Товар А" | Рядок | Назва = "Товар А" | |||
| '2026-05-15' | Дата | ДатаДок = ТекущаяДата() | |||
| Истина / Ложь | Булево | Проведено = Истина | |||
| Ссылка | Посилання на об’єкт | Контрагент = Документ.Контрагент |
інформаційні дані.Вставить("order_number", "WEB-10025");
Робота з JSON
! |- | компонент об’єкта | Логіка конкретного документа або довідника | Проведення реалізації |- | компонент форми | Логіка форми користувача | Натискання кнопки |- | Загальний компонент | Спільні процедури і функції | Розрахунок цін, інтеграції |- | компонент менеджера | Логіка менеджера об’єкта | Створення, пошук, службові методи |- | компонент команди | Обробка команди | Кнопка “Вивантажити JSON” |- | компонент сеансу | Логіка старту сеансу користувача | Ініціалізація параметрів |- | компонент керованого додатка | Загальна логіка клієнтського додатка | Стартові конфігурація |}
Мова 1С має кілька характерних особливостей:
Ціни.Вставить("SKU-001", 1200);
КонецЕсли;
- перевірку перед записом;
- перевірку перед проведенням;
- формування рухів по регістрах;
- заповнення реквізитів;
- обробку проведення;
- скасування проведення. Потрібно провести аудит: які алгоритми реально потрібні, які застаріли, які виступає як дублями, які можна замінити стандартними механізмами K2 ERP, які варто винести в API, а які краще перенести в Power BI або окремі сервіси. Окремо варто відзначити яка застосовується для; так само реалізовано проведення документів, роботи з довідниками, регістрами, звітами, обробками, формами, інтеграціями, запитами, правами доступу і іншими об’єктами конфігурації виступає ключовою рисою опису бізнес-логіки забезпечується через Мова 1С. КонецЦикла;
Логування потрібне, щоб зрозуміти, що сталося в системі.</syntaxhighlight>
Події в 1С
як приклад, у документі “Реалізація товарів” компонент об’єкта здатна містити:
Мова 1С здатна використовуватися для підготовки даних для Power BI:
- робота з цінами;
- робота з залишками;
- розрахунок собівартості;
- формування JSON;
- обмін із сайтом;
- банківська інтеграційні функції ERP;
- службові перевірки;
- логування;
- права доступу;
- універсальні функції. Приклад
! Слабка сторона — залежність бізнес-логіки від старої платформи, складність аудиту старого коду, ризики зовнішніх обробок, хардкод, проблеми продуктивності і санкційний контекст використання 1С/BAS в Україні. | Підпрограма, яка повертає значення. НовийКонтрагент = Справочники.Контрагенты.СоздатьЭлемент();
НовийКонтрагент.Записать();
! Функция РозрахуватиСуму(Кількість, Ціна)
</syntaxhighlight> Приклади:
Хардкод у мові 1С
Иначе Процедура ЗаповнитиТовариНаСервері()
Клієнтський код функціонує в інтерфейсі користувача. |- | Де пишеться код? КонецПроцедуры
НовийКонтрагент.Наименование = "ТОВ Ромашка";
! Перед підтримкою, використанням або міграцією таких систем потрібно перевіряти актуальні офіційні обмеження. | У модулях об’єктів, форм, загальних модулях, зовнішніх обробках і звітах. як приклад: КонецПроцедуры Мова 1С не виступає як універсальною мовою на кшталт Java, Python або C#.</syntaxhighlight> Параметри.Вставить("Дата", ТекущаяДата());
інформаційні дані.Вставить("total", 5300);
Практичний принцип міграції. При переході з 1С/BAS потрібно переносити не код як текст, а бізнес-логіку: які правила реально потрібні, які застаріли, які дублюються, а які краще реалізувати стандартними механізмами K2 ERP. | Вбудована мова програмування платформи 1С:компанія-користувач. Если складський облік.Код = "000000001" Тогда
Код 1С часто функціонує з регістрами через рухи документів або запити. Параметри.Вставить("Організація", Організація);
компонент об’єкта містить код, який стосується конкретного об’єкта. компонент
При проведенні документ здатна формувати рухи по регістрах. Приклад
! Рядок = Док.Товары.Добавить();
Док.Организация = Організація;
![[Категорія:СКД 1С]]
Поганий код здатна сповільнити всю базу, особливо в документах проведення, звітах і обмінах. // Тут здатна бути серверна логіка заповнення
<syntaxhighlight lang="text">
[[СКД 1С]] часто використовує запити як джерело даних. :contentReference [oaicite:0]{index=0}
ИЗ
Повідомити("Рядок " + Строка(Номер));
Приклад:
Англомовний стиль у платформі здатна виглядати так:
| - | Що найчастіше ламається? Вона розроблена насамперед для прикладної автоматизації обліку: бухгалтерії, складу, продажів, закупівель, зарплати, виробництва, ПДВ, взаєморозрахунків і регламентованої звітності. Приклад пошуку за кодом:
Що критично при міграції з 1С у K2 ERP?Ответ = HTTPСоединение.Получить(ЗапросHTTP);
&НаСервере Зовнішні обробки мовою 1СКонецПроцедуры </syntaxhighlight> Регламентні завдання 1С можуть запускати код автоматизовано за розкладом. Змінні в 1С можуть створюватися без явного оголошення типу. Мова 1С — це прикладна мова програмування, а мова запитів 1С — окрема SQL-подібна мова для вибірки даних із бази.== компонент форми == Процедура ЗаповнитиТовари(Команда)
[[Категорія:Автоматизація бізнесу]]
<syntaxhighlight lang="text">
* орієнтована на бізнес-облік;
* має російськомовний і англомовний синтаксис у різних варіантах платформи;
* тісно інтегрована з метаданими;
* підтримує роботу з довідниками, документами, регістрами;
* має вбудовану мову запитів;
* підтримує клієнт-серверну архітектуру;
* має подієву модель;
* дає можливість створювати зовнішні обробки і звіти;
* активно використовує типи платформи: СправочникСсылка, ДокументОбъект, ТаблицаЗначений, Запрос тощо;
* застосовується для і для інтерфейсу, і для серверної бізнес-логіки. Если Не ЗначениеЗаполнено(Контрагент) Тогда
Тому знання мови запитів — одна з ключових навичок розробника 1С. Це компонент конкретного довідника, документа або іншого об’єкта, де описується його поведінка: запис, проведення, перевірки, рухи. !== Типові помилки мови 1С ==
Він здатна використовуватися для:
Возврат Кількість * Ціна;
|
Хардкод ускладнює міграцію, підтримку і тестування. ! * процедура;
Основні типи модулів: Приклад створення елемента довідника: Мова 1С у сучасній ERP-архітектуріОтказ = Истина; Мова 1С дає можливість виконувати HTTP-запити до зовнішніх сервісів. Значення ЗмінніРух.складський облік = складський облік;
* мінус товар на складі;
* плюс борг покупця;
* дохід;
* ПДВ;
* собівартість. // Особлива логіка
[[Категорія:Код 1С]]
== Робота з документами ==
=== Де зберігається код 1С? ===
Сообщить("Помилка запису документа: " + ОписаниеОшибки());
Практичні принципи:
[[Зовнішня обробка 1С]] — це файл з кодом, який можна запускати без зміни основної конфігурації. Message("Hello! |}
== Типові приклади задач мовою 1С ==
НовийРядок.Сума = 1500;
Помилка: розробник намагається виконати серверну операцію на клієнті. Запит = Новый Запрос;
* зібрати всі номенклатури;
* виконати один запит;
* отримати таблицю залишків;
* зіставити інформаційні дані в коді. У продуктах [[BAS]] так само застосовують, коли потрібно споріднена технологічна база, тому багато підходів до програмування, модулів, запитів і подій виступає як подібними. Держспецзв’язку веде офіційний перелік забороненого до використання програмного забезпечення та комунікаційного обладнання; у цьому переліку згадуються продукти 1С/BAS, зокрема 1C:компанія-користувач 8 і BAS ERP. * при проведенні реалізації списати товар зі складу;
* при оплаті покупця закрити борг;
* при надходженні товару сформувати партію;
* при зміні ціни перевірити права користувача;
* при створенні замовлення перевірити залишок;
* при випуску продукції списати матеріали за специфікацією;
* при закритті місяця розрахувати собівартість;
* при інтеграції сформувати JSON;
* при формуванні звіту отримати інформаційні дані з регістрів. |-
| Для чого потрібна?[[Категорія:1С]]
"total": 5300
Приклад перевірки заповнення реквізиту:
У реальних українських і російськомовних конфігураціях найчастіше зустрічається російськомовний синтаксис.[[Категорія:Мова 1С]]
КонецФункции
Параметри = Новый Структура;
Але для регулярної BI-аналітики краще будувати стабільний шар даних, API або сховище, а не залежати від ручних обробок у старій базі. |-
| Що таке процедура? * права доступу;
* зовнішні обробки;
* небезпечні масові зміни;
* інтеграційні токени;
* персональні інформаційні дані;
* зарплату;
* банківські реквізити;
* собівартість;
* ПДВ;
* логування;
* аудит дій. Серверний код функціонує з базою, об’єктами, запитами і важкими обчисленнями. Док.Контрагент = Контрагент;
РядокТовару.Сума = СумаРядка;
EndProcedure
'''Мова 1С''' — це вбудована прикладна мова платформи 1С:компанія-користувач, призначена для розробки конфігурацій і доопрацювання бізнес-логіки. Питання
Сильна сторона мови 1С — тісна інтеграційні функції ERP з обліковою моделлю. * накопичення;
* відомостей;
* бухгалтерії;
* розрахунків. Причина
<syntaxhighlight lang="json">
* форма викликає клієнтську процедуру;
* клієнтська процедура викликає серверну;
* серверна процедура функціонує з даними;
* результат повертається на клієнт ERP. Вона схожа на SQL, але адаптована під об’єкти платформи. Для чого застосовується для
'''Масив''' — список значень. Приклад
Це значно швидше і менше навантажує базу. :contentReference [oaicite:1]{index=1}
}
Контрагент = Справочники.Контрагенты.НайтиПоКоду("000000123");
<syntaxhighlight lang="text">
інформаційні дані = Новый Структура;
Док = Документы.РеализацияТоваровУслуг.СоздатьДокумент();
== Що перевірити перед міграцією коду 1С ==
КонецЦикла;
Если Не ЗначениеЗаполнено(Контрагент) Тогда
<syntaxhighlight lang="text">
&НаКлиенте
Перед міграцією потрібно перевірити:
'''Мова 1С — це місце, де технічний код перетворюється на облікову поведінку бізнесу.'''
</div>
* передати замовлення на сайт;
* отримати оплату з банку;
* вивантажити залишки;
* отримати курси валют;
* передати інформаційні дані в CRM;
* обмінятися з K2 ERP;
* викликати API. Такий підхід часто застосовується для в обмінах, імпорті замовлень, міграції даних і зовнішніх обробках. інформаційні дані.Вставить("customer", "ТОВ Ромашка");
{| class="wikitable" style="width:100%;"
</div>
&НаСервереБезКонтекста
Виконання запиту в коді:
При описі мови 1С і розробки для [[1С]] / [[BAS]] в українському контексті потрібно згадувати санкційні та безпекові ризики. Розробник пише запит, а СКД дає можливість користувачу:
СписокКодів.Добавить("SKU-002");
<syntaxhighlight lang="text">
Таблиця.Колонки.Добавить("Кількість");
== Таблиця значень ==
* хто змінив код;
* коли змінив;
* що саме змінив;
* для якої задачі;
* чи було тестування;
* чи виступає як резервна копія;
* чи вплинула зміна на регістри;
* чи змінилися звіти;
* чи потрібно перепроведення;
* чи потрібно перезакриття місяця. Таблиця.Колонки.Добавить("Номенклатура");
Залишок = ОтриматиЗалишокЗапитом(Рядок.Номенклатура);
[[Категорія:Модулі 1С]]
Рух.Период = Дата;
== Запити 1С ==
== Умови ==
Обробка помилок важлива для: Рух = Движения.ТоварыНаСкладах.Добавить(); КороткоСума = Сума + Рядок.Сума; &НаСервере Висновок
ВЫБРАТЬ КонецПроцедуры Мова 1С тісно пов’язана з метаданими конфігурації: довідниками, документами, регістрами, планами рахунків, звітами, обробками й модулями. Соответствие — словник ключ → значення. Що означає Під час переходу з 1С або BAS у K2 ERP критично аналізувати не тільки інформаційні дані, а й код.== Приклад: перевірка залишку перед продажем == Приклад:
! Краще:
<syntaxhighlight lang="text">
При переході з [[1С]] або [[BAS]] у [[K2 ERP]] критично не намагатися механічно переписати весь старий код. Док.Дата = ТекущаяДата();
КонецЦикла;
== Мова 1С і Power BI ==
'''Головне.''' Мова 1С — це інструмент, яким описують поведінку облікової системи: що робить документ при проведенні, як заповнюється форма, як формується звіт, як функціонує обмін і які рухи потрапляють у регістри. як приклад:
Возврат Сума;
Приклад циклу з лічильником:
Запит.УстановитьПараметр("ДатаОстатков", ТекущаяДата());
<syntaxhighlight lang="text">
Для Номер = 1 По 10 Цикл
<div style="border:3px solid #2e7d32; background:#e8f5e9; padding:14px; margin:16px 0;">
Процедура Привітатися()
Исключение
{| class="wikitable" style="width:100%;"
== Загальні модулі ==
! Procedure SayHello()
<syntaxhighlight lang="text">
{| class="wikitable" style="width:100%;"
Код зберігається в модулях: модулях об’єктів, форм, загальних модулях, модулях менеджерів, командах, зовнішніх обробках і звітах. | Переносити не текст коду, а потрібну бізнес-логіку в K2 ERP, API або Power BI. Указ Президента України №184/2020 ввів у дію рішення для бізнесу [[РНБО]] щодо сценарії використання, скасування і внесення змін до санкцій, а Держспецзв’язку веде перелік забороненого до використання програмного забезпечення, де згадуються продукти 1С/BAS, зокрема 1C:компанія-користувач 8 і BAS ERP. За допомогою мови 1С описують:
Если Залишок < РядокТовару.Кількість Тогда
Сообщить("Недостатньо товару: " + Строка(РядокТовару.Номенклатура));
Отказ = Истина;
КонецЕсли;
КонецЦикла;
Залишок = ОтриматиЗалишок(РядокТовару.Номенклатура, складський облік, Дата); HTTP-запити в 1СРегламентні задача мовою 1С |
== Типова помилка: запит у циклі ==
КонецПроцедуры Практичний сенс. Без мови 1С конфігурація була б набором таблиць і форм. Приклад Повідомити("Привіт! Вона здатна:
Зовнішні звіти використовуються для: </syntaxhighlight> == Приклад простого коду 1С ==
<syntaxhighlight lang="text">
== Варіанти перенесення логіки 1С у K2 ERP ==
РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаОстатков) КАК ТоварыНаСкладахОстатки
У сучасних інтеграціях 1С часто функціонує з JSON. Для Каждого РядокТовару Из Товары Цикл
це вбудована мова програмування платформи [[1С]] / 1С:компанія-користувач.<syntaxhighlight lang="text">
Таблиця = Новый ТаблицаЗначений;
Если Сума > 10000 Тогда
<div style="border:3px solid #2e7d32; background:#e8f5e9; padding:14px; margin:16px 0;">
Вибірка = Результат.Выбрать();
<div style="border:3px solid #ef6c00; background:#fff3e0; padding:14px; margin:16px 0;">
{
== Модулі 1С ==
Зовнішні посилання |
Рядок.Сумма = 1500; | Мова 1С — це “нервова платформа”, яка описує, як ці об’єкти поводяться. Процедура виконує дію, але не повертає результат. Їх потрібно запускати тільки після перевірки, резервної копії і розуміння наслідків. Указ Президента України №184/2020 ввів у дію рішення для бізнесу РНБО від 14 травня 2020 року щодо сценарії використання, скасування і внесення змін до персональних спеціальних економічних та інших обмежувальних заходів. Що робить код
Таблиця значень часто застосовується для в обробках, звітах, інтеграціях і проміжних розрахунках.</syntaxhighlight>
</syntaxhighlight> Рух.Номенклатура = РядокТовару.Номенклатура; Що таке мова 1С? |
|---|---|---|---|---|---|
| Запит у циклі | Розробник робить окремий запит для кожного рядка | Повільна робота системи | |||
| Немає перевірки заповнення | Код не перевіряє обов’язкові поля | Документи проводяться з помилками | |||
| Ручні рухи без логіки | Рухи створені без контролю залишків | Неправильні регістри | |||
| Код на клієнті замість сервера | Неправильне розділення логіки | Помилки і повільна робота | |||
| Немає обробки помилок | інтеграційні функції ERP падає без пояснення | Важко підтримувати | |||
| Хардкод | Значення зашиті в коді | Важко змінювати систему | |||
| Немає логування | Помилки не фіксуються | Неможливо знайти причину |
Код регламентного задача має бути стійким до помилок і мати логування. |- | Типова логіка | Замінити стандартним механізмом K2 ERP | Продаж, закупівля, складський облік |- | Корисне доопрацювання | Реалізувати як бізнес-правило | Контроль мінімальної ціни |- | Застарілий код | Не переносити | Старий обмін із неактивним сайтом |- | інтеграційні функції ERP | Перепроєктувати через API | Банк, сайт, CRM |- | Звіт | Перенести в Power BI або стандартний звіт | продажі та реалізація з маржею |- | Міграційна обробка | Використати для разового експорту | Вивантаження залишків |- | Хардкод | Замінити налаштуваннями | складський облік, організація, вид ціни |}
HTTPСоединение = Новый HTTPСоединение("api.example.com", 443,,,,, Новый ЗащищенноеСоединениеOpenSSL);
[[Категорія:Розробка 1С]]
=== Чи схожа мова 1С на SQL? ===
== Мова 1С і міграція в K2 ERP ==
|- | компонент документа | Логіка документа | Business logic / workflow | Проведення, перевірки |- | Загальний компонент | Спільні функції | Service layer | Чи потрібна логіка |- | Зовнішня обробка | Окрема утиліта | Tool / migration script / API job | Безпека і актуальність |- | Зовнішній звіт | аналітичні інструменти | Report / Power BI | Контрольні суми |- | Регламентне задача | Автозапуск | Scheduler / background job | Логи і статуси |- | HTTP-сервіс | API | REST API | Авторизація, формат |- | Запит 1С | Вибірка даних | SQL/API/Dataset | Звірка результатів |}
Що таке компонент об’єкта?
Приклад спрощеної логіки:
Сценарії:
- вивантаження довідників;
- вивантаження документів;
- вивантаження регістрів;
- вивантаження залишків;
- формування JSON;
- підготовки контрольних сум;
- перевірки міграції;
- аналізу старої бізнес-логіки;
- паралельного запуску 1С/BAS і K2 ERP;
- підготовки даних для Power BI. Це спрощений приклад, але він показує суть: документ створює рухи, які потім впливають на залишки і звіти. критично. Код 1С здатна змінити документи, регістри, залишки, зарплату, ПДВ і фінансовий результат. Ціни.Вставить("SKU-002", 850);
Запит.Текст = " Если ЗначениеЗаполнено(Контрагент) Тогда Повідомити(Сума); Рядок.Цена = 150; Приклад функції в загальному модулі:
Мова 1С — це вбудована мова платформи 1С:компанія-користувач, яка застосовується для для програмування бізнес-логіки, документів, форм, регістрів, звітів, обробок та інтеграцій. |ВЫБРАТЬ | ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура, | ТоварыНаСкладахОстатки.КоличествоОстаток КАК Остаток |ИЗ | РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаОстатков) КАК ТоварыНаСкладахОстатки";
Події дозволяють виконувати код у потрібний момент. Док.складський облік = складський облік; ЗапросHTTP.Заголовки.Вставить("Content-Type", "application/json");
Приклад формування структури для JSON:
У 1С часто використовуються службові типи даних.</syntaxhighlight>
</syntaxhighlight>
</syntaxhighlight>
- не робити запити в циклі без потреби;
- використовувати регістри замість перебору документів;
- перевіряти обов’язкові поля;
- логувати інтеграції;
- опрацьовувати помилки;
- не хардкодити ключові значення;
- розділяти клієнтський і серверний код;
- писати зрозумілі імена процедур;
- коментувати складну логіку;
- тестувати на копії бази;
- перевіряти рухи документів;
- перевіряти контрольні звіти після змін.== Логування ==
як приклад, документ реалізації здатна створити рух:
КонецПопытки; </syntaxhighlight>
ЗаповнитиТовариНаСервері();
Приклад результату:
</syntaxhighlight>