Мова 1С
Если ЗначениеЗаполнено(Контрагент) Тогда
Погано:
Санкції та ризики використання 1С/BAS в Україні
Док.Записать();
</div>
Рядок.Количество = 10;
КонецЕсли;
РядокТовару.Сума = СумаРядка;
{{SEO
Повідомити(ТекстПовідомлення);
Ні.; Відповідь
Контрагент = Справочники.Контрагенты.НайтиПоКоду("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>
- 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
- Аудит дій
- Українське програмне забезпечення
- Цифрова незалежність
Що таке компонент об’єкта?
- Указ Президента України №184/2020
- Перелік забороненого до використання програмного забезпечення та комунікаційного мережевого обладнання
- Сайт K2 ERP
- Wiki K2 ERP
- хмарна інфраструктура K2 ERP
<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С:організація, яка застосовується; додатково реалізовано проведення документів, роботи з довідниками, регістрами, звітами, обробками, формами, інтеграціями, запитами, правами доступу та іншими об’єктами конфігурації виступає ключовою рисою опису бізнес-логіки забезпечується через Мова 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 має змогу допомогти при переході з 1С або 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Док.Организация = Організація; Таблиця значень часто застосовується в обробках, звітах, інтеграціях і проміжних розрахунках.; !; Для чого застосовується Рух.складський облік = складський облік; |