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

Модуль 1С

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

Ответ = HTTPСоединение.Получить(ЗапросHTTP);

</syntaxhighlight>

"ВЫБРАТЬ

Приклад: перенесення обміну з сайтом

!; # Перевірити розширення.; Якщо процедура або функція має слово `Экспорт`, її можна викликати з інших модулів.; Модулі потрібні для реалізації логіки системи.; * які перевірки прав були в коді;

  • які ролі використовувались;
  • які обмеження були не в ролях, а саме в модулях;
  • чи потрібно перенести ці правила в K2 ERP.;
    Простий приклад процедури:
    
    як ілюстрація, у [[1С]] має змогу бути доробка:
    [[Категорія:Імпорт даних]]
    Позначки:

|- | Перенести як бізнес-правило | Логіка актуальна і потрібна | Реалізується засобами K2 ERP |- | Замінити стандартним механізмом K2 ERP | У K2 ERP вже є собою така функція | Не потрібно копіювати старий код |- | Переробити | Старий код поганий, але ідея потрібна | Описується новий бізнес-процес |- | Не переносити | Логіка застаріла | Фіксується в протоколі |- | Залишити в архіві | Потрібна тільки історичний розвиток | Стара база застосовується для перегляду |}

!; * додаткові реквізити;

  • змінені форми;
  • нові команди;
  • обробники подій;
  • загальні модулі;
  • інтеграційний код;
  • перевизначену логіку.;== Як не треба робити ==

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

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

Возврат;
  • змінює ціну;
  • розраховує знижку;
  • формує собівартість;
  • присвоює сегмент клієнта;
  • змінює статус документа;
  • розподіляє витрати;
  • формує рухи по складах;
  • змінює дату обліку.; // Для кожного рядка виконується окремий запит
Если Не ЗначениеЗаполнено(Контрагент) Тогда

Що таке компонент у 1С

Потрібно перевірити:

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

  1. Зібрати список змінених модулів.; # Знайти розрахунки цін, знижок, собівартості.; За цими об’єктами часто стоїть програмний код.; Возврат Результат.Ссылка;

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

як ілюстрація, якщо компонент:

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

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

Отказ = Истина;
  • вбудована мова 1С;
  • мова 1С;
  • BSL;
  • 1C:Enterprise script;
  • мова конфігурації.; Бізнес-правило

У керованих формах код має змогу виконуватися на клієнті або на сервері.; Умова

Тоді BI-звіти залежать від цієї логіки.; Питання

  • у модулі документа;
  • у модулі форми;
  • у загальному модулі;
  • у зовнішній обробці;
  • у підписках на події;
  • у регламентних завданнях;
  • у розширеннях;
  • у друкованих формах;
  • у звітах.; * завантаження прайсу постачальника;
  • вивантаження товарів на сайт;
  • імпорт курсів валют;
  • експорт податкових накладних;
  • завантаження банківської виписки;
  • вивантаження залишків.; Функция РассчитатьСумму(Количество, Цена)
Сообщить("Документ не містить товарів.");
  • якщо замовник VIP — 10%;
  • якщо сума замовлення понад 100 000 грн — 5%;
  • якщо товар акційний — окрема ціна;
  • якщо менеджер має право — ручна знижка.;== Аналіз модулів перед міграцією ==
  • автономно виправляє інформаційні дані без пояснення;
  • блокує роботу незрозумілим повідомленням;
  • змінює документи заднім числом;
  • не показує причину помилки;
  • приховує винятки;
  • створює дублікати.; |}
Сообщить("Команду виконано.");

Движение.Период = Дата;

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

<syntaxhighlight lang="bsl">

КонецЕсли;

* формувати рухи по регістрах;
* формувати бухгалтерські проводки;
* списувати товари;
* оприбутковувати товари;
* змінювати взаєморозрахунки;
* змінювати залишки грошей;
* розраховувати ПДВ;
* контролювати залишки;
* створювати пов’язані документи.; * змінені типові модулі;
* загальні модулі з бізнес-логікою;
* модулі документів;
* модулі форм;
* модулі менеджерів;
* зовнішні обробки;
* інтеграційний код;
* запити до регістрів;
* ручні перевірки;
* правила проведення;
* обробники подій;
* регламентні задача;
* код із коментарями “тимчасово”;
* застарілий код, який уже не застосовується.; Перед міграцією потрібно зібрати всі зовнішні обробки, які реально використовуються.; Потрібно переносити бізнес-сенс.; Функция ПолучитьОсновнуюЦену(Номенклатура) Экспорт

!;[[Категорія:JSON]]

У старих базах [[1С]] інтеграції часто реалізовані саме в модулях або зовнішніх обробках.;{{SEO
|title=Модуль 1С — код, об’єкти, форми, загальні модулі, доробки та міграція в K2 ERP
|description=Модуль 1С: що це таке, як працюють модулі конфігурації, модулі об’єктів, форм, менеджерів, загальні модулі, серверний і клієнтський код, процедури, функції, події, типові помилки, аналіз доробок і перенесення бізнес-логіки з 1С у K2 ERP.
|keywords=модуль 1С, модулі 1С, код 1С, BSL 1С, вбудована мова 1С, загальний модуль 1С, модуль форми 1С, модуль об'єкта 1С, модуль менеджера 1С, процедура 1С, функція 1С, доробки 1С, конфігурація 1С, міграція з 1С, інтеграція з 1С, заміна 1С, K2 ERP, українська ERP, санкції 1С, санкції BAS, цифрова незалежність
|image=https://erp.kyiv.ua
}}

<syntaxhighlight lang="bsl">

!; Возврат Количество * Цена;

'''[[K2 ERP]]''' у цьому процесі має змогу стати новою платформою для контрольованих бізнес-правил, зрозумілих процесів, безпечних інтеграцій, [[API]], [[BI]]-аналітики, логіювання, прав доступу і подальшого розвитку автоматизації бізнесу без залежності від старої екосистеми [[1С]].;== Модулі і BI-аналітика ==

* які інформаційні дані потрібні сайту;
* хто є собою джерелом істини;
* як часто оновлювати;
* який формат використовувати;
* які помилки логіювати;
* як перевіряти результат;
* чи потрібен API замість файлового обміну.; У [[1С]] є собою не тільки довідники, документи, регістри, звіти й обробки.; # Зафіксувати результат у протоколі міграції.;== Модулі і регістри ==
[[Категорія:Обмін даними]]
== Модулі і розширення ==
== Модулі і запити ==
== Клієнтський і серверний код ==
 Возврат Количество * Цена;

У модулях можуть бути перевірки прав.; Де знайдено

Під час міграції такі інформаційні дані потрібно не без ускладнень переносити, а переоформлювати безпечно.; рішення для бізнесу
'''Ризик безпеки.''' Якщо в модулях [[1С]] є собою паролі, токени або ключі доступу, їх не можна переносити в нову систему без перегляду.; {| class="wikitable" style="width:100%;"

Найчастіші помилки:
Приклад:
 
!; * перевіряє залишки;
* підставляє ціни;
* перевіряє ліміт боргу;
* формує проводки;
* створює рухи по складах;
* перевіряє ПДВ;
* формує друковану накладну;
* вивантажує інформаційні дані на сайт;
* відправляє повідомлення менеджеру;
* блокує проведення при помилках.; Якщо довідники і документи зберігають інформаційні дані, то модулі визначають, що платформа робить із цими даними: перевіряє, рахує, проводить, друкує, вивантажує, імпортує або змінює.; Обробники подій особливо важливі, бо саме вони автономно виконуються в потрібний момент.; Приклади подій:

Якщо цю логіку не знайти й не перенести в [[K2 ERP]], бізнес-процеси можуть змінитися несподівано.; Він має змогу використовуватися для:

</div>

компонент [[1С]] — це ключовий елемент конфігурації, у якому зберігається код і бізнес-логіка системи.; Знижка

* `&НаКлиенте`;
* `&НаСервере`;
* `&НаСервереБезКонтекста`;
* `&НаКлиентеНаСервереБезКонтекста`.; # Перевірити регламентні задача.; # Визначити, що реалізувати в [[K2 ERP]].; Погодження
!;[[Категорія:Документи 1С]]
[[Категорія:Запити 1С]]
== Загальний компонент ==

У модулі має змогу бути код, який:

'''істотно про 1С і BAS.''' [[1С]] та частина продуктів [[BAS]] мають санкційні, юридичні й кібербезпекові ризики в Україні.; # Знайти роботу з файлами, XML, JSON, API.; Запрос.УстановитьПараметр("Артикул", Артикул);

Під час переходу на [[K2 ERP]] модулі потрібно аналізувати так само уважно, як довідники, документи, регістри й залишки.; Саме модулі визначають, як документи проводяться, як перевіряються інформаційні дані, як розраховуються ціни, знижки, собівартість, як формуються друковані форми, як працюють інтеграції, обробки, запити й автоматичні процеси.; # Зібрати всі зовнішні обробки.; Перед міграцією варто перевірити:
У цьому прикладі компонент перевіряє, чи заповнений контрагент перед записом документа.; Перед міграцією потрібно описати важливу логіку.;[[Категорія:CSV]]
Перед переходом у [[K2 ERP]] потрібно знайти такі автоматичні сценарії.; Процедура ОбработкаПроведения(Отказ, РежимПроведения)
<syntaxhighlight lang="bsl">
 
!;

Міграція логіки з модулів у K2 ERP

|- | компонент об’єкта | Логіка конкретного об’єкта | Проведення документа |- | компонент форми | Логіка форми користувача | Натискання кнопки |- | компонент менеджера | Загальна логіка роботи з типом об’єкта | Створення документа або пошук елемента |- | Загальний компонент | Повторно використовувані функції | Розрахунок ціни, перевірка прав |- | компонент команди | Логіка окремої команди | Запуск обробки |- | компонент сеансу | Дії при старті сеансу | Початкова ініціалізація |- | компонент керованого додатка | Глобальна логіка клієнтського застосунку | Початкові конфігурація інтерфейсу |}

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

Приклад:

компонент форми відповідає за поведінку форми, яку бачить користувач системи.; Если Контрагент.Код = "000123" Тогда

  • спільні функції;
  • розрахунки;
  • перевірки;
  • обмін даними;
  • роботу з файлами;
  • роботу з API;
  • сервісні процедури;
  • правила заповнення;
  • функції для звітів;
  • функції для друкованих форм.; Приклад руху по регістру:
Движение.Количество = СтрокаТовары.Количество;

Модулі і API

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

</syntaxhighlight> Перед перенесенням потрібно зробити таблицю правил:

Модулі і тестування після міграції

КонецЕсли;

Обробники подій

КонецЕсли;

компонент проведення документа

Движение.Номенклатура = СтрокаТовары.Номенклатура;

З урахуванням санкційних, юридичних і кібербезпекових ризиків та BAS, аналіз модулів старої системи має бути частиною ширшої стратегії переходу на українське програмне забезпечення, цифрову незалежність і сучасну ERP-архітектуру.; Скидка = 15;

У у модулі документа має змогу бути правило:

Головне. компонент — це місце, де написана логіка системи.;</syntaxhighlight> У деяких базах логіка винесена в розширення.; Сообщить(Текст);

  • фізичних осіб;
  • працівників;
  • табелів;
  • зарплати;
  • паспортних даних;
  • ІПН;
  • банківських реквізитів;
  • контактної інформації.; | У них часто зберігається нестандартна бізнес-логіка, яку потрібно знайти й перенести в K2 ERP.; як ілюстрація, у документа “Реалізація товарів” компонент об’єкта має змогу містити:
Що таке компонент ?;

Але за цим документом має змогу бути код, який:

; Це накопичена логіка бізнесу.; Варіант
КонецЕсли;

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

Процедура ПриИзмененииКоличество(Элемент) Процедура РассчитатьСуммуНаСервере() Если Не РольДоступна("ПолныеПрава") Тогда

Приклад:

; Можливі варіанти:

</syntaxhighlight>

У модулях часто зустрічаються жорстко прописані значення.;== Модулі і інтеграції ==

VIP-клієнт 10% Високий Не потрібно
Замовлення понад 100 000 грн 5% Середній Не потрібно
Нижче мінімальної ціни Заборонено Критичний Потрібне погодження

Ознаки:

Приклад:

</syntaxhighlight>

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

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

Приклади інтеграцій:

Цифрова незалежність. Модулі — це не без ускладнень код.; Під час переходу істотно забрати з них цінні правила, але не переносити стару залежність, хаос і технічний борг.; # Знайти контроль залишків і боргів.; Приклад кнопки: Приклад: КонецПроцедуры !; !; У є собою кілька типів модулів.; | Для перевірок, проведення документів, форм, обробок, запитів, інтеграцій, друку, розрахунків і автоматичних дій.; |- | Що перевірити перед міграцією?; Для чого застосовується Загальний компонент — це компонент, який має змогу використовуватися з різних місць конфігурації.; Цей код має змогу виконуватися при натисканні кнопки на формі.; Її часто називають:

  • пошуку елементів довідника;
  • створення документів;
  • загальних методів об’єкта;
  • службової логіки;
  • запитів по цьому типу об’єкта;
  • інтеграційних дій.; РассчитатьСуммуНаСервере();

У загальних модулях часто зберігають:

</syntaxhighlight>

Если Остаток < Количество Тогда

Сообщить("Недостатньо товару на складі.");
Отказ = Истина;

КонецЕсли; </syntaxhighlight> Вони використовуються для:

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

Зовнішні обробки можуть:

  • початкової ініціалізації;
  • конфігурація параметрів;
  • перевірки користувача;
  • підготовки середовища;
  • обмежень доступу;
  • службових дій.;</syntaxhighlight>
Такий код потрібно аналізувати обережно, бо він має змогу впливати на всіх користувачів.;
Запрос.УстановитьПараметр("Дата", Дата);

Перед міграцією потрібно зрозуміти, які модулі впливають на аналітику.; Окремі продукти [[1С]] і [[BAS]] внесені до переліків забороненого програмного забезпечення для окремих категорій організацій в Україні.;

Або: Після перенесення логіки в K2 ERP потрібно тестувати не тільки інформаційні дані, а й поведінку системи.;

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

* знайти приховану бізнес-логіку;
* описати правила;
* відмовитися від застарілого коду;
* прибрати небезпечні секрети;
* замінити старі інтеграції;
* перенести потрібні процеси в українську [[ERP]];
* не переносити технічний борг;
* зменшити залежність від [[1С]] і [[BAS]].; Потрібно зрозуміти, яка логіка працювала в старій системі.; |-
| Яка головна помилка?; Движение = Движения.Взаиморасчеты.Добавить();

== Модулі і продуктивність ==

КонецПроцедуры
  • залишки товарів;
  • взаєморозрахунки;
  • ціни;
  • курси валют;
  • касові залишки;
  • ПДВ;
  • бухгалтерські проводки;
  • табельний час;
  • собівартість;
  • виробничі витрати.; | Так.; Приклад логіки:

</syntaxhighlight>

Жорстко прописані значення

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

Функция НайтиПоАртикулу(Артикул) Экспорт
Номенклатура.Ссылка ИЗ Справочник.Номенклатура КАК Номенклатура ГДЕ Номенклатура.Артикул = &Артикул"; ; Функция РассчитатьПДВ(СуммаБезПДВ, СтавкаПДВ) Экспорт
  • отримує інформаційні дані документа;
  • заповнює макет;
  • розраховує підсумки;
  • формує табличний документ;
  • виводить форму на друк.;== компонент форми ==

Експортні процедури і функції

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

У практиці переходу з на K2 ERP модулі мають особливе значення, з цієї причини що саме в них часто містяться нестандартні доробки: правила проведення документів, обмін із сайтом, інтеграційні функціональні можливості з банком, розрахунок цін, собівартості, знижок, зарплати, перевірки залишків, формування XML, API-обміни, зовнішні обробки та прихована бізнес-логіка, яку потрібно знайти, описати й перенести в нову систему.; Возврат Неопределено;

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

Карта модулів

Друковані форми часто формуються через модулі.; |-

Чому модулі важливі при міграції?; # Розділити актуальну й застарілу логіку.; Ця функція приймає кількість і ціну, а повертає суму.;== Висновок ==

Приклад логіки:

Модулі і K2 ERP

; з цієї причини аналіз модулів часто є собою підготовчим етапом до переходу на українську ERP-платформу, а не розвитком старої системи.; Відповідь ; У багатьох компаніях роками доробляли.; &НаКлиенте

КонецЦикла;

Приклад: перенесення розрахунку знижок

Поганий компонент:

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

Модулі і права доступу

</syntaxhighlight>

; Коли застосовується
{{DISPLAYTITLE:Модуль 1С}}

* товари;
* ціни;
* залишки;
* характеристики;
* зображення;
* категорії;
* статуси.; Навіщо

Функция ПолучитьСумму(Количество, Цена)

Приклади нестандартної логіки:

!; '''компонент у [[1С]]''' — це текстова частина конфігурації, у якій зберігається код вбудованою мовою [[1С]].; | Це частина конфігурації, де зберігається програмний код вбудованою мовою 1С.; КонецЦикла;

* код без коментарів;
* застарілі доробки;
* дублювання функцій;
* одна й та сама логіка в кількох модулях;
* тимчасові виправлення стали постійними;
* немає документації;
* програміст, який писав код, уже не функціонує;
* компонент містить приховані бізнес-правила;
* запити працюють повільно;
* інтеграції залежать від старих файлів;
* код змінює проведені документи;
* код обходить стандартні перевірки;
* код має жорстко прописані шляхи до файлів;
* код має логіни, паролі або токени;
* код функціонує тільки на одному комп’ютері.; | компонент об’єкта, компонент форми, компонент менеджера, загальний компонент, компонент команди, компонент сеансу та інші.; Движение.Период = Дата;
<syntaxhighlight lang="bsl">
|-
| Документ.Реализация.МодульОбъекта
| Перевірка залишків, проведення продажу
| Висока
| Перенести правила проведення
|-
| ОбщийМодуль.ОбменССайтом
| Вивантаження товарів і цін
| Висока
| Замінити API-інтеграцією K2 ERP
|-
| ОбщийМодуль.РасчетСкидок
| Розрахунок знижок
| Середня
| Описати бізнес-правила
|-
| Обработка.ЗагрузкаПрайса
| Імпорт цін із Excel
| Середня
| Реалізувати імпорт у K2 ERP
|-
| ПечатнаяФорма.Счет
| Друк рахунку
| Низька
| Переробити шаблон
|}

Якщо [[1С]] інтегрувалася із зовнішніми системами, у модулях має змогу бути код роботи з HTTP.; Отказ = Истина;
Якщо компонент неправильно формує рухи, обліковий облік буде неправильним.; Доробки можуть бути:

== Модулі і друковані форми ==

</div>
Це спрощений приклад логіки проведення документа.; Що робить
</div>
Потрібно знайти:
== Основні типи модулів 1С ==
[[Категорія:API]]
"ВЫБРАТЬ
КонецФункции
Приклад поганого підходу:
HTTPСоединение = Новый HTTPСоединение("api.example.com", 443,,,,, Новый ЗащищенноеСоединениеOpenSSL);
Перед міграцією потрібно знайти такі функції, бо вони можуть використовуватися в багатьох місцях.;== Модулі і зовнішні обробки ==
'''Процедура''' виконує дію, але не повертає значення.; У [[K2 ERP]] краще не копіювати старий XML-код без аналізу, а описати обмін заново:

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

Розширення можуть містити:
'''Правильний підхід.''' Модулі [[1С]] потрібно розглядати не як код для копіювання, а як джерело бізнес-знань, які потрібно зрозуміти, очистити, описати і перенести в сучасну архітектуру [[K2 ERP]].; ПутьКФайлу = "C:\Exchange\prices.csv";

Під час переходу в [[K2 ERP]] не потрібно переносити технічний борг механічно.; Він має змогу використовуватися для:

Погані підходи:

== компонент менеджера ==

!; Потрібно замінити їх на безпечне зберігання секретів і оновити доступи.; !; КонецФункции

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

* якщо замовник має борг понад 50 000 грн, документ продажу не проводиться;
* якщо товар має серію з простроченим терміном, продаж заборонений;
* якщо ціна нижча мінімальної, потрібне погодження;
* якщо покупець не платник ПДВ, формується інший тип документа;
* якщо складський облік — “Резерв”, товар не вивантажується на сайт.;== Модулі і цифрова незалежність ==
Движение.Сумма = СуммаДокумента;

<syntaxhighlight lang="bsl">

 Если СуммаДокумента <= 0 Тогда
 Сообщить("Сума документа має бути більшою за нуль.");
 Отказ = Истина;
 КонецЕсли;
 
КонецПроцедуры

Цей код зберігається в модулях.; Для Каждого СтрокаТовары Из Товары Цикл

Если Результат.Следующий() Тогда

Код модулів має змогу виконуватися автономно за розкладом.; Правило

  • імпортувати інформаційні дані;
  • експортувати інформаційні дані;
  • масово змінювати документи;
  • оновлювати ціни;
  • формувати звіти;
  • проводити документи;
  • виправляти помилки;
  • обмінюватися з сайтом;
  • працювати з банком.; |-
Для чого потрібні модулі?; * пароль FTP;
  • токен API;
  • логін банку;
  • ключ сервісу;
  • email-пароль;
  • шлях до мережевої папки;
  • секретний ключ інтеграції.; # Знайти інтеграційний код.; Частина коду має змогу бути не в конфігурації, а в зовнішніх обробках.; Підхід K2 ERP. Під час переходу з модулі потрібно аналізувати як джерело бізнес-правил: що перевіряється, що розраховується, які документи проводяться, які інтеграції працюють, які обробки змінюють інформаційні дані, які правила потрібно перенести в K2 ERP, а які застаріли.; Модулі використовуються; додатково реалізовано обробки подій, проведення документів, перевірки даних, розрахунків, інтеграцій, друкованих форм, обмінів, запитів, автоматичних дій, роботи з формами, правами доступу і іншими механізмами системи.; Модулі можуть як захищати від помилок, так і створювати нові.; Модулі можуть впливати на BI непрямо.; # Знайти правила проведення документів.; Модулі можуть працювати з файлами:
Розуміння клієнтського і серверного коду важливе для продуктивності, інтеграцій і міграції логіки.; # Протестувати нові сценарії.;
== Модулі і персональні інформаційні дані ==

 // Далі формуються рухи

Приклад сценаріїв:
У модулі форми можуть бути:
Приклад:
[[Категорія:K2 ERP]]
<syntaxhighlight lang="bsl">
|-
| Контроль боргу клієнта
| компонент документа Реалізація
| Забороняє проведення при боргу понад ліміт
| Реалізувати в K2 ERP
|-
| Розрахунок знижки
| Загальний компонент Знижки
| Дає знижку за сегментом клієнта
| Описати як правило цін
|-
| Обмін із сайтом
| Загальний компонент ОбмінССайтом
| Вивантажує товари, ціни, залишки
| Замінити API
|}

Модулі часто записують інформаційні дані в регістри.; Окремі продукти [[1С]] і [[BAS]] внесені до відкритих переліків програмного забезпечення, забороненого до використання для окремих категорій організацій.; |-
| Які бувають модулі?; Приклад читання JSON або XML має змогу бути прихований у загальному модулі, зовнішній обробці або регламентному завданні.; Такі речі потрібно знайти перед міграцією, бо вони можуть бути критичними для роботи бізнесу.; Приклади ризикових даних:

Під час міграції потрібно вирішити, що робити з логікою модулів.;== Приклад: перенесення правила контролю залишків ==

* [[K2]]
* [[K2 ERP]]
* [[ERP]]
* [[1С]]
* [[BAS]]
* [[Конфігурація 1С]]
* [[Обробки 1С]]
* [[Запити 1С]]
* [[Документи 1С]]
* [[Довідники 1С]]
* [[Реквізити 1С]]
* [[Проводки 1С]]
* [[Журнал документів 1С]]
* [[Проведений документ 1С]]
* [[Непроведений документ 1С]]
* [[Номенклатура 1С]]
* [[Ціни номенклатури 1С]]
* [[Серії номенклатури 1С]]
* [[Курси валют 1С]]
* [[Каса 1С]]
* [[Податкова накладна 1С]]
* [[Фізичні особи 1С]]
* [[Табель обліку робочого часу 1С]]
* [[Собівартість 1С]]
* [[Інтеграція через файли]]
* [[Інтеграція через XML]]
* [[Імпорт даних]]
* [[Експорт даних]]
* [[API]]
* [[BI]]
* [[SQL]]
* [[JSON]]
* [[XML]]
* [[CSV]]
* [[Міграція з 1С]]
* [[Міграція з BAS]]
* [[Інтеграція з 1С]]
* [[Інтеграція з BAS]]
* [[Заміна 1С]]
* [[Заміна BAS]]
* [[Українське програмне забезпечення]]
* [[Автоматизація бізнесу]]
* [[Цифрова незалежність]]
* [[Деколонізація обліку]]

Це погана практика.; !; як ілюстрація:

[[Категорія:Заміна 1С]]
  • конфігурація процесів;
  • правила проведення;
  • перевірки;
  • API;
  • інтеграційні сценарії;
  • права доступу;
  • логіювання;
  • шаблони документів;
  • імпорт і експорт;
  • BI-аналітику;
  • регламентні задачі;
  • окремі модулі K2 ERP;
  • стандартні механізми системи.; рішення для бізнесу для K2 ERP

Експортні функції часто є собою важливою частиною архітектури конфігурації.; це частина конфігурації .; Під час міграції недостатньо перенести тільки інформаційні дані.; &НаСервере

Контроль залишків Заборонити продаж, якщо доступний залишок менший за кількість у документі
Винятки Дозволити тільки користувачам із роллю керівника складу або адміністратора
Повідомлення Показати товар, складський облік, доступний залишок і потрібну кількість
; Приклад

Окремо варто відзначити у якій зберігається програмний код вбудованою мовою платформи виступає ключовою рисою опису бізнес-логіки забезпечується через компонент 1С.; як ілюстрація: Результат = Запрос.Выполнить();

== Вступ ==
== Процедури і функції ==

[[Категорія:Модуль 1С]]

Процедура РассчитатьСуммуКоманда(Команда)

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

Добрий компонент:

* перевіряє обов’язкові поля;
* показує зрозуміле повідомлення;
* не надає можливість провести неправильний документ;
* логіює помилки;
* не змінює інформаційні дані мовчки.;
== компонент сеансу ==
Модулі часто містять обробники подій.; | Модулі документів, загальні модулі, форми, зовнішні обробки, розширення, інтеграції, регламентні задача, права доступу й секрети.;== Коротко ==

* заборона продажу нижче мінімальної ціни;
* автоматична знижка для VIP-клієнта;
* спеціальний розрахунок собівартості;
* унікальний алгоритм бонусів;
* автоматичне створення замовлення постачальнику;
* обмін із сайтом у нестандартному форматі;
* контроль боргу контрагента;
* особливий друк документів;
* правила заповнення податкових реквізитів.; У [[K2 ERP]] стару логіку модулів [[1С]] потрібно переносити не як копію коду, а як зрозумілі бізнес-правила.; Запрос.Текст =
 
 Объект.Сумма = Объект.Количество * Объект.Цена;
 
<syntaxhighlight lang="bsl">
 Движение = Движения.ТоварыНаСкладах.Добавить();

[[Категорія:Код 1С]]

Краще отримувати інформаційні дані одним запитом і обробляти результат.;</div>

== Див.; додатково ==
[[Категорія:Обробки 1С]]
 
КонецФункции
Потрібно:

Приклад: У новій системі це має змогу бути реалізовано через:

Нестандартні доробки в модулях

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

компонент має змогу містити:

Модулі і регламентні задача

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

  • обробники кнопок;
  • реакція на зміну поля;
  • відкриття допоміжних форм;
  • підказки;
  • перевірки перед записом;
  • актуалізація табличних частин;
  • розрахунок підсумків на екрані;
  • виклик серверних процедур.; Проблеми:
  • CSV;
  • XML;
  • JSON;
  • TXT;
  • Excel;
  • DBF;
  • ZIP;
  • зображеннями;
  • PDF;
  • файлами банку;
  • файлами обміну.; * рахунок;
  • видаткова накладна;
  • акт;
  • ТТН;
  • податкова накладна;
  • касовий ордер;
  • авансовий звіт;
  • внутрішній бланк;
  • етикетка;
  • штрихкод.; Усе це має змогу бути реалізовано в модулях.;
    <div style="border:3px solid #b71c1c; background:#ffebee; padding:14px; margin:16px 0;">
    
    * без ускладнень скопіювати старі модулі в нову систему;
    * переписати весь код без аналізу користі;
    * не питати бізнес-середовище, чи правила ще актуальні;
    * не шукати приховані інтеграції;
    * ігнорувати модулі зовнішніх обробок;
    * не аналізувати права доступу;
    * не перевіряти безпеку секретів;
    * не документувати знайдену логіку;
    * залишити [[1С]] активною як “тимчасове джерело логіки” після запуску [[K2 ERP]].; Приклад функції:
    
    <syntaxhighlight lang="bsl">
    
    Запрос.Текст =
    
    * щогодинний обмін із сайтом;
    * нічне актуалізація цін;
    * завантаження курсів валют;
    * формування резервних файлів;
    * відправка повідомлень;
    * синхронізація складів;
    * створення звітів;
    * очищення тимчасових даних.; | Остатки.Номенклатура,
    | Остатки.КоличествоОстаток
    |ИЗ
    | РегистрНакопления.ТоварыНаСкладах.Остатки(&Дата) КАК Остатки
    |ГДЕ
    | Остатки.складський облік = &складський облік";
    
    Процедура ЗаписатьСообщение(Текст)
    [[Категорія:Міграція з 1С]]
    
    <syntaxhighlight lang="bsl">
    Модулі часто виконують [[Запити 1С|запити]].; Потрібно переносити бізнес-правила, а не технічний борг старої системи.; Объект.Сумма = Объект.Количество * Объект.Цена;
    
    Перед міграцією потрібно знайти всі такі місця, бо вони показують, з якими зовнішніми системами пов’язана стара база.; Важливість
    
    {| class="wikitable" style="width:100%;"
    
    !; * [https://erp.kyiv.ua Сайт K2 ERP]
    * [https://wiki.erp.kyiv.ua Wiki K2 ERP]
    * [https://cloud.corp2.eu хмарна інфраструктура K2 ERP]
    * [https://cip.gov.ua/ua/statics/perelik-zaboronenogo-do-vikoristannya-programnogo-zabezpechennya-ta-komunikaciinogo-merezhevogo-obladnannya Перелік забороненого до використання програмного забезпечення на сайті Держспецзв’язку]
    * [https://www.president.gov.ua/documents/6012024-52009 Указ Президента України №601/2024]
    * [https://t.me/+uIdWI1W6vndkMTAy Telegram-канал K2 ERP]
    * [https://t.me/+6jFwAZM6TQliNTdi Група обговорення функціоналу та пропозицій]
    * [https://www.linkedin.com/company/k2erp/ LinkedIn K2]
    
    <div style="border:3px solid #b71c1c; background:#ffebee; padding:14px; margin:16px 0;">
    &НаКлиенте
    КонецПроцедуры
     Возврат СуммаБезПДВ * СтавкаПДВ / 100;
    == компонент команди ==
    Перед переходом у [[K2 ERP]] потрібно проаналізувати модулі.; Що робить
    
    == Документування модулів ==
    
    * сформувати звіт;
    * вивантажити файл;
    * запустити обробку;
    * оновити ціни;
    * створити документи;
    * відправити інформаційні дані;
    * виконати перевірку.; # Описати бізнес-правила людською мовою.; * довгі процедури на сотні або тисячі рядків;
    * повторення одного коду;
    * незрозумілі назви змінних;
    * відсутність коментарів;
    * закоментовані старі блоки;
    * тимчасові умови;
    * жорстко прописані коди;
    * залежність від старих довідників;
    * код для вже неактуальних процесів;
    * обробки, які ніхто не розуміє.;== Як правильно працювати з модулями перед міграцією ==
    
    [[Категорія:Цифрова незалежність України]]
    
    Для Каждого Строка Из Товары Цикл
    
    !; компонент
    Для міграції корисно створити карту модулів.; Такий код має змогу перевіряти залишки перед продажем.; # Знайти паролі, токени й небезпечні секрети.; Сообщить("Недостатньо прав.");
    
    Аналіз модулів [[1С]] — це частина підготовки до виходу зі старої ризикової системи.;[[Категорія:Українське програмне забезпечення]]
    [[Категорія:Довідники 1С]]
    !;== Контрольний список аналізу модулів ==
    
    * чи не вивантажуються персональні інформаційні дані у відкриті файли;
    * чи не передаються вони в сторонні сервіси;
    * чи не зберігаються в логах;
    * чи не доступні зайвим користувачам.;[[Категорія:Регістри 1С]]
     
    У старому модулі має змогу бути логіка:
    Запрос = Новый Запрос;

Приклад таблиці опису:

Чому модулі важливі для міграції

Типові помилки при аналізі модулів

Движение.Договор = Договор;

  • ПередЗаписью;
  • ПриЗаписи;
  • ОбработкаПроведения;
  • ПередУдалением;
  • ПриОткрытии;
  • ПриИзменении;
  • ПриСозданииНаСервере;
  • ПередЗакрытием;
  • ОбработкаЗаполнения.;
    Позначка `Экспорт` означає, що функцію можна викликати з інших модулів.; Перед міграцією потрібно зрозуміти:
    
     Сообщить("Не заповнено контрагента.");
    
     КонецЕсли;
    
    КонецПроцедуры
    
    * процедури;
    * функції;
    * обробники подій;
    * виклики запитів;
    * перевірки;
    * розрахунки;
    * роботу з документами;
    * роботу з довідниками;
    * роботу з регістрами;
    * інтеграційний код;
    * серверну логіку;
    * клієнтську логіку;
    * коментарі програмістів;
    * тимчасові доробки;
    * застарілий код.; У [[K2 ERP]] це потрібно описати як бізнес-правило:
    
    Запрос.УстановитьПараметр("складський облік", складський облік);
    <div style="border:3px solid #2e7d32; background:#e8f5e9; padding:14px; margin:16px 0;">
    !; | Перенести інформаційні дані без аналізу модулів і потім втратити важливу логіку роботи бізнесу.; | Ні.; Если Товары.Количество() = 0 Тогда
    
    * перевірки реквізитів;
    * проведення документів;
    * формування рухів по регістрах;
    * підстановки значень;
    * розрахунку сум;
    * розрахунку цін;
    * розрахунку знижок;
    * розрахунку собівартості;
    * формування друкованих форм;
    * виконання запитів;
    * роботи з файлами;
    * інтеграції з сайтами;
    * інтеграції з банками;
    * інтеграції з API;
    * роботи з XML, JSON, CSV;
    * обробки подій форми;
    * створення звітів;
    * автоматичних регламентних дій.; |-
    | Чи потрібно копіювати старий код у нову ERP?; Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
    
    == Паролі і токени в модулях ==
    
    '''компонент об’єкта''' містить код, який належить конкретному об’єкту: документу, довіднику, обробці або іншому елементу конфігурації.;== Зовнішні посилання ==
    |-
    | Модулі документів
    | Знайти правила проведення
    |-
    | Модулі форм
    | Знайти логіку інтерфейсу і кнопок
    |-
    | Загальні модулі
    | Знайти спільні бізнес-правила
    |-
    | Модулі менеджерів
    | Знайти службові функції
    |-
    | Зовнішні обробки
    | Знайти імпорт, експорт, масові зміни
    |-
    | Регламентні задача
    | Знайти автоматичні процеси
    |-
    | Інтеграційний код
    | Знайти зовнішні системи
    |-
    | Жорсткі значення
    | Знайти приховані залежності
    |-
    | Паролі й токени
    | Усунути ризики безпеки
    |}
    
    '''Найгірший сценарій.''' організація переносить інформаційні дані з [[1С]] у [[K2 ERP]], але не аналізує модулі.; Движение.Контрагент = Контрагент;
    
    як ілюстрація, користувач системи бачить документ “Реалізація товарів”.; Модулі можуть обробляти персональні інформаційні дані:
    
     // Логіка отримання ціни
    як ілюстрація:
    [[Категорія:Інтеграція з 1С]]
    
    компонент команди містить код, який виконується при запуску певної команди.; Коментар
    [[Категорія:ERP]]
     
    Поганий код у модулях має змогу сповільнювати систему.; {| class="wikitable" style="width:100%;"
    
    * сайт;
    * інтернет-магазин;
    * маркетплейс;
    * банк;
    * CRM;
    * WMS;
    * касова платформа;
    * M.E.Doc або інший сервіс звітності;
    * API постачальника;
    * Excel-файли;
    * XML-обмін;
    * JSON-обмін;
    * FTP;
    * email;
    * вебсервіси.; |-
    | Чи є собою санкційні ризики у [[1С]] і [[BAS]]?;== Модулі і файли ==
    
    Іноді в старих модулях зберігаються паролі, ключі доступу або токени API.;[[Категорія:XML]]
    
    * аналізувати тільки довідники й документи, ігноруючи код;
    * переносити інформаційні дані без бізнес-логіки;
    * не перевіряти зовнішні обробки;
    * не перевіряти розширення;
    * не шукати регламентні задача;
    * не документувати знайдені правила;
    * копіювати старий код без розуміння;
    * переносити застарілі доробки;
    * не перевіряти інтеграції;
    * не тестувати сценарії після запуску;
    * не залучати користувачів, які знають бізнес-процес.; Результат = Запрос.Выполнить().Выбрать();
     
    &НаКлиенте
Запрос = Новый Запрос;

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

Код у модулях пишеться вбудованою мовою платформи .;

компонент менеджера належить типу об’єкта загалом, а не конкретному екземпляру.; Після запуску виявляється, що в старій системі були приховані правила знижок, контролю боргу, обміну з сайтом, проведення документів і формування звітів, без яких новий бізнес-процес функціонує інакше.;== Для чого потрібні модулі == Один із найважливіших модулів — компонент проведення документа.;== Вбудована мова 1С ==

Движение.складський облік = складський облік;

Модулі і технічний борг

КонецФункции Якщо не проаналізувати розширення, можна пропустити важливі доробки.; Тип модуля компонент сеансу має змогу виконуватися при старті сеансу користувача.; * перевірку заповнення;
  • обробку запису;
  • проведення документа;
  • формування рухів;
  • контроль залишків;
  • контроль взаєморозрахунків;
  • розрахунок ПДВ;
  • роботу з табличною частиною.; Що перевірити
У модулях використовуються процедури і функції.; Старі модулі часто накопичують технічний борг.; Пріоритет організація повинна: <syntaxhighlight lang="bsl"> == Типові проблеми модулів 1С ==