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

Мова 1С

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

Если ЗначениеЗаполнено(Контрагент) Тогда

Погано:

Санкції та ризики використання 1С/BAS в Україні

 Док.Записать();
</div>
Рядок.Количество = 10;

КонецЕсли;
 РядокТовару.Сума = СумаРядка;

{{SEO

</syntaxhighlight>

 Повідомити("Звичайна сума документа");

як ілюстрація:

Таблиця.Колонки.Добавить("Сума");

* заповнення документів;
* проведення документів;
* рухи по регістрах;
* перевірки перед записом;
* алгоритми розрахунків;
* форми користувача;
* кнопки і команди;
* зовнішні обробки;
* зовнішні звіти;
* друковані форми;
* обміни даними;
* HTTP-сервіси;
* JSON/XML-інтеграції;
* регламентні задача;
* правила доступу;
* запити до бази даних;
* обробку помилок.; Саме код описує, як документи впливають на обліковий облік, залишки, борги, собівартість і формування звітів.; Задача

== Загальні модулі ==

{

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

&НаСервере

Логувати варто:

!; Повідомити("Велика сума документа");
== Проведення документа мовою 1С ==
'''Загальні модулі''' використовуються для спільного коду, який потрібен у різних місцях конфігурації.;

Регламентні задача мовою 1С

; Код регламентного задача має бути стійким до помилок і мати логування.; Значення

Робота з довідниками

Док.Контрагент = Контрагент;

КонецПроцедуры ЗаписJSON.УстановитьСтроку();

<syntaxhighlight lang="text">

Мова 1С надає можливість створювати документи.; // Тут має змогу бути серверна логіка заповнення
Док.Записать(РежимЗаписиДокумента.Проведение);
[[Категорія:Реплікатор K2]]

Мова 1С — це вбудована мова платформи 1С:організація, яка застосовується для програмування бізнес-логіки, документів, форм, регістрів, звітів, обробок та інтеграцій.; | Для бізнес-логіки, документів, форм, звітів, регістрів, обробок та інтеграцій.; Мова 1С має змогу використовуватися для підготовки даних для [[Power BI]]:

[[Категорія:Зовнішні звіти]]

<div style="border:3px solid #b71c1c; background:#ffebee; padding:14px; margin:16px 0;">

[[Категорія:BAS ERP]]

{| class="wikitable" style="width:100%;"

<syntaxhighlight lang="text">

<syntaxhighlight lang="text">

КонецФункции
Що таке мова 1С?; СписокКодів.Добавить("SKU-002"); Зовнішній звіт 1С має змогу містити запити, СКД і код для формування аналітики.; як ілюстрація, складний запит або запис об’єкта не повинен виконуватися напряму в клієнтському коді.;

Процедура ОбработкаПроведения(Отказ, РежимПроведения)

компонент документа Логіка документа 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С розміщується в модулях.; як ілюстрація, документ реалізації має змогу створити рух:
Процедура виконує дію, але не повертає результат.;
[[Категорія:Рухи документа]]

Параметри.Вставить("Дата", ТекущаяДата());

У коді 1С має змогу бути захована критична бізнес-логіка:

* права доступу;
* зовнішні обробки;
* небезпечні масові зміни;
* інтеграційні токени;
* персональні інформаційні дані;
* зарплату;
* банківські реквізити;
* собівартість;
* ПДВ;
* логування;
* аудит дій.; Якщо ця логіка функціонує в ризиковому або підсанкційному ПЗ, компанії потрібно оцінити юридичні, технічні та кібербезпекові ризики і планувати перехід на безпечну ERP-платформу.; | Підпрограма, яка повертає значення.; Тип

* управлінської аналітики;
* перевірки залишків;
* міграційних вибірок;
* контролю ПДВ;
* аналізу взаєморозрахунків;
* аналізу виробництва;
* експорту в Excel;
* підготовки даних для Power BI.; Перед підтримкою, використанням або міграцією таких систем потрібно перевіряти актуальні офіційні обмеження.; | Проведення, запити, клієнт-сервер, інтеграції, права, хардкод, продуктивність.; Що означає

* завантажити банківську виписку;
* оновити ціни;
* вивантажити залишки на сайт;
* перевірити статуси замовлень;
* сформувати звіт;
* виконати обмін;
* очистити тимчасові інформаційні дані;
* перевірити помилки інтеграції.; У мові 1С є собою цикли.; компонент

* інтеграцій;
* запису документів;
* проведення;
* роботи з файлами;
* HTTP-запитів;
* регламентних завдань;
* міграційних обробок.;<syntaxhighlight lang="text">

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

* змінені модулі конфігурації;
* зовнішні обробки;
* зовнішні звіти;
* регламентні задача;
* HTTP-сервіси;
* інтеграції;
* друковані форми;
* код проведення документів;
* загальні модулі;
* ручні обробки для бухгалтерії;
* обробки завантаження банку;
* обробки прайсів;
* обробки міграції;
* СКД-звіти;
* хардкод;
* обхід прав доступу;
* небезпечні масові зміни.;[[Категорія:Програмування 1С]]
{{DISPLAYTITLE:Мова 1С}}

Мова 1С тісно пов’язана з метаданими конфігурації: довідниками, документами, регістрами, планами рахунків, звітами, обробками й модулями.; інформаційні дані.Вставить("order_number", "WEB-10025");
== Запити 1С ==

Иначе

== Аудит змін коду ==
== Зовнішні посилання ==

&НаСервере

 Message("Hello!; При описі мови 1С і розробки для [[1С]] / [[BAS]] в українському контексті потрібно згадувати санкційні та безпекові ризики.; Для Каждого РядокТовару Из Товары Цикл
У сучасній ERP-архітектурі логіка, яка раніше була написана мовою 1С, має змогу бути розподілена між:
[[СКД 1С]] часто використовує запити як джерело даних.; Спрощений приклад:
'''Функція''' повертає значення.; Процедура СервернаПроцедура()

 Повідомити(Вибірка.Номенклатура);
'''Головне.''' Мова 1С — це інструмент, яким описують поведінку облікової системи: що робить документ при проведенні, як заповнюється форма, як формується звіт, як функціонує обмін і які рухи потрапляють у регістри.; |-
| Запит у циклі
| Розробник робить окремий запит для кожного рядка
| Повільна робота системи
|-
| Немає перевірки заповнення
| Код не перевіряє обов’язкові поля
| Документи проводяться з помилками
|-
| Ручні рухи без логіки
| Рухи створені без контролю залишків
| Неправильні регістри
|-
| Код на клієнті замість сервера
| Неправильне розділення логіки
| Помилки і повільна робота
|-
| Немає обробки помилок
| інтеграційні функціональні можливості падає без пояснення
| Важко підтримувати
|-
| Хардкод
| Значення зашиті в коді
| Важко змінювати систему
|-
| Немає логування
| Помилки не фіксуються
| Неможливо знайти причину
|}

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

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

Док = Документы.РеализацияТоваровУслуг.СоздатьДокумент();

Приклади:
== Особливості мови 1С ==
<syntaxhighlight lang="text">
 Для Каждого Рядок Из Товари Цикл
</div>

{| class="wikitable" style="width:100%;"

* винести складський облік у конфігурація;
* використовувати константу;
* використовувати регістр відомостей;
* використовувати роль або параметр;
* документувати правило.; !; Кількість = 10;

Если Не ЗначениеЗаполнено(Контрагент) Тогда

Краще:

* дату і час;
* користувача;
* дію;
* документ;
* параметри;
* результат;
* текст помилки;
* ID зовнішньої системи;
* JSON-запит або відповідь, якщо це безпечно;
* статус інтеграції.; '''Мова 1С''' — це вбудована прикладна мова платформи 1С:організація, призначена для розробки конфігурацій і доопрацювання бізнес-логіки.;
  • імпортувати інформаційні дані;
  • експортувати інформаційні дані;
  • робити масові зміни;
  • формувати JSON;
  • виконувати міграцію;
  • виправляти інформаційні дані;
  • перевіряти залишки;
  • формувати звіти;
  • працювати з API.; Процедура КлієнтськаПроцедура()

Параметри = Новый Структура;

  • ПередЗаписью;
  • ПриЗаписи;
  • ПередПроведением;
  • ОбработкаПроведения;
  • ПриОткрытии;
  • ПриСозданииНаСервере;
  • ПриИзменении;
  • ПередУдалением;
  • ПриНажатии;
  • ПриВыборе;
  • ОбработкаЗаполнения.; Погана практика:
Рух.Номенклатура = РядокТовару.Номенклатура;

Вона застосовується для тимчасових таблиць у коді.; Отказ = Истина;

Цикли

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

Вона має змогу:
Зовнішні звіти використовуються для:
== Хардкод у мові 1С ==

КонецЦикла;
Приклад спрощеної логіки:
'''істотно про [[1С]] та [[BAS]].''' В Україні продукти екосистеми [[1С]] і частина продуктів [[BAS]] пов’язані з санкційними, юридичними, кібербезпековими та репутаційними ризиками.; '''істотно.''' Код 1С має змогу змінити документи, регістри, залишки, зарплату, ПДВ і фінансовий результат.; Що робить код

Запит.УстановитьПараметр("ДатаОстатков", ТекущаяДата());
[[Категорія:Міграція з BAS]]

== компонент форми ==

НовийРядок.Сума = 1500;
<syntaxhighlight lang="text">

<syntaxhighlight lang="text">

Виконання запиту в коді:
інформаційні дані = Новый Структура;

== Для чого потрібна мова 1С ==

<syntaxhighlight lang="text">
Процедура Привітатися()

<syntaxhighlight lang="text">

У керованих формах істотно розуміти, де виконується код:

!; Що робити в K2 ERP

=== Що таке мова 1С? ===

Основні типи модулів:
Події дозволяють виконувати код у потрібний момент.; Мова 1С активно використовує подієву модель.; Приклад

* процедура;
* функція.; Возврат Сума;

Рядок = Док.Товары.Добавить();
 "order_number": "WEB-10025",
[[Категорія:Аудит дій]]
Параметри.Вставить("Організація", Організація);
[[Регламентні завдання 1С]] можуть запускати код автономно за розкладом.;
Для Каждого РядокТовару Из Товары Цикл

</syntaxhighlight>

Робота з документами

У реальних українських і російськомовних конфігураціях найчастіше зустрічається російськомовний синтаксис.;</syntaxhighlight> Умови використовуються для перевірок.; Змінні в 1С можуть створюватися без явного оголошення типу.; Контроль Це компонент конкретного довідника, документа або іншого об’єкта, де описується його поведінка: запис, проведення, перевірки, рухи.; КонецПопытки;

</syntaxhighlight>

Процедури і функції

Приклад: перевірка залишку перед продажем

Приклад формування структури для JSON:

Масив — список значень.; Таблиця = Новый ТаблицаЗначений;

Висновок

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

Таблиця.Колонки.Добавить("Кількість");

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

"customer": "ТОВ Ромашка",

КонецЕсли;

  • вибирати поля;
  • групувати;
  • фільтрувати;
  • сортувати;
  • рахувати підсумки;
  • робити розшифровки.; Мова 1С має кілька характерних особливостей:

Приклад перевірки заповнення реквізиту:

Для підтримки системи істотно знати:

КонецФункции

HTTPСоединение = Новый HTTPСоединение("api.example.com", 443,,,,, Новый ЗащищенноеСоединениеOpenSSL);

  • накопичення;
  • відомостей;
  • бухгалтерії;
  • розрахунків.; Питання

Код 1С часто функціонує з регістрами через рухи документів або запити.; * вивантаження продажів;

  • вивантаження залишків;
  • вивантаження взаєморозрахунків;
  • вивантаження собівартості;
  • вивантаження виробництва;
  • вивантаження зарплати;
  • формування проміжних таблиць;
  • формування JSON або CSV;
  • підготовка контрольних сум.; |-

| Що таке функція?; Приклад спрощеної логіки:

Типові помилки мови 1С

Приклад:

  • правила проведення документів;
  • розрахунок знижок;
  • розрахунок цін;
  • розрахунок собівартості;
  • виробничі алгоритми;
  • інтеграції з банками;
  • обміни з сайтами;
  • правила ПДВ;
  • зарплатні доопрацювання;
  • зовнішні обробки;
  • друковані форми;
  • СКД-звіти;
  • обмеження прав;
  • специфічні перевірки.; ЗапросHTTP.Заголовки.Вставить("Content-Type", "application/json");

Регістри можуть бути: Мова 1С потрібна для того, щоб платформа виконувала бізнес-правила компанії.;== Мова 1С і продуктивність == Запит.Текст = "

Ціни.Вставить("SKU-002", 850); У 1С застосовується конструкція Попытка / Исключение.; Мова 1С не є собою універсальною мовою на кшталт Java, Python або C#.; * backend-сервісами;

  • API;
  • workflow;
  • бізнес-правилами;
  • SQL;
  • BI-моделлю;
  • інтеграційною шиною;
  • чергами повідомлень;
  • планувальником задач;
  • мікросервісами;
  • Power BI;
  • K2 ERP.; ТоварыНаСкладахОстатки.складський облік КАК складський облік,

Тип значення визначається за тим, що присвоєно змінній.; Приклад </syntaxhighlight> У реальному коді залишок краще отримувати одним запитом по всіх товарах, а не окремим запитом у циклі.; Приклад результату:

Запити і СКД

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

як ілюстрація: Приклади:

Залишок = ОтриматиЗалишокЗапитом(Рядок.Номенклатура);

компонент об’єкта

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

Приклад функції в загальному модулі: Ціна = 150; Краще: ЗаписатьJSON(ЗаписJSON, інформаційні дані); У мові 1С є собою два основні типи підпрограм:

ВЫБРАТЬ

Сильна сторона мови 1С — тісна інтеграційні функціональні можливості з обліковою моделлю.; Соответствие — словник ключ → значення.; Держспецзв’язку веде офіційно затверджений перелік забороненого до використання програмного забезпечення та комунікаційного обладнання; у цьому переліку згадуються продукти 1С/BAS, зокрема 1C:організація 8 і BAS ERP.; Пока Вибірка.Следующий() Цикл &НаКлиенте

Отказ = Истина;
== Див.; додатково ==

<syntaxhighlight lang="text">

 Сообщить("Не заповнений контрагент");

Код 1С має змогу працювати з критичними даними.; // Особлива логіка

[[Зовнішня обробка 1С]] — це файл з кодом, який можна запускати без зміни основної конфігурації.; Одна з найважливіших задач мови 1С — [[Проведення документа 1С|проведення документів]].; ТоварыНаСкладахОстатки.КоличествоОстаток КАК Остаток
Продуктивність коду 1С залежить від:
[[Категорія:Міграція з 1С]]
<syntaxhighlight lang="text">
== Типові питання ==
 Возврат Кількість * Ціна;
[[Категорія:Регістри 1С]]
Під час переходу з [[1С]] або [[BAS]] у [[K2 ERP]] істотно аналізувати не тільки інформаційні дані, а й код.; Рядок.Сумма = 1500;

Процедура ЗаповнитиТовариНаСервері()
{| class="wikitable" style="width:100%;"
Procedure SayHello()
 Повідомити("Привіт!; * не робити запити в циклі без потреби;
* використовувати регістри замість перебору документів;
* перевіряти обов’язкові поля;
* логувати інтеграції;
* обробляти помилки;
* не хардкодити ключові значення;
* розділяти клієнтський і серверний код;
* писати зрозумілі імена процедур;
* коментувати складну логіку;
* тестувати на копії бази;
* перевіряти рухи документів;
* перевіряти контрольні звіти після змін.; |ВЫБРАТЬ
| ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура,
| ТоварыНаСкладахОстатки.КоличествоОстаток КАК Остаток
|ИЗ
| РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаОстатков) КАК ТоварыНаСкладахОстатки";

 Если Не ЗначениеЗаполнено(Контрагент) Тогда

При переході з [[1С]] або [[BAS]] у [[K2 ERP]] істотно не намагатися механічно переписати весь старий код.;<syntaxhighlight lang="text">

Це спрощений приклад, але він показує суть: документ створює рухи, які потім впливають на залишки і звіти.;<div style="border:3px solid #1565c0; background:#e3f2fd; padding:14px; margin:16px 0;">
Приклад кнопки:
 КонецЦикла;
За допомогою мови 1С описують:
[[Категорія:Power BI]]
Позначки:

СписокКодів.Добавить("SKU-001"); СписокКодів = Новый Массив;

Сообщить("Не заповнений контрагент");
Повідомити(ТекстПовідомлення);

Ні.; Відповідь

Контрагент = Справочники.Контрагенты.НайтиПоКоду("000000123");

У реальному коді потрібно обробляти помилки, статуси, авторизацію, таймаути і логування.; Це приклад коду 1С."); |- | Типова логіка | Замінити стандартним механізмом K2 ERP | Продаж, закупівля, складський облік |- | Корисне доопрацювання | Реалізувати як бізнес-правило | Контроль мінімальної ціни |- | Застарілий код | Не переносити | Старий обмін із неактивним сайтом |- | інтеграційні функціональні можливості | Перепроєктувати через API | Банк, сайт, CRM |- | Звіт | Перенести в Power BI або стандартний звіт | продажі та реалізація з маржею |- | Міграційна обробка | Використати для разового експорту | Вивантаження залишків |- | Хардкод | Замінити налаштуваннями | складський облік, організація, вид ціни |}

Приклади подій:

Приклад: ТаблицаЗначений — один із найпоширеніших типів у мові 1С.; !; Ціни = Новый Соответствие;

Правильна міграція мови 1С — це не перенесення синтаксису, а перенесення корисної бізнес-логіки в сучасну, безпечну і контрольовану ERP-архітектуру.; Код зберігається в модулях: модулях об’єктів, форм, загальних модулях, модулях менеджерів, командах, зовнішніх обробках і звітах.; Приклад Ключове слово Экспорт надає можливість викликати функцію з інших модулів.; | Переносити не текст коду, а потрібну бізнес-логіку в K2 ERP, API або Power BI.; Приклад створення елемента довідника: </syntaxhighlight> Приклад пошуку за кодом: КонецЕсли; </syntaxhighlight> Приклад циклу по рядках табличної частини документа:

Зовнішні звіти мовою 1С

HTTP-запити в 1С

Попытка

Залишок = ОтриматиЗалишок(РядокТовару.Номенклатура, складський облік, Дата);
Сума = 0;

</syntaxhighlight> !;=== Чому код 1С має змогу бути небезпечним? === Приклад циклу з лічильником:

компонент форми відповідає за поведінку інтерфейсу.;== Що таке мова 1С ==

Логування

Типова помилка клієнт-сервер

!; !;== Події в 1С ==

Мова 1С — це ключовий інструмент розробки й доопрацювання систем 1С/BAS.; |- | Де пишеться код?; Мова 1С — це прикладна мова програмування, а мова запитів 1С — окрема SQL-подібна мова для вибірки даних із бази.; КонецПроцедуры

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

Робота з регістрами

Що істотно при міграції з 1С у K2 ERP?

КонецЦикла;

Сума = Кількість * Ціна;

КонецПроцедуры КонецПроцедуры Для Каждого РядокТовару Из Товары Цикл компонент об’єкта містить код, який стосується конкретного об’єкта.; Мова 1С має власну мову запитів.; Це значно швидше і менше навантажує базу.; Приклади типів:

КонецЦикла;

Функция ОтриматиСумуДокумента(Товари) Экспорт

</syntaxhighlight> </syntaxhighlight> Клієнтський код функціонує в інтерфейсі користувача.; Наслідок

Ціни.Вставить("SKU-001", 1200);

ЗапросHTTP = Новый HTTPЗапрос("/orders");

Обробка помилок

</syntaxhighlight> Процедура ЗаписатиПовідомлення(ТекстПовідомлення)

</syntaxhighlight>

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

== Карта міграції коду 1С ==
== Масиви, структури і відповідності ==
Приклад:
=== Чи схожа мова 1С на SQL? ===
'''Проста аналогія.''' Конфігурація 1С — це “скелет” системи: довідники, документи, регістри, звіти.;[[Категорія:Міграція даних]]

* на клієнті;
* на сервері;
* на сервері без контексту;
* на клієнті на сервері через виклик.; | Підпрограма, яка виконує дію і не повертає значення.;<syntaxhighlight lang="text">

НовийКонтрагент = Справочники.Контрагенты.СоздатьЭлемент();

!; :contentReference [oaicite:1]{index=1}

НовийРядок.Номенклатура = "Товар А";

 Рух.ВидДвижения = ВидДвиженияНакопления.Расход;

* хто змінив код;
* коли змінив;
* що саме змінив;
* для якої задачі;
* чи було тестування;
* чи є собою резервна копія;
* чи вплинула зміна на регістри;
* чи змінилися звіти;
* чи потрібно перепроведення;
* чи потрібно перезакриття місяця.; | Вбудована мова програмування платформи 1С:організація.; Потрібно контролювати:

Сценарії:
 ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура,
 Рух.Период = Дата;

КонецЦикла;

</div>

Що таке компонент об’єкта?

<syntaxhighlight lang="json">
Логування потрібне, щоб зрозуміти, що сталося в системі.; Повідомити("Рядок " + Строка(Номер));
|-
| компонент об’єкта
| Логіка конкретного документа або довідника
| Проведення реалізації
|-
| компонент форми
| Логіка форми користувача
| Натискання кнопки
|-
| Загальний компонент
| Спільні процедури і функції
| Розрахунок цін, інтеграції
|-
| компонент менеджера
| Логіка менеджера об’єкта
| Створення, пошук, службові методи
|-
| компонент команди
| Обробка команди
| Кнопка “Вивантажити JSON”
|-
| компонент сеансу
| Логіка старту сеансу користувача
| Ініціалізація параметрів
|-
| компонент керованого додатка
| Загальна логіка клієнтського додатка
| Стартові конфігурація
|}

Правильний підхід:

<syntaxhighlight lang="text">

<syntaxhighlight lang="text">

* перевірку перед записом;
* перевірку перед проведенням;
* формування рухів по регістрах;
* заповнення реквізитів;
* обробку проведення;
* скасування проведення.; Вона схожа на SQL, але адаптована під об’єкти платформи.; Після початку російської агресії проти України використання такого програмного забезпечення стало питанням не тільки бухгалтерії, а й кібербезпеки, комплаєнсу, репутації та цифрової незалежності.; ИЗ

== Реплікатор K2 і мова 1С ==
Якщо в документі 500 рядків, буде 500 запитів.; '''Хардкод''' — це коли значення жорстко записані в коді.; |}

У сучасних інтеграціях 1С часто функціонує з JSON.; Саме через код реалізуються правила бізнесу: як проводиться документ, як списуються товари, як розраховується ціна, як формується JSON, як функціонує звіт або як закривається місяць.; Об’єкт 1С
EndProcedure

== Мова 1С у сучасній ERP-архітектурі ==
== Типові приклади задач мовою 1С ==
 "total": 5300
== Що перевірити перед міграцією коду 1С ==
інформаційні дані.Вставить("total", 5300);

Если складський облік.Код = "000000001" Тогда

 КонецЕсли;

</div>

Але для регулярної BI-аналітики краще будувати стабільний шар даних, API або сховище, а не залежати від ручних обробок у старій базі.; !; Потрібно провести аудит: які алгоритми реально потрібні, які застаріли, які є собою дублями, які можна замінити стандартними механізмами K2 ERP, які варто винести в API, а які краще перенести в Power BI або окремі сервіси.; Слабка сторона — залежність бізнес-логіки від старої платформи, складність аудиту старого коду, ризики зовнішніх обробок, хардкод, проблеми продуктивності і санкційний контекст використання 1С/BAS в Україні.; | У модулях об’єктів, форм, загальних модулях, зовнішніх обробках і звітах.; !; Без аудиту зміни коду можуть створювати приховані помилки в обліку.; це вбудована мова програмування платформи / 1С:організація, яка застосовується; додатково реалізовано проведення документів, роботи з довідниками, регістрами, звітами, обробками, формами, інтеграціями, запитами, правами доступу та іншими об’єктами конфігурації виступає ключовою рисою опису бізнес-логіки забезпечується через Мова 1С.; Сума = РозрахуватиСуму(10, 150);

Док.Дата = ТекущаяДата();

Сума = Сума + Рядок.Сума;

Функция СервернаФункціяБезКонтексту() НовийКонтрагент.КодПоЕДРПОУ = "12345678"; |- | 100 | Число | Кількість = 100 |- | "Товар А" | Рядок | Назва = "Товар А" |- | '2026-05-15' | Дата | ДатаДок = ТекущаяДата() |- | Истина / Ложь | Булево | Проведено = Истина |- | Ссылка | Посилання на об’єкт | Контрагент = Документ.Контрагент |}

У 1С часто використовуються службові типи даних.; Рядок.Номенклатура = Номенклатура; !; Структура — набір ключів і значень.;</syntaxhighlight> !; ЗаповнитиТовариНаСервері();

КонецЕсли;

Рух.Количество = РядокТовару.Кількість;

ЗаписJSON = Новый ЗаписьJSON;

  • при проведенні реалізації списати товар зі складу;
  • при оплаті покупця закрити борг;
  • при надходженні товару сформувати партію;
  • при зміні ціни перевірити права користувача;
  • при створенні замовлення перевірити залишок;
  • при випуску продукції списати матеріали за специфікацією;
  • при закритті місяця розрахувати собівартість;
  • при інтеграції сформувати JSON;
  • при формуванні звіту отримати інформаційні дані з регістрів.; істотно. Код 1С часто містить критичну бізнес-логіку: фінансовий блок, складський облік, зарплату, ПДВ, банк, виробництво, собівартість, інтеграції та доступи.; Рух = Движения.ТоварыНаСкладах.Добавить();
Док.складський облік = складський облік;

Для Каждого Рядок Из Товары Цикл

!; Практичний сенс. Без мови 1С конфігурація була б набором таблиць і форм.; Приклад !; з цієї причини доступ до розробки, зовнішніх обробок і виконання коду має бути обмежений.; Практичний принцип міграції. При переході з 1С/BAS потрібно переносити не код як текст, а бізнес-логіку: які правила реально потрібні, які застаріли, які дублюються, а які краще реалізувати стандартними механізмами K2 ERP.; Вона розроблена насамперед для прикладної автоматизації обліку: бухгалтерії, складу, продажів, закупівель, зарплати, виробництва, ПДВ, взаєморозрахунків і регламентованої звітності.;== Приклад простого коду 1С ==

Рядок.Цена = 150; Він має змогу використовуватися для:

замовник і сервер у 1С

!; :contentReference [oaicite:0]{index=0} Рухи документа — основа облікової логіки.; Їх потрібно запускати тільки після перевірки, резервної копії і розуміння наслідків.; Вибірка = Результат.Выбрать();

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

Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)

Робота з JSON

Реплікатор K2 має змогу допомогти при переході з або BAS у K2 ERP.; Если Залишок < РядокТовару.Кількість Тогда

Сообщить("Недостатньо товару: " + Строка(РядокТовару.Номенклатура));
Отказ = Истина;
КонецЕсли;

КонецЦикла; </syntaxhighlight> Мова 1С надає можливість виконувати HTTP-запити до зовнішніх сервісів.; |- | Що істотно при міграції?;== Змінні ==

}

Коротко

!; This is a 1C code example.");

{| class="wikitable" style="width:100%;"

* робота з цінами;
* робота з залишками;
* розрахунок собівартості;
* формування JSON;
* обмін із сайтом;
* банківська інтеграційні функціональні можливості;
* службові перевірки;
* логування;
* права доступу;
* універсальні функції.; Логіка в 1С

з цієї причини знання мови запитів — одна з ключових навичок розробника 1С.; Ответ = HTTPСоединение.Получить(ЗапросHTTP);

як ілюстрація, у документі “Реалізація товарів” компонент об’єкта має змогу містити:

[[1С]] історично є собою російською програмною екосистемою.; |-
| Що таке процедура?;== Безпека коду 1С ==
== Мова 1С і міграція в K2 ERP ==

{| class="wikitable" style="width:100%;"

НовийРядок = Таблиця.Добавить();

[[Категорія:Запити 1С]]

Розробник пише запит, а СКД надає можливість користувачу:

<div style="border:3px solid #b71c1c; background:#ffebee; padding:14px; margin:16px 0;">
 РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаОстатков) КАК ТоварыНаСкладахОстатки
!; __TOC__
'''Критично.''' Зовнішні обробки можуть змінювати багато даних одразу.; При проведенні документ має змогу формувати рухи по регістрах.; Указ Президента України №184/2020 ввів у дію рішення для бізнесу [[РНБО]] щодо сфера застосування, скасування і внесення змін до санкцій, а Держспецзв’язку веде перелік забороненого до використання програмного забезпечення, де згадуються продукти 1С/BAS, зокрема 1C:організація 8 і BAS ERP.; Если Сума > 10000 Тогда
Для Номер = 1 По 10 Цикл
 КонецЦикла;

 Сообщить("Помилка запису документа: " + ОписаниеОшибки());
СумаРядка = РядокТовару.Кількість * РядокТовару.Ціна;

НовийРядок.Кількість = 10;

  • передати замовлення на сайт;
  • отримати оплату з банку;
  • вивантажити залишки;
  • отримати курси валют;
  • передати інформаційні дані в CRM;
  • обмінятися з K2 ERP;
  • викликати API.; Запит = Новый Запрос;

!; Исключение

</syntaxhighlight>

Таблиця значень

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

У продуктах BAS додатково застосовують, коли потрібно споріднена технологічна база, з цієї причини багато підходів до програмування, модулів, запитів і подій є собою подібними.;</syntaxhighlight>

  • натискання кнопки;
  • зміна поля;
  • відкриття форми;
  • заповнення табличної частини;
  • показ повідомлення;
  • виклик серверної процедури.; |-

| Для чого потрібна?; |- | Перевірка документа | Забороняє запис без обов’язкових полів | Не проводити без контрагента |- | Проведення | Формує рухи по регістрах | Списати товар зі складу |- | Заповнення | автономно заповнює табличну частину | Заповнити ціни |- | Звіт | Отримує інформаційні дані запитом | продажі та реалізація по товарах |- | інтеграційні функціональні можливості | Формує JSON і відправляє API | Передати замовлення |- | Міграція | Вивантажує довідники і залишки | Перенести в K2 ERP |}

</syntaxhighlight>

Повідомити(Сума);
<div style="border:3px solid #ef6c00; background:#fff3e0; padding:14px; margin:16px 0;">

[[Категорія:ERP]]

Результат = Запит.Выполнить();

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

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

Перед міграцією потрібно перевірити:

!; Указ Президента України №184/2020 ввів у дію рішення для бізнесу РНБО від 14 травня 2020 року щодо сфера застосування, скасування і внесення змін до персональних спеціальних економічних та інших обмежувальних заходів.;<syntaxhighlight lang="text">

JSON застосовується для інтеграцій із сайтами, банками, маркетплейсами, CRM, WMS, MES і K2 ERP.; Серверний код функціонує з базою, об’єктами, запитами і важкими обчисленнями.; Аналог у K2 ERP КонецФункции &НаСервереБезКонтекста інформаційні дані.Вставить("customer", "ТОВ Ромашка"); Повідомити(Сума);

Де зберігається код 1С?

Хардкод ускладнює міграцію, підтримку і тестування.;== Модулі 1С ==

Поганий код має змогу сповільнити всю базу, особливо в документах проведення, звітах і обмінах.; Таблиця.Колонки.Добавить("Номенклатура");

Мова 1С надає можливість створювати, шукати і змінювати елементи довідників.; Мова 1С — це “нервова платформа”, яка описує, як ці об’єкти поводяться.;== Мова 1С і Power BI == У K2 ERP частину старої логіки можна замінити стандартними механізмами, частину — налаштуваннями, частину — API, частину — окремими сервісами або BI-звітами.; |-

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

Потрібно знайти не без ускладнень код, а бізнес-логіку: правила проведення, розрахунки, перевірки, інтеграції, звіти, регламентні задача і зовнішні обробки.; НовийКонтрагент.Наименование = "ТОВ Ромашка";

&НаКлиенте

Як писати код 1С краще

Обробка помилок важлива для: КонецПроцедуры

Варіанти перенесення логіки 1С у K2 ERP

Док.Организация = Організація; Таблиця значень часто застосовується в обробках, звітах, інтеграціях і проміжних розрахунках.; !; Для чого застосовується

Рух.складський облік = складський облік;