Перейти до вмісту

Мова 1С

Матеріал з K2 ERP Wiki

У коді 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;

Повідомити(Вибірка.Номенклатура);
  • backend-сервісами;
  • API;
  • workflow;
  • бізнес-правилами;
  • SQL;
  • BI-моделлю;
  • інтеграційною шиною;
  • чергами повідомлень;
  • планувальником задач;
  • мікросервісами;
  • Power BI;
  • K2 ERP. Приклади подій:

Цикли

Загальні модулі використовуються для спільного коду, який потрібен у різних місцях конфігурації.</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> Для підтримки системи критично знати: Погано:

Повідомити("Велика сума документа");

критично про та BAS. В Україні продукти екосистеми і частина продуктів BAS пов’язані з санкційними, юридичними, кібербезпековими та репутаційними ризиками. Після початку російської агресії проти України використання такого програмного забезпечення стало питанням не тільки бухгалтерії, а й кібербезпеки, комплаєнсу, репутації та цифрової незалежності. Логіка в 1С

Мова 1С дає можливість створювати, шукати і змінювати елементи довідників. Тип

Структура — набір ключів і значень. Таблиця.Колонки.Добавить("Сума");

РядокJSON = ЗаписJSON.Закрыть();

Повідомити(ТекстПовідомлення);

</syntaxhighlight>

Приклад спрощеної логіки: Умови використовуються для перевірок. * управлінської аналітики;

  • перевірки залишків;
  • міграційних вибірок;
  • контролю ПДВ;
  • аналізу взаєморозрахунків;
  • аналізу виробництва;
  • експорту в Excel;
  • підготовки даних для Power BI. Процедура СервернаПроцедура()

Код 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);

  • імпортувати інформаційні дані;
  • експортувати інформаційні дані;
  • робити масові зміни;
  • формувати JSON;
  • виконувати міграцію;
  • виправляти інформаційні дані;
  • перевіряти залишки;
  • формувати звіти;
  • працювати з API. НовийКонтрагент.КодПоЕДРПОУ = "12345678";

&НаСервере

Зовнішні обробки мовою 1С

КонецПроцедуры </syntaxhighlight>

Регламентні завдання 1С можуть запускати код автоматизовано за розкладом. Змінні в 1С можуть створюватися без явного оголошення типу. Мова 1С — це прикладна мова програмування, а мова запитів 1С — окрема SQL-подібна мова для вибірки даних із бази.== компонент форми ==

Процедура ЗаповнитиТовари(Команда)

[[Категорія:Автоматизація бізнесу]]

<syntaxhighlight lang="text">

* орієнтована на бізнес-облік;
* має російськомовний і англомовний синтаксис у різних варіантах платформи;
* тісно інтегрована з метаданими;
* підтримує роботу з довідниками, документами, регістрами;
* має вбудовану мову запитів;
* підтримує клієнт-серверну архітектуру;
* має подієву модель;
* дає можливість створювати зовнішні обробки і звіти;
* активно використовує типи платформи: СправочникСсылка, ДокументОбъект, ТаблицаЗначений, Запрос тощо;
* застосовується для і для інтерфейсу, і для серверної бізнес-логіки. Если Не ЗначениеЗаполнено(Контрагент) Тогда

Тому знання мови запитів — одна з ключових навичок розробника 1С. Це компонент конкретного довідника, документа або іншого об’єкта, де описується його поведінка: запис, проведення, перевірки, рухи. !== Типові помилки мови 1С ==
Він здатна використовуватися для:
 Возврат Кількість * Ціна;
Хардкод ускладнює міграцію, підтримку і тестування. ! * процедура;
  • функція. У мові 1С виступає як цикли. JSON застосовується для для інтеграцій із сайтами, банками, маркетплейсами, CRM, WMS, MES і K2 ERP. Що робити в K2 ERP

Основні типи модулів:

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

Мова 1С у сучасній ERP-архітектурі

Отказ = Истина;

Мова 1С дає можливість виконувати HTTP-запити до зовнішніх сервісів. Значення

Змінні

Рух.складський облік = складський облік;
  • вибирати поля;
  • групувати;
  • фільтрувати;
  • сортувати;
  • рахувати підсумки;
  • робити розшифровки. Це приклад коду 1С.");
Одна з найважливіших задач мови 1С — проведення документів.
* мінус товар на складі;
* плюс борг покупця;
* дохід;
* ПДВ;
* собівартість. // Особлива логіка

[[Категорія:Код 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С тісно пов’язана з метаданими конфігурації: довідниками, документами, регістрами, планами рахунків, звітами, обробками й модулями. Соответствие — словник ключ → значення. Що означає Під час переходу з або 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>

  • дату і час;
  • користувача;
  • дію;
  • документ;
  • параметри;
  • результат;
  • текст помилки;
  • ID зовнішньої системи;
  • JSON-запит або відповідь, якщо це безпечно;
  • статус інтеграції. ! Реплікатор K2 здатна допомогти при переході з або BAS у K2 ERP. Об’єкт 1С

</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>