Платформа, яка пережила все
7 / 21

Розділ 6. Дошка з написом «Если»

Частина II · Розділ 6

Дошка з написом «Если»

1

Контакт Ірини мені передав Артем. «У нашому навчальному центрі вона вже років десять, веде базовий курс. Якщо хочеш зрозуміти, як виглядає 1С зсередини мовного питання — їй і кажи».

Я написав Ірині у вівторок. Вона відповіла того ж дня: «У четвер о шостій вечора в мене заняття для нової групи. Можеш прийти, сядеш у кінці, ніхто не звертатиме уваги. Після занять поговоримо».

У четвер о шостій я зайшов у будівлю на Печерську — невисокий радянський адмінбудинок із новою скляною вивіскою «Навчальний центр». Третій поверх, кабінет №14, табличка «Програмування 1С. Базовий рівень».

Усередині — двадцять столів, проектор, дошка, на дошці маркером ще не стерто щось від попереднього уроку. У кріслах — близько п'ятнадцяти людей: переважно хлопці й дівчата років двадцяти-двадцяти п'яти, кілька — старші, один чоловік під шістдесят, з ручкою і блокнотом. Ноутбуки, навушники на шиях, латте, термоси.

Ірина — невисока жінка років сорока, у вільному в'язаному джемпері і круглих окулярах. Стоїть біля дошки. Чекає, поки всі сядуть.

— Так, починаємо.

2

Тема уроку — обробка проведення документа.

Ірина пояснює. Документ у 1С — це не просто запис у БД. Це подія в обліку, яка має наслідки: рухи в регістрах, зміни залишків, бухгалтерські проводки. Платформа знає, коли провести документ — за подією користувача або системи. Розробник пише, що саме при цьому має статися.

Вона повертається до дошки і пише код. Великими літерами, чіткими лініями. Я записую дослівно:

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

    Движения.ТоварыНаСкладах.Записывать = Истина;

    Для Каждого СтрокаТЧ Из Товары Цикл
        Движение = Движения.ТоварыНаСкладах.Добавить();
        Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
        Движение.Период = Дата;
        Движение.Товар = СтрокаТЧ.Номенклатура;
        Движение.Количество = СтрокаТЧ.Количество;
    КонецЦикла;

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

— Це шаблон, — каже вона. — Запам'ятайте структуру. ПроцедураКонецПроцедуры. Цикл — ЦиклКонецЦикла. Движения — це властивість документа, яка дає вам доступ до регістрів. Записывать = Истина — це команда платформі, що рухи треба фактично записати в БД, а не тримати в пам'яті.

Студенти переписують. Хто на папері, хто у ноутбуці. Один хлопець у задньому ряду піднімає руку.

— А чому це російською?
— Бо мова програмування 1С — російська, — відповідає Ірина рівним голосом, без зайвої емоції. — Так уже є. Ми це обговоримо після уроку, у мене заплановано окремий блок. Тепер далі.

Хлопець киває. Більше ніхто не запитує. Студенти продовжують переписувати.

3

Я сидів у кінці і дивився на цю кімнату.

П'ятнадцять облич. У них на екранах — Если, Тогда, Цикл. Вони щось набирають, виправляють, пробують. У хлопця в правому ряду — наклейка на ноутбуці: тризуб і напис «Все буде Україна». Поруч у дівчини — герб ЗСУ. У старшого чоловіка з блокнотом — на чашці зображено карту України, без Криму і без сходу — без всього, що зараз окуповане.

І ці самі люди, саме зараз, переписують з дошки Процедура ОбработкаПроведения.

Ніхто не реагує. Ніхто не сперечається. Це не байдужість — це професійна сегментація. У ці дві години вони вчаться технології. Емоції — паралельно. Десь в іншому відсіку голови.

Я думав про те, як це виглядало б для людини, яка зайшла з вулиці. Без контексту. Як гротеск. У країні, де п'ятий рік триває війна, дорослі люди добровільно вчать мову програмування країни-агресора, бо інакше не зможуть писати конфігурації для своїх роботодавців.

Але людина з вулиці не розуміє економіку. Студенти розуміють. Ринок 1С/BAS в Україні — це десятки тисяч робочих місць. Альтернатива для бухгалтерського обліку малого бізнесу — поки не існує в масштабах. Хто хоче в цей ринок — мусить вчити те, що є. Те, що є — російське.

4

Після занять Ірина запросила мене у свій кабінет. Маленький, без вікна, два столи, два монітори, чайник, на стіні портрет Лесі Українки. Я звернув увагу на портрет одразу.

— Іронія? — запитав я.
— Ні, — відповіла вона. — Нагадування собі. Щодня я викладаю мову програмування російською. Леся — щоб не забути, чим я займаюся насправді.

Ми сіли. Вона налила чай.

— З чого почати? — запитала вона.
— З англійського режиму. Він є. Чому ним ніхто не користується?

Ірина усміхнулася. Подивилася на мене, як на людину, яка ставить типове наївне питання.

— Зараз покажу.

5

Вона повернула до мене монітор. Відкрила той самий код, який писала на дошці. Натиснула якусь комбінацію клавіш — і весь модуль перерендерився:

Procedure PostingProcessing(Cancel, PostingMode)

    RegisterRecords.GoodsInWarehouses.Write = True;

    For Each StrokaTCH In Goods Do
        Movement = RegisterRecords.GoodsInWarehouses.Add();
        Movement.RecordType = AccumulationRecordType.Expense;
        Movement.Period = Date;
        Movement.Goods = StrokaTCH.Nomenclature;
        Movement.Quantity = StrokaTCH.Quantity;
    EndDo;

EndProcedure

Я подивився.

— Ключові слова — англійською. Назви об'єктів — частково ні.
— Саме так, — кивнула Ірина. — Movement.Goods — англійська. Movement.Nomenclature теж би було, якби в типовій реквізит так звався. Але типова конфігурація написана російською: реквізит називається Номенклатура (у транслітерації — Nomenklatura), і ти не можеш його перейменувати без зламу типової. Тому англійський режим у реальній 1С-розробці виглядає як гібрид: англійські ключові слова, російські назви предметної області.

— А це не гірше за чисто російське?
Гірше. У цьому й парадокс. Чисто російською — гидко, але читається як одне ціле. Англійською — теж читається. А гібрид — це когнітивний хаос. Ти стрибаєш між мовами на кожному рядку. Мозок втомлюється. Тому ніхто так не пише, навіть ті, хто хотів би писати англійською.

— А чому не перейменувати реквізити?
— Тому що типова — це інфраструктура країни. Якщо ти перейменував Номенклатура на Nomenclature — твою конфігурацію більше не оновити з оригінальної типової. Кожне оновлення типової — ламає всі твої переклади. Ти живеш у форку. Назавжди. Своїм коштом.

6

— А власні назви? Українською?

Ірина подивилася на мене серйозно.

— У власних об'єктах — так. Якщо я роблю свій звіт, свій документ, свій довідник — я можу назвати його українською. Контрагент → можу залишити, можу зробити Контрагент_укр. Реквізити — можу назвати Назва, Адреса, Телефон. Багато українських розробників так і роблять. Це острівці української в російському океані типової конфігурації.

— Як це виглядає?

Вона відкрила реальну робочу базу — конфігурацію клієнта, як я зрозумів. Серед російських назв типових об'єктів — кілька своїх:

Документ.ВідрядженняПрацівника
Справочник.ВулиціКиєва
РегистрНакопления.ПродажіПоКатегоріям

— Ось три об'єкти, які я додавала останніми. Усі — українською. Інше — типова, російською. Це компроміс, на який пішли багато українських 1С-розробників після двадцять другого. Старе не чіпаємо. Нове — пишемо як себе чуємо.

— А якщо доопрацьовуєш типову?
— У типовій ти зобов'язаний зберігати її імена. Реализация, Поступление, Контрагенты. Ти можеш додати новий реквізит до типового документа і назвати його українською — НомерРейсу, наприклад, до документа Реализация. Тоді в коді буде: Реализация.НомерРейсу. Російське ім'я об'єкта плюс українське ім'я реквізиту. Це називають «мовний полтергейст». Звикаєш.

7

— Я хочу зрозуміти твоїх студентів, — сказав я. — Як вони реагують на це з двадцять другого?

Ірина зробила паузу. Налила собі ще чаю.

— Я бачила чотири стратегії.

Перша — повна відмова. Невелика частина. Десь п'ять відсотків. Приходять, дивляться на дошку з Если — і за тиждень кажуть мені: «Я не можу. Я повертаю гроші». Ідуть. Кого зустрічала пізніше — переходили на Python, Go, веб-розробку. Здебільшого — успішно. Деякі — повернулися через рік-два, бо економіка задушила.

Друга — повна сегментація. Найбільша частина, відсотків шістдесят. Технологія — окремо, політика — окремо. Пишуть російською, не думаючи. На питання «не болить?» — кажуть «не болить». Не знаю, чи це правда. Підозрюю, що в багатьох — просто заглушено.

Третя — компроміс острівців. Відсотків двадцять. Пишуть російською там, де вимагає типова, українською — там, де можна. Реквізити власних об'єктів — українською. Коментарі — українською. Імена локальних змінних — англійською або українською. Самі ключові слова — російською, бо нічого не вдієш.

Четверта — англійський режим. Відсотків десять, може п'ятнадцять. Ті, хто наважився писати англійською, прийнявши гібридність. Кажуть собі в голові: «це не російська, це просто інша мова, не моя». Це самозаспокоєння, але воно працює.

— А ти сама?
— Я в третій стратегії. Острівці.

Вона показала мені рядок коду, який сама написала кілька годин тому. У ньому, серед російських ключових слів і назв типової, було ім'я її локальної змінної: КількістьНаЗалишку. Українською. Серед російського.

— Цей КількістьНаЗалишку — це мій спротив. Він нічого не міняє. Платформу не змінює. Але щоразу, коли я пишу це слово, я нагадую собі, що я тут не з примусу, а зі стратегічного вибору. Я могла піти. Не пішла. Тому маю право писати своїми словами там, де можу.

8

— А чи можливо взагалі позбутися російської у 1С?

Ірина довго мовчала.

— Чесна відповідь — ні. Не у поточній платформі. Платформа закрита, її код у власності російської компанії, її синтаксис захардкоджений. BAS — це форк, але форк конфігурацій, не платформи. Двигун — той самий, мова — та сама.

— А зробити свою?
Технічно — можна. Це сотні людино-років. Це окрема платформа з нуля, з новою мовою, з новою екосистемою, з новими типовими конфігураціями. Це не проект BAS. Це проект масштабу нової держави. Хтось мав би заплатити мільярди. Україна цього не зробить — інші пріоритети. Бізнес не зробить — економічно нерозумно. Залишаються гранти, західні інвестиції. Я не бачу зацікавлених.

— А Odoo, ERPNext?
— Це не «своя платформа». Це інші платформи, з іншою філософією, без 1С-моделі регістрів і метаданих. Мігрувати на них можна — і це окрема тема, у вас, мабуть, ще буде розділ. Але це не той самий продукт. Це інший продукт, який вирішує суміжні задачі по-іншому.

— То що залишається?
— Залишається жити з тим, що є, до того моменту, поки не з'явиться щось краще. Жити свідомо. Не вдаючи, що проблеми нема. Не закриваючи очі. Не пишучи Если без думки про те, чому це Если. Найгірше — забути, що ця мова не своя. Найкраще — пам'ятати. І робити те, що можеш, у своїх кордонах.

Вона показала на портрет Лесі Українки.

— Тому вона у мене на стіні.

9

Я вийшов з навчального центру близько дев'ятої вечора. На Печерську вже горіли ліхтарі. У вікнах третього поверху — біле світло. Заняття закінчилися, але хтось ще сидів у кабінеті №14 — мабуть, Ірина перевіряла домашку.

Я думав про одну річ. У всіх попередніх розділах я уникав однозначних оцінок. Антон, Світлана, Олег, Володимир Васильович, Назар — кожен зі своєю правдою, кожен зі своєю мірою компромісу. У цьому розділі — мірити вже важче.

Мова — це не просто синтаксис. Це політична позиція, навіть якщо це позиція замовчування. Платформа, у якій з 1996-го захардкоджена російська, — це не нейтральна технологія. Хоч би скільки нам казали, що технологія аполітична — це конкретна мова конкретної країни, у конкретний історичний момент, який триває до сьогодні. І триватиме, поки ця платформа жива.

Це не означає, що треба все спалити. Це означає, що треба бачити це чесно. Не вдавати, що Если — це просто символ. Воно символ, так — але воно ще й слово, і слово конкретної мови. Щоразу, коли в Україні 2026 року відкривається Конфігуратор, у країні відкривається ще одна сторінка з російським кодом. Це факт. Це не аргумент закривати. Це аргумент не забувати, що це факт.

Леся Українка на стіні Ірини — це маленький жест людини, яка вирішила не забувати. У наступному розділі я піду до іншого героя, у якого свої жести, свої компроміси, своя економіка. До людини, чиє життя — не лінгвістика, а продуктивність. До людини, яка лагодить повільні запити в чужих базах.

Розділ сьомий — «Запит у циклі, гріх номер один».