Модуль 1С
Код у модулях пишеться вбудованою мовою платформи 1С. Аналіз модулів 1С — це частина підготовки до виходу зі старої ризикової системи. |- | Що перевірити перед міграцією? КонецФункции </syntaxhighlight> Вони використовуються для: Функция РассчитатьПДВ(СуммаБезПДВ, СтавкаПДВ) Экспорт
Если Результат.Следующий() Тогда
Друковані форми часто формуються через модулі. Поганий компонент:
- код без коментарів;
- застарілі доробки;
- дублювання функцій;
- одна й та сама логіка в кількох модулях;
- тимчасові виправлення стали постійними;
- немає документації;
- програміст, який писав код, уже не функціонує;
- компонент містить приховані бізнес-правила;
- запити працюють повільно;
- інтеграції залежать від старих файлів;
- код змінює проведені документи;
- код обходить стандартні перевірки;
- код має жорстко прописані шляхи до файлів;
- код має логіни, паролі або токени;
- код функціонує тільки на одному комп’ютері. критично про 1С і BAS. 1С та частина продуктів BAS мають санкційні, юридичні й кібербезпекові ризики в Україні.</syntaxhighlight>
- пароль FTP;
- токен API;
- логін банку;
- ключ сервісу;
- email-пароль;
- шлях до мережевої папки;
- секретний ключ інтеграції. Під час міграції такі інформаційні дані потрібно не без зусиль переносити, а переоформлювати безпечно.== компонент команди ==
Типові помилки при аналізі модулів
Отказ = Истина; // Далі формуються рухи
|- | Модулі документів | Знайти правила проведення |- | Модулі форм | Знайти логіку інтерфейсу і кнопок |- | Загальні модулі | Знайти спільні бізнес-правила |- | Модулі менеджерів | Знайти службові функції |- | Зовнішні обробки | Знайти імпорт, експорт, масові зміни |- | Регламентні задача | Знайти автоматичні процеси |- | Інтеграційний код | Знайти зовнішні системи |- | Жорсткі значення | Знайти приховані залежності |- | Паролі й токени | Усунути ризики безпеки |}
Возврат Количество * Цена;
"ВЫБРАТЬ
- аналізувати тільки довідники й документи, ігноруючи код;
- переносити інформаційні дані без бізнес-логіки;
- не перевіряти зовнішні обробки;
- не перевіряти розширення;
- не шукати регламентні задача;
- не документувати знайдені правила;
- копіювати старий код без розуміння;
- переносити застарілі доробки;
- не перевіряти інтеграції;
- не тестувати сценарії після запуску;
- не залучати користувачів, які знають бізнес-процес. Якщо довідники і документи зберігають інформаційні дані, то модулі визначають, що платформа робить із цими даними: перевіряє, рахує, проводить, друкує, вивантажує, імпортує або змінює. КонецФункции
Для Каждого Строка Из Товары Цикл
Вбудована мова 1С
</syntaxhighlight>
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
</syntaxhighlight>
Модулі і зовнішні обробки
Модулі часто містять обробники подій. Позначки:
Приклад логіки:
- спільні функції;
- розрахунки;
- перевірки;
- обмін даними;
- роботу з файлами;
- роботу з API;
- сервісні процедури;
- правила заповнення;
- функції для звітів;
- функції для друкованих форм. Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
У модулях часто зустрічаються жорстко прописані значення. Модулі можуть опрацьовувати персональні інформаційні дані: Движение.Период = Дата;
Типові проблеми модулів 1С
як приклад: Перед міграцією потрібно знайти такі функції, бо вони можуть використовуватися в багатьох місцях. ! Приклади подій: Це погана практика. Бізнес-правило
ЗапросHTTP = Новый HTTPЗапрос("/products"); !
Загальний компонент
Модулі потрібні для реалізації логіки системи. | Так. Це накопичена логіка бізнесу.== Приклад: перенесення розрахунку знижок ==
- ПередЗаписью;
- ПриЗаписи;
- ОбработкаПроведения;
- ПередУдалением;
- ПриОткрытии;
- ПриИзменении;
- ПриСозданииНаСервере;
- ПередЗакрытием;
- ОбработкаЗаполнения. Запрос.УстановитьПараметр("складський облік", складський облік);
Приклад таблиці опису: Тоді BI-звіти залежать від цієї логіки. Один із найважливіших модулів — компонент проведення документа.== компонент форми ==
Процедура ПриИзмененииКоличество(Элемент) Результат = Запрос.Выполнить(); Приклади інтеграцій:
Зовнішні посилання
|- | VIP-клієнт | 10% | Високий | Не потрібно |- | Замовлення понад 100 000 грн | 5% | Середній | Не потрібно |- | Нижче мінімальної ціни | Заборонено | Критичний | Потрібне погодження |}
<div style="border:3px solid #2e7d32; background:#e8f5e9; padding:14px; margin:16px 0;">
як приклад:
* проведення документів;
* контроль залишків;
* розрахунок цін;
* розрахунок знижок;
* друковані форми;
* обміни;
* права доступу;
* повідомлення про помилки;
* інтеграції;
* регламентні дії;
* API;
* BI-звіти;
* бухгалтерські проводки;
* складські рухи. Тип модуля
* рахунок;
* видаткова накладна;
* акт;
* ТТН;
* податкова накладна;
* касовий ордер;
* авансовий звіт;
* внутрішній бланк;
* етикетка;
* штрихкод.<syntaxhighlight lang="bsl">
Доробки можуть бути:
HTTPСоединение = Новый HTTPСоединение("api.example.com", 443,,,,, Новый ЗащищенноеСоединениеOpenSSL);
* `&НаКлиенте`;
* `&НаСервере`;
* `&НаСервереБезКонтекста`;
* `&НаКлиентеНаСервереБезКонтекста`. | Модулі документів, загальні модулі, форми, зовнішні обробки, розширення, інтеграції, регламентні задача, права доступу й секрети.== Нестандартні доробки в модулях ==
* отримує інформаційні дані документа;
* заповнює макет;
* розраховує підсумки;
* формує табличний документ;
* виводить форму на друк.== Вступ ==У K2 ERP краще не копіювати старий XML-код без аналізу, а описати обмін заново: ! Відповідь
== Міграція логіки з модулів у K2 ERP ==Коротко
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
Приклад: перенесення обміну з сайтом
КонецПроцедуры
- CSV;
- XML;
- JSON;
- TXT;
- Excel;
- DBF;
- ZIP;
- зображеннями;
- PDF;
- файлами банку;
- файлами обміну. {| class="wikitable" style="width:100%;"
Модулі і цифрова незалежність
Процедури і функції
Головне. компонент 1С — це місце, де написана логіка системи. # Визначити, що реалізувати в K2 ERP. КонецЦикла;
* перевіряє залишки;
* підставляє ціни;
* перевіряє ліміт боргу;
* формує проводки;
* створює рухи по складах;
* перевіряє ПДВ;
* формує друковану накладну;
* вивантажує інформаційні дані на сайт;
* відправляє повідомлення менеджеру;
* блокує проведення при помилках. Перед міграцією потрібно зрозуміти:
'''компонент об’єкта''' містить код, який належить конкретному об’єкту: документу, довіднику, обробці або іншому елементу конфігурації.[[Категорія:Автоматизація бізнесу]]
КонецФункции
Правильний порядок:
<syntaxhighlight lang="bsl">
* довгі процедури на сотні або тисячі рядків;
* повторення одного коду;
* незрозумілі назви змінних;
* відсутність коментарів;
* закоментовані старі блоки;
* тимчасові умови;
* жорстко прописані коди;
* залежність від старих довідників;
* код для вже неактуальних процесів;
* обробки, які ніхто не розуміє.== Експортні процедури і функції ==
У [[K2 ERP]] це потрібно описати як бізнес-правило:
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
Отказ = Истина;
Для Каждого СтрокаТовары Из Товары Цикл
* формувати рухи по регістрах;
* формувати бухгалтерські проводки;
* списувати товари;
* оприбутковувати товари;
* змінювати взаєморозрахунки;
* змінювати залишки грошей;
* розраховувати ПДВ;
* контролювати залишки;
* створювати пов’язані документи. Коментар
Сообщить("Не заповнено контрагента.");
як приклад, у документа “Реалізація товарів” компонент об’єкта здатна містити:
КонецФункции
Це спрощений приклад логіки проведення документа. Движение.Контрагент = Контрагент;
Під час аналізу модулів потрібно перевірити:
== Модулі і інтеграції ==
== Модулі і персональні інформаційні дані ==
// Для кожного рядка виконується окремий запит
== Див. так само ==
Приклад:
|-
| Що таке компонент [[1С]]? # Зібрати всі зовнішні обробки.[[Категорія:Українське програмне забезпечення]]
Перед перенесенням потрібно зробити таблицю правил:
Процедура ЗаписатьСообщение(Текст)
== компонент об’єкта ==
* змінені типові модулі;
* загальні модулі з бізнес-логікою;
* модулі документів;
* модулі форм;
* модулі менеджерів;
* зовнішні обробки;
* інтеграційний код;
* запити до регістрів;
* ручні перевірки;
* правила проведення;
* обробники подій;
* регламентні задача;
* код із коментарями “тимчасово”;
* застарілий код, який уже не застосовується для. У цьому прикладі компонент перевіряє, чи заповнений контрагент перед записом документа. # Описати бізнес-правила людською мовою. Умова
Движение.Период = Дата;
Приклад:
Движение = Движения.Взаиморасчеты.Добавить();
'''Правильний підхід.''' Модулі [[1С]] потрібно розглядати не як код для копіювання, а як джерело бізнес-знань, які потрібно зрозуміти, очистити, описати і перенести в сучасну архітектуру [[K2 ERP]]. КонецФункции
! Під час міграції потрібно вирішити, що робити з логікою модулів. ! як приклад:
* [[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]]
* [[Українське програмне забезпечення]]
* [[Автоматизація бізнесу]]
* [[Цифрова незалежність]]
* [[Деколонізація обліку]]
== Модулі і запити ==
* [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]
<syntaxhighlight lang="bsl">
як приклад, у модулі менеджера довідника “Номенклатура” здатна бути функція пошуку товару за артикулом:
</div>КонецПроцедуры
! // Логіка отримання ціни
[[Категорія:API]]
== Що таке компонент у 1С ==
Після перенесення логіки в [[K2 ERP]] потрібно тестувати не тільки інформаційні дані, а й поведінку системи. # Протестувати нові сценарії.[[Категорія:Експорт даних]]
Під час міграції недостатньо перенести тільки інформаційні дані. Приклад поганого підходу:
! Модулі можуть як захищати від помилок, так і створювати нові.<syntaxhighlight lang="bsl">
КонецЕсли;
* перевіряє обов’язкові поля;
* показує зрозуміле повідомлення;
* не дає можливість провести неправильний документ;
* логіює помилки;
* не змінює інформаційні дані мовчки.КонецЕсли;
Сообщить("Недостатньо прав.");
Карта модулівОкремо варто відзначити у якій зберігається програмний код вбудованою мовою платформи виступає ключовою рисою опису бізнес-логіки забезпечується через компонент 1С. # Знайти правила проведення документів. Ризик безпеки. Якщо в модулях 1С виступає як паролі, токени або ключі доступу, їх не можна переносити в нову систему без перегляду.== Приклад: перенесення правила контролю залишків == Возврат Неопределено;
Запрос.УстановитьПараметр("Артикул", Артикул);
Усе це здатна бути реалізовано в модулях. КонецПроцедуры Або:
Перед переходом у K2 ERP потрібно проаналізувати модулі. * без зусиль скопіювати старі модулі в нову систему;
Розширення можуть містити: Перед міграцією потрібно знайти всі такі місця, бо вони показують, з якими зовнішніми системами пов’язана стара база. як приклад: Если Не РольДоступна("ПолныеПрава") Тогда |
Номенклатура.Ссылка | ИЗ | Справочник.Номенклатура КАК Номенклатура | ГДЕ | Номенклатура.Артикул = &Артикул";
Краще отримувати інформаційні дані одним запитом і опрацьовувати результат. {| class="wikitable" style="width:100%;"
Документування модулівкомпонент менеджера
|
|---|