Розділ 6. Дошка з написом «Если»
Дошка з написом «Если»
Контакт Ірини мені передав Артем. «У нашому навчальному центрі вона вже років десять, веде базовий курс. Якщо хочеш зрозуміти, як виглядає 1С зсередини мовного питання — їй і кажи».
Я написав Ірині у вівторок. Вона відповіла того ж дня: «У четвер о шостій вечора в мене заняття для нової групи. Можеш прийти, сядеш у кінці, ніхто не звертатиме уваги. Після занять поговоримо».
У четвер о шостій я зайшов у будівлю на Печерську — невисокий радянський адмінбудинок із новою скляною вивіскою «Навчальний центр». Третій поверх, кабінет №14, табличка «Програмування 1С. Базовий рівень».
Усередині — двадцять столів, проектор, дошка, на дошці маркером ще не стерто щось від попереднього уроку. У кріслах — близько п'ятнадцяти людей: переважно хлопці й дівчата років двадцяти-двадцяти п'яти, кілька — старші, один чоловік під шістдесят, з ручкою і блокнотом. Ноутбуки, навушники на шиях, латте, термоси.
Ірина — невисока жінка років сорока, у вільному в'язаному джемпері і круглих окулярах. Стоїть біля дошки. Чекає, поки всі сядуть.
— Так, починаємо.
Тема уроку — обробка проведення документа.
Ірина пояснює. Документ у 1С — це не просто запис у БД. Це подія в обліку, яка має наслідки: рухи в регістрах, зміни залишків, бухгалтерські проводки. Платформа знає, коли провести документ — за подією користувача або системи. Розробник пише, що саме при цьому має статися.
Вона повертається до дошки і пише код. Великими літерами, чіткими лініями. Я записую дослівно:
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
Движения.ТоварыНаСкладах.Записывать = Истина;
Для Каждого СтрокаТЧ Из Товары Цикл
Движение = Движения.ТоварыНаСкладах.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.Товар = СтрокаТЧ.Номенклатура;
Движение.Количество = СтрокаТЧ.Количество;
КонецЦикла;
КонецПроцедуры
— Це шаблон, — каже вона. — Запам'ятайте структуру. Процедура — КонецПроцедуры. Цикл — Цикл — КонецЦикла. Движения — це властивість документа, яка дає вам доступ до регістрів. Записывать = Истина — це команда платформі, що рухи треба фактично записати в БД, а не тримати в пам'яті.
Студенти переписують. Хто на папері, хто у ноутбуці. Один хлопець у задньому ряду піднімає руку.
— А чому це російською?
— Бо мова програмування 1С — російська, — відповідає Ірина рівним голосом, без зайвої емоції. — Так уже є. Ми це обговоримо після уроку, у мене заплановано окремий блок. Тепер далі.
Хлопець киває. Більше ніхто не запитує. Студенти продовжують переписувати.
Я сидів у кінці і дивився на цю кімнату.
П'ятнадцять облич. У них на екранах — Если, Тогда, Цикл. Вони щось набирають, виправляють, пробують. У хлопця в правому ряду — наклейка на ноутбуці: тризуб і напис «Все буде Україна». Поруч у дівчини — герб ЗСУ. У старшого чоловіка з блокнотом — на чашці зображено карту України, без Криму і без сходу — без всього, що зараз окуповане.
І ці самі люди, саме зараз, переписують з дошки Процедура ОбработкаПроведения.
Ніхто не реагує. Ніхто не сперечається. Це не байдужість — це професійна сегментація. У ці дві години вони вчаться технології. Емоції — паралельно. Десь в іншому відсіку голови.
Я думав про те, як це виглядало б для людини, яка зайшла з вулиці. Без контексту. Як гротеск. У країні, де п'ятий рік триває війна, дорослі люди добровільно вчать мову програмування країни-агресора, бо інакше не зможуть писати конфігурації для своїх роботодавців.
Але людина з вулиці не розуміє економіку. Студенти розуміють. Ринок 1С/BAS в Україні — це десятки тисяч робочих місць. Альтернатива для бухгалтерського обліку малого бізнесу — поки не існує в масштабах. Хто хоче в цей ринок — мусить вчити те, що є. Те, що є — російське.
Після занять Ірина запросила мене у свій кабінет. Маленький, без вікна, два столи, два монітори, чайник, на стіні портрет Лесі Українки. Я звернув увагу на портрет одразу.
— Іронія? — запитав я.
— Ні, — відповіла вона. — Нагадування собі. Щодня я викладаю мову програмування російською. Леся — щоб не забути, чим я займаюся насправді.
Ми сіли. Вона налила чай.
— З чого почати? — запитала вона.
— З англійського режиму. Він є. Чому ним ніхто не користується?
Ірина усміхнулася. Подивилася на мене, як на людину, яка ставить типове наївне питання.
— Зараз покажу.
Вона повернула до мене монітор. Відкрила той самий код, який писала на дошці. Натиснула якусь комбінацію клавіш — і весь модуль перерендерився:
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 — твою конфігурацію більше не оновити з оригінальної типової. Кожне оновлення типової — ламає всі твої переклади. Ти живеш у форку. Назавжди. Своїм коштом.
— А власні назви? Українською?
Ірина подивилася на мене серйозно.
— У власних об'єктах — так. Якщо я роблю свій звіт, свій документ, свій довідник — я можу назвати його українською. Контрагент → можу залишити, можу зробити Контрагент_укр. Реквізити — можу назвати Назва, Адреса, Телефон. Багато українських розробників так і роблять. Це острівці української в російському океані типової конфігурації.
— Як це виглядає?
Вона відкрила реальну робочу базу — конфігурацію клієнта, як я зрозумів. Серед російських назв типових об'єктів — кілька своїх:
Документ.ВідрядженняПрацівника
Справочник.ВулиціКиєва
РегистрНакопления.ПродажіПоКатегоріям
— Ось три об'єкти, які я додавала останніми. Усі — українською. Інше — типова, російською. Це компроміс, на який пішли багато українських 1С-розробників після двадцять другого. Старе не чіпаємо. Нове — пишемо як себе чуємо.
— А якщо доопрацьовуєш типову?
— У типовій ти зобов'язаний зберігати її імена. Реализация, Поступление, Контрагенты. Ти можеш додати новий реквізит до типового документа і назвати його українською — НомерРейсу, наприклад, до документа Реализация. Тоді в коді буде: Реализация.НомерРейсу. Російське ім'я об'єкта плюс українське ім'я реквізиту. Це називають «мовний полтергейст». Звикаєш.
— Я хочу зрозуміти твоїх студентів, — сказав я. — Як вони реагують на це з двадцять другого?
Ірина зробила паузу. Налила собі ще чаю.
— Я бачила чотири стратегії.
Перша — повна відмова. Невелика частина. Десь п'ять відсотків. Приходять, дивляться на дошку з Если — і за тиждень кажуть мені: «Я не можу. Я повертаю гроші». Ідуть. Кого зустрічала пізніше — переходили на Python, Go, веб-розробку. Здебільшого — успішно. Деякі — повернулися через рік-два, бо економіка задушила.
Друга — повна сегментація. Найбільша частина, відсотків шістдесят. Технологія — окремо, політика — окремо. Пишуть російською, не думаючи. На питання «не болить?» — кажуть «не болить». Не знаю, чи це правда. Підозрюю, що в багатьох — просто заглушено.
Третя — компроміс острівців. Відсотків двадцять. Пишуть російською там, де вимагає типова, українською — там, де можна. Реквізити власних об'єктів — українською. Коментарі — українською. Імена локальних змінних — англійською або українською. Самі ключові слова — російською, бо нічого не вдієш.
Четверта — англійський режим. Відсотків десять, може п'ятнадцять. Ті, хто наважився писати англійською, прийнявши гібридність. Кажуть собі в голові: «це не російська, це просто інша мова, не моя». Це самозаспокоєння, але воно працює.
— А ти сама?
— Я в третій стратегії. Острівці.
Вона показала мені рядок коду, який сама написала кілька годин тому. У ньому, серед російських ключових слів і назв типової, було ім'я її локальної змінної: КількістьНаЗалишку. Українською. Серед російського.
— Цей КількістьНаЗалишку — це мій спротив. Він нічого не міняє. Платформу не змінює. Але щоразу, коли я пишу це слово, я нагадую собі, що я тут не з примусу, а зі стратегічного вибору. Я могла піти. Не пішла. Тому маю право писати своїми словами там, де можу.
— А чи можливо взагалі позбутися російської у 1С?
Ірина довго мовчала.
— Чесна відповідь — ні. Не у поточній платформі. Платформа закрита, її код у власності російської компанії, її синтаксис захардкоджений. BAS — це форк, але форк конфігурацій, не платформи. Двигун — той самий, мова — та сама.
— А зробити свою?
— Технічно — можна. Це сотні людино-років. Це окрема платформа з нуля, з новою мовою, з новою екосистемою, з новими типовими конфігураціями. Це не проект BAS. Це проект масштабу нової держави. Хтось мав би заплатити мільярди. Україна цього не зробить — інші пріоритети. Бізнес не зробить — економічно нерозумно. Залишаються гранти, західні інвестиції. Я не бачу зацікавлених.
— А Odoo, ERPNext?
— Це не «своя платформа». Це інші платформи, з іншою філософією, без 1С-моделі регістрів і метаданих. Мігрувати на них можна — і це окрема тема, у вас, мабуть, ще буде розділ. Але це не той самий продукт. Це інший продукт, який вирішує суміжні задачі по-іншому.
— То що залишається?
— Залишається жити з тим, що є, до того моменту, поки не з'явиться щось краще. Жити свідомо. Не вдаючи, що проблеми нема. Не закриваючи очі. Не пишучи Если без думки про те, чому це Если. Найгірше — забути, що ця мова не своя. Найкраще — пам'ятати. І робити те, що можеш, у своїх кордонах.
Вона показала на портрет Лесі Українки.
— Тому вона у мене на стіні.
Я вийшов з навчального центру близько дев'ятої вечора. На Печерську вже горіли ліхтарі. У вікнах третього поверху — біле світло. Заняття закінчилися, але хтось ще сидів у кабінеті №14 — мабуть, Ірина перевіряла домашку.
Я думав про одну річ. У всіх попередніх розділах я уникав однозначних оцінок. Антон, Світлана, Олег, Володимир Васильович, Назар — кожен зі своєю правдою, кожен зі своєю мірою компромісу. У цьому розділі — мірити вже важче.
Мова — це не просто синтаксис. Це політична позиція, навіть якщо це позиція замовчування. Платформа, у якій з 1996-го захардкоджена російська, — це не нейтральна технологія. Хоч би скільки нам казали, що технологія аполітична — це конкретна мова конкретної країни, у конкретний історичний момент, який триває до сьогодні. І триватиме, поки ця платформа жива.
Це не означає, що треба все спалити. Це означає, що треба бачити це чесно. Не вдавати, що Если — це просто символ. Воно символ, так — але воно ще й слово, і слово конкретної мови. Щоразу, коли в Україні 2026 року відкривається Конфігуратор, у країні відкривається ще одна сторінка з російським кодом. Це факт. Це не аргумент закривати. Це аргумент не забувати, що це факт.
Леся Українка на стіні Ірини — це маленький жест людини, яка вирішила не забувати. У наступному розділі я піду до іншого героя, у якого свої жести, свої компроміси, своя економіка. До людини, чиє життя — не лінгвістика, а продуктивність. До людини, яка лагодить повільні запити в чужих базах.
Розділ сьомий — «Запит у циклі, гріх номер один».