Глава I: Предновогодняя хмарь
В некотором ИТ-царстве, в славном 1С-ном государстве, наступила самая лютая, самая беспросветная пора - НДО (Неделя До Оливье). Это время магическое и опасное. В эти дни законы физики перестают действовать: рабочий день растягивается до бесконечности, а память серверов сжимается, как шагреневая кожа под лучами дедлайна. В небе вместо пушистых снежинок летают горящие тикеты со статусом "Вчера", а ветер доносит из офисных башен не звуки праздничных корпоративов, а натужный свист кулеров и приглушенный плач младших стажеров, впервые увидевших закрытие года в крупном холдинге.
Мастер Архип, потирая седую бороду, в которой за 27 зим запуталось столько исправленных багов и кривых релизов, что ими можно было бы замостить дорогу от Москвы до Владивостока, сидел в своем кресле-качалке. Перед ним горел не камин, а огромный монитор, на котором медленно ползли строки логов. Архип смотрел на них так, как смотрят старые рыбаки на колыхание поплавка - он чувствовал малейшее дрожание системы задолго до того, как упадет первый кластер.
- Эх, молодежь, - вздыхал он, глядя на экран.
- Всё-то они хотят "красиво" да "по паттернам".
А в декабре паттерн один - выжить и не уронить базу в новогоднюю ночь, когда вся страна одновременно потянется за чеками.
Глава II: Пожар в избушке
Дверь его кельи распахнулась с таким грохотом, будто ее вынесло взрывной волной от неудачного обновления конфигурации. Ввалился Снеговик-Логист - персонаж нервный и дерганый, чья морковка-нос за годы работы в снабжении приобрела пунцовый оттенок из-за постоянных срывов поставок. Он был весь в мыле (что для существа из снега было делом небывалым), а его помятое ведро на голове съехало набок под тяжестью нависших невыполненных задач. Из карманов его ледяного кафтана вместо поздравительных открыток веером торчали мятые путевые листы.
- Архип Савельич! - закричал Снеговик, размахивая морковкой-носом.
- Беда пришла! У Деда Мороза в центральной базе "1С:Управление Санями" реестр подарков заклинило! Олени копытами бьют, рогами упираются, в небо не идут! Печать транспортных накладных выдает "Неизвестную ошибку SDBL", а до выезда первой смены - всего ничего!
Архип не шелохнулся. Он понимал: сейчас не время для лекций о чистой архитектуре кода. Если начать сейчас переписывать ядро системы, то, возможно, к марту следующего года мы получим идеал, но дети по всей стране найдут под елкой только извещение об ошибке 404 вместо подарков. Нет, так не пойдет, подумал Архип.
Он подошел к терминалу и за пять минут сотворил решение дерзкое и очень страшное. Это было зрелище не для слабонервных: вложенные циклы, запросы к базе внутри циклов, жесткие ссылки на ГУИДы и наименования элементов справочника, прямо в тексте модуля и - о ужас! - безусловные переходы "Перейти ~Метка;", которыми Архип сшивал куски кода, словно Франкенштейна. Код выглядел так, будто его писали все три головы Змея Горыныча одновременно, причем каждая в своем стиле и в состоянии сильного душевного волнения.
Архип понимал, что за такой код в приличном обществе системных архитекторов его бы предали анафеме и лишили доступа к конфигуратору пожизненно. Он использовал конструкцию Попытка...Исключение, внутри которой таилась еще одна Попытка, а в самом глубоком "Исключении" стояло лаконичное Возврат; - чтобы система даже не пыталась жаловаться на судьбу. Он захардкодил пути к временным файлам прямо на диск C:\, проигнорировал все права доступа и заставил сервер верить, что сейчас не пик нагрузки, а тихое воскресное утро. Это был код-камикадзе: он должен был пробить стену блокировок, выполнить задачу и героически самоликвидироваться под прессом январских правок. Архип знал - только это может спасти ситуацию с подарками. Он обернул этот ужас в специальный комментарий:
// [FIRE] СПАСТИ НОВЫЙ ГОД. Удалить или сжечь в январе!.
- Ставь это в расширение, - бросил он Снеговику.
- Я принудительно прописал оленям статус "Готов к вылету", минуя проверку остатков. Сани взлетят. Но помни: это решение сейчас - единственное, что держит твой праздник. После боя курантов придешь ко мне, будем костыльные грехи отмаливать и код чистить.
Глава III: Испытание Лешим-Аудитором
Едва сани скрылись в ночном небе, как в дверях материализовался Леший-Аудитор. Вид он имел официальный и крайне занудный: на носу - очки в роговой оправе из древесной коры, в руке пухлая папка с надписью "Инвентаризация волшебных активов".
- Что? Чаи гоняем, Архип? - проскрипел Леший.
- А у меня тут неувязочка вышла... Вот посмотри...
В базе "1С:Лесхоз-ERP" числится 146 шапок-невидимок, а по факту я не вижу ни одной! И отчет по остаткам волшебной пыльцы формируется дольше, чем растет столетний дуб. Если к утру не оптимизируешь выборку по магическим свойствам, я наложу на твой сервер проклятие "Бесконечный цикл перезагрузки"! Леший сказал это с таким непроницаемым лицом и такой ледяной серьезностью, что Архип сразу почувствовал тяжелое дыхание очередной бессонной ночи. Пытаться шутить или доказывать, что шапки-невидимки на то и невидимки, чтобы их никто не видел, было делом абсолютно бесполезным: для аудитора существовало только то, что попало в печатную форму отчета.
Архип вздохнул, открыл конфигуратор и начал "вычищать подлесок". Он заменил тяжелые соединения таблиц на временные, индексировал поля "ВладелецМагии" и "ТипЗаклинания", а саму проверку видимости вынес в отдельный поток, чтобы Леший не вешал всю систему своими придирками. К утру код сиял, как роса на папоротнике, а Леший, пораженный скоростью формирования отчета, лишь обиженно засопел и растворился в тумане.
Глава IV: Заморский гость и Трудности Перевода
Не успел Архип вытереть пот со лба после ухода Лешего, как в зеркале видеосвязи возник лик Сэра Джонатана, представителя заморской компании, поставляющей магические кристаллы для навигации саней Деда Мороза. Сэр Джонатан верил в Agile, Scrum и то, что любую проблему можно решить двухнедельным спринтом и бесконечными митингами.
- Архип, - сказал Джонатан на ломаном сказочном языке.
- Мы внедрили в наши кристаллы новую систему безопасности "Cloud-Magic-Shield". Теперь, чтобы получить координаты Полярной Звезды, ваша 1С должна отправить нам JSON-пакет, подписанный кровью дракона, пройти семь кругов авторизации и подождать ответа от нашего сервера в Атлантиде.
Архип почувствовал, как у него дернулся левый глаз.
- Джонатан, дорогой, у нас до вылета оленей - всего три часа. У меня подарки через "Око Государевой Маркировки" еле пролезают, а ты хочешь, чтобы я сейчас настраивал интеграцию с Атлантидой через три прокси-сервера?
- Но это же best practice! - воскликнул заморский гость.
- Это повышает комплаенс и синергию!
Архип не стал спорить. Он открыл консоль запросов и, пока Джонатан рассуждал о "дорожной карте" проекта и по-быстрому набросал заглушку. Он имитировал ответ Атлантиды, подсунув системе заранее заготовленные координаты, сохраненные в текстовом файле на сервере.
- Всё готово, Джонатан. Ваша синергия внедрена. Летите с миром.
Когда связь прервалась, Архип добавил в блокнот еще одну запись: "Январь. Переделать интеграцию с кристаллами, пока Атлантида не прислала счет за простой". Он понимал: в ИТ-царстве иногда приходится строить декорации замков из картона, чтобы настоящая работа внутри не останавливалась ни на секунду.
Глава V: Санитарный день и Байкальский лед
На рассвете следующего дня, когда первый луч зимнего солнца коснулся мониторов, к Архипу пришла Снегурочка. Она заведовала отделом отчетности и была известна тем, что могла свести баланс, даже если половину золота из казны съели моли, а второю половину инфляция.
- Архип Савельич, - молвила она, поправляя кокошник, который чуть съехал набок от усталости.
- У нас в процедуре "Закрытия Года" такие сугробы навалены, такие сугробы, что мы в них по пояс тонем. Расчет себестоимости снежинок работает три часа: можно успеть трижды сходить за живой водой, состариться и заново родиться, пока полоса загрузки сдвинется хоть на палец. Конечно, всё закроется, но сил больше нет терпеть эту медлительность - система ворочается тяжелее, чем заспанный медведь в берлоге.
Архип кивнул. Да... тут уже синяя изолента не поможет, да зеленая тоже вряд ли справится... тут нужна твердая рука. Он достал из шкафа тяжелую серебряную метлу рефакторинга. - Пока все на корпоративе медовуху пьют, придется заняться гигиеной кода.
Он зашел в конфигуратор и начал действовать как опытный хирург. Подрезал лишние запросы, выкорчевал старые переменные, оставшиеся еще со времен версии 7.7. Он не просто удалял лишнее, он находил запросы в циклах, которые копились годами, словно старый хлам на чердаке, и выносил их в пакетные запросы. Он видел, как система мучилась, пытаясь переварить неявные преобразования типов, и заменял их на четкие и быстрые функции. Он создавал индексы там, где раньше база данных была вынуждена прочесывать миллионы записей в поисках одной маленькой снежинки. Каждый его "Commit" был подобен глотку свежего воздуха для задыхающегося сервера. Теперь код не просто работал - он пел, подчиняясь строгой логике и железному порядку. Через четыре часа процедура, которая раньше еле ползла, теперь пролетела за мгновения. Код стал прозрачным, ясным и чистым, как лед на озере Байкал, сквозь который видно каждый камешек на огромной глубине.
Глава VI: Спор с Кощеем о цене бессмертия
Но не успел он присесть, как в башню ворвался Кощей Бессмертный, Председатель Совета Директоров ПАО "Недра-Злато-Лимитед". Выглядел он как типичный акула бизнеса из сказки: дорогой кафтан из чешуи дракона, запонки из застывших слез сирот и ледяной взгляд человека, который хранит контрольный пакет акций собственной жизни в надежном оффшоре на острове Буяне.
Кощей ударил костлявым кулаком по столу:
- Архип! Я посмотрел смету на твой "Облачный переход 2026". Ты в своем уме? Ты просишь за архитектуру столько, сколько стоит три новых терема! Сделай мне ПРОСТО "кнопку", чтобы информация сразу улетала через ТС ПИоТ, прямиком в Око Государевой Маркировки! И чтобы дешево и сердито!
Архип спокойно посмотрел на Кощея. Он не стал вскакивать или оправдываться - за десятилетия в ИТ он видел десятки таких "эффективных менеджеров", которые сначала экономят на фундаменте, а потом удивляются, почему их замок рассыпался от первого же обновления. Мастер медленно отпил уже остывший чай из кружки, на которой красовалась полустертая надпись «Best Architect of 1998», и лишь когда в кабинете повисла по-настоящему тяжелая пауза, заговорил своим низким, рокочущим голосом.
- Послушай, Бессмертный. Ты ведь свою смерть в иглу спрятал, иглу в яйцо, яйцо в утку... То была архитектура безопасности. А сейчас ты предлагаешь вытащить иглу и оставить её на кухонном столе, потому что "сундук на дубе - для тебя это дорого". Твои текущие сани у Деда Мороза - это старая телега. Мы можем привязать к ней ракетный двигатель на синей изоленте и она даже пролетит сто саженей. Но когда в 2027-м регулятор введет еще какую-нибудь обязательную проверку в реальном времени, твоя телега просто рассыплется в воздухе. Ты потеряешь возможность торговать. Твои сундуки с золотом заблокируют в облаке, ты сам станешь "Бессмертным Банкротом".
Кощей долго молчал, нервно перебирая костлявыми пальцами четки из серверных процессоров.
- Ладно, - наконец выдохнул он.
- Складно говоришь, очень похоже на правду...
- Считай, что смета согласована. Но если в 2026-м я увижу хоть одну ошибку - я лично превращу твой системный блок в тыкву. Так и знай!
Глава VII: Видение 2026 года
Но самая тяжелая дума навалилась на Архипа к вечеру. Достал он свое Зеркало Будущего, а там - не просто 2026 год, а опять грозное знамение ТС ПИоТ.
Пришел к нему сам Дед Мороз, серьезный, без шуток.
- Слышь, Архип, - говорит Дед, - говорят, через год мои мешки с подарками через "Облачное Око" проверять будут.
Мол, каждый леденец должен через ТС ПИоТ пройти и в "Око Государевой Маркировки" отразиться.
- А еще говорят, что это ТС ПИоТ - оно как черная дыра. Всё, что туда попадает, назад не возвращается.
Мои старые сани на УТ 10.3 такое потянут?
Архип вздохнул:
- Нет, Дедушка. Тут простым обновлением не отделаешься. Это не снег пошел, это климат сменился. Наступает эра "подписки на всё". Сани теперь будут не твои, а арендованные у Облачного Властелина. И платить будешь не за полозья, а за каждый километр полета.
- Но на самом деле, все гораздо хуже, Дедушка, - еще раз вздохнул Архип.
- Раньше ты просто дарил подарок. Теперь ты должен сообщить в "Око Государевой Маркировки", что ты его создал, что ты его упаковал, что ты его погрузил в сани и что ребенок его получил. И на каждом этапе система может сказать «Отказ в подписи». Если у тебя в базе данных хоть одна запятая в адресе не по ГОСТу - всё, подарок считается недействительным, а олени арестовываются до выяснения обстоятельств. ТС ПИоТ - это не просто сервер, это огромная машина, которая питается нашими логами.
И если мы не научим твои сани общаться с этой машиной на её языке, то следующий Новый Год мы проведем в судах, доказывая, что мешок с подарками - это не контрабанда.
Нам прямо сейчас надо фундамент новый закладывать, строить мосты в облака. Иначе твое волшебство просто заблокируют за отсутствие фискального признака в реестре.
Это не обновление, Дедушка, это перелом всего уклада.
Эпилог
За окном пробили куранты. Архип откинулся на спинку кресла. В его магическом блокноте был начертан план: в январе - сжечь временные костыли и безусловные переходы, в феврале - дочистить модули до байкальского блеска, а к марту - заложить первые кирпичи в новую облачную архитектуру.
- Ну что, коллеги-мастера, - обратился Архип к невидимой аудитории Инфостарта.
- Год уходит. Настоящий профессионал - это не тот, кто пишет идеальный сферический код в вакууме. Это тот, кто умеет вовремя схватить за ведро с водой, вовремя взять метлу и вовремя убедить царя строить новый замок вместо латания старой хижины.
Пусть в Новом Году все ваши запросы всегда попадают в индексы, а обмены данными летают быстрее оленей.
С наступающим технологическим новым годом!
Встретим его ясным кодом и крепким фундаментом!
Другие статьи автора:
- Древняя УТ 10.3 (10.3.6.8) и маркировка товара: как обойтись без перехода на УТ 11.5 (мой практический опыт)
- Автоматическое обновление токенов Честного Знака в 1С: устраняем человеческий фактор
- Дубликатор кодов маркировки (КИЗ) DataMatrix: Расширение 1С с проверкой в Честном Знаке (копирует ЛЮБЫЕ КИЗы!)
- Маркировка остатков товаров на складе: Как сделать все быстро и без ошибок (мой практический опыт)
- Маркировка остатков в распределенной рознице: Как промаркировать более 100 тыс. товаров в нескольких десятках магазинов без хаоса и ошибок
Вступайте в нашу телеграмм-группу Инфостарт