Антон Кот
Хроники Здорового костыля

Пролог

Вы когда-нибудь просыпались в три часа ночи от звонка стажёрки, которая спрашивает, куда сыпать тонер в кассовый аппарат? Вы когда-нибудь объясняли бухгалтеру, что «удалить без контроля ссылочной целостности» – это не новая функция Excel, а гарантированный способ стереть компанию из реальности? Вы когда-нибудь угрожали коммерческому директору, что сделаете шрифт во всех отчётах Comic Sans, если она не выйдет из кабинета на пять минут?

Если да – добро пожаловать домой. Эта книга написана для вас.

Если нет – пристегнитесь. Вы сейчас погрузитесь в мир, где слова «Честный знак» вызывают аллергию, а «понедельник» – это не день недели, а диагноз. Мир, где один стажер может за пять минут уничтожить то, что пять лет собирала целая команда. Мир, где главный враг программиста – не баги, а люди с благими намерениями.

Меня зовут Антон. Я ведущий разработчик в аптечной сети «Здоровый костыль». Здесь, в своём кабинете, где пахнет валерьянкой и перегретыми серверами, я каждый день сражаюсь с драконами. Мои драконы – это не мифические чудовища. Они приходят под видом коммерческого директора с «маленькой правочкой», бухгалтера, которая помнит ещё дискеты, и стажера, который «просто хотел как лучше».

Эта книга – хроника одной недели моей жизни. Понедельник, вторник, среда, четверг, пятница, суббота, воскресенье. Семь дней ада, завернутого в корпоративный мессенджер и политых холодным кофе.

Если после прочтения у вас начнёт дёргаться глаз – не волнуйтесь. Это нормально. Это профессиональное.

Данное произведение не имеет отношения к реальности. Любые сходства с живыми или уволенными коллегами являются системным сбоем, который чудесным образом повторяется на каждом втором предприятии страны.

P.S. Кактус на моём подоконнике – единственный свидетель всех моих разговоров с самим собой. Его зовут Кеша. Кеша ни разу не попросил меня настроить принтер. Я подозреваю, что он – идеальный сотрудник.

Знакомство

Главный герой: Антон

Типичный ведущий разработчик. У него дергается глаз при слове «релиз», а в кружке кофе всегда больше кофеина, чем воды. Его главная суперспособность – понимать, что имела в виду бухгалтер тетя Люся, когда сказала: «Оно там само всё пикнуло и пропало».

Аптечная сеть: «Здоровый костыль»

50 точек по городу. В каждой – свой зоопарк оборудования: от доисторических сканеров до терминалов, которые зависают от косого взгляда.

Золотой фонд сотрудников:

Элеонора Витальевна – Коммерческий Директор (Главный Босс Уровня).

Женщина-ураган. Считает, что программирование – это «просто нажать на кнопки». Любит приходить в 17:55 с фразой: «Там маленькая правочка, за 5 минут сделаешь?» (правка обычно требует переписывания всей архитектуры обмена).

Тетя Люся – Главбух старой закалки.

Считает 1С порождением сатаны. Хранит все важные данные в Excel, который связан с другими Excel-файлами через магические ссылки на несуществующие сетевые диски. Панически боится обновлений. Если после обновления в интерфейсе кнопка сдвинулась на 2 пикселя вправо – у нее случается микроинсульт и «всё пропало, работа стоит». Любимая фраза «Сделай мне как в семерке было!»

Сеня «Эникей» – Стажер-админ, 1с джун встающий на путь тьмы.

Молодой, дерзкий, знает всё про майнинг и кастомные прошивки, но не может настроить принтер этикеток. Пытается «оптимизировать» работу серверов без ведома Антона, из-за чего база падает в самый разгар переоценки.

Марина – Старший фармацевт в «проблемной» аптеке.

Находится на передовой. У нее всегда очередь из 20 человек, зависший терминал и сканер, который «пикает, но не вводит». Звонит Антону лично на мобильный в 11 вечера, потому что «тут какая-то табличка вылезла на английском, я нажала "Ок", и теперь всё серое». Любимая фраза «Я ничего не трогала, оно само!»

Игорь – Региональный менеджер по закупкам.

Человек-таблица. Требует отчеты такой сложности, что их выполнение вешает сервер на полчаса. Хочет видеть в одном отчете остатки аспирина, прогноз погоды на завтра и индекс счастья покупателей в среднем по городу.

Жанна Аркадьевна – Фармацевт-перфекционист («Мозг в футляре»)

Она знает ФЗ-61 и правила хранения лекарственных средств лучше, чем создатели этих правил. Если в программе поле «Серия» имеет длину 20 символов, а в накладной их 21 – она не будет обрезать, она заставит Антона переписывать структуру базы данных. Ведет бумажную тетрадочку, куда записывает все «глюки» 1С с точностью до секунды. Звонит Антону и начинает разговор так: «Антон, здравствуйте. Вчера в 14:42 при формировании отчета по дефектуре в третьей колонке пятая строка имела отступ на два миллиметра больше, чем в четвертой. Это вносит когнитивный диссонанс в мою работу. Исправьте». Она не кричит, она говорит тихим, вежливым и невыносимо занудным голосом, пока у Антона не начинает течь кровь из ушей.

Виталий – техподдержка эквайрина «Стабильность-Банка»

Человек-скрипт. Его задача – доказать, что банк идеален, а проблема в 1С, в проводах, в фазе Луны или в плохой карме кассира. На любой технический вопрос отвечает: «Пришлите лог-файл в формате .xml за последние три года, мы рассмотрим его в течение 30 рабочих дней». Любимая фраза «На нашей стороне потерь нет».

Анечка – HR-менеджер (в поиске себя и здравого смысла)

Живет в мире розовых пони в сторис, но по иронии судьбы отвечает за прием, увольнение и – самое страшное – графики отпусков в 1С:ЗУП. Она вспоминает о том, что сегодня выходит новый провизор в дежурную аптеку, ровно в тот момент, когда этот провизор уже стоит перед закрытой кассой и не может залогиниться. Прибегает к Антону с глазами-плошками, в которых читается ужас всей вселенной. Сваливает всё на «глюк системы». Если она забыла нажать кнопку «Провести», она искренне верит, что это 1С «съела» документ.

Понедельник

Глава 1. Кофе уже остыл, а я ещё – нет

Утро Антона началось не с кофе. Оно началось со звука, который в ИТ-отделах предвещает апокалипсис – скрежета старого матричного принтера в бухгалтерии, который каким-то чудом дожил до наших дней и теперь дожевывал последнюю надежду на спокойный понедельник.

08:45.

Антон только коснулся задом кресла, когда дверь распахнулась, будто ее вынесли тараном. На пороге стояла Анечка. Ее глаза были размером с пятирублевые монеты, а в руках она комкала документы о приёме на работу.

– Антон! Оно всё пропало! – взвизгнула она, подлетая к столу. – У нас в 12-й аптеке на кассе стоит девочка, новая, Маша… или Даша… В общем, она стоит, люди злые, лекарства не выдаются, а 1С пишет «Пользователь не найден»! Я же всё вносила! Клянусь!

– Анечка, – Антон медленно, как сапер, положил руку на мышку. – Ты кнопку «Записать и закрыть» нажала? Или просто закрыла ноутбук и пошла пить латте?

– Я нажимала! Наверное… Ну, оно же должно само! Ты же программист, сделай так, чтобы оно само понимало, когда я хочу сохранить! Там очередь до улицы, Антон, сделай магию!

Не успел он открыть конфигуратор, как зазвонил внутренний телефон. На экране высветилось: «Жанна Аркадьевна (Аптека №3)».

– О нет… – прошептал Антон. Он знал: если поднять трубку, следующие три часа его жизни будут вычеркнуты из биографии.

– Алло? – обреченно выдохнул он.

– Антон Игоревич, добрейшего вам утра, если его можно назвать добрым в условиях такой вопиющей технической деградации, – раздался в трубке вкрадчивый, ледяной голос Жанны Аркадьевны. – Вы знаете, я сейчас изучала отчет по остаткам маркированных упаковок «Валидола» и обнаружила, что в печатной форме М-11 шрифт названия препарата на 0.5 пункта меньше, чем того требует ГОСТ от девяносто восьмого года. Это создает недопустимую нагрузку на органы зрения провизора.

– Жанна Аркадьевна, у меня кассир в 12-й аптеке в базу войти не может…

– Антон Игоревич, – голос стал еще тише и опаснее, – кассир – это временно. А стандарты документации – это вечно. Запишите: страница 14, второй абзац снизу… я буду диктовать медленно, чтобы вы успели осознать всю глубину вашей халатности…

В этот момент в кабинет, не стучась, ворвалась Элеонора Витальевна. Она не шла, она неслась на гребне ярости.

– Антон! – заорала она, игнорируя Анечку и телефон. – Опять этот банк «Стабильность»! У нас в центральной аптеке женщина не может оплатить свой, заказанный ранее, дорогостой за 40 тысяч! «Ошибка связи с пин-падом»! Она требует таблетки, ОМОН и мою голову! Звони в банк!

Антон, прижимая трубку плечом к уху (где Жанна Аркадьевна уже перешла к описанию межстрочного интервала), начал судорожно набирать номер техподдержки банка.

– Здравствуйте, вы позвонили в банк «Стабильность», – пропел в трубке жизнерадостный робот. – Ваш звонок сорок восьмой в очереди. Ориентировочное время ожидания… две недели.

– Виталий! Мне нужен Виталий! – прорычал Антон.

Через пять минут (и две порции классической музыки в трубке) ответил Виталий.

– Техподдержка, слушаю.

– Виталий, у нас ошибка с пин-падом, говорит связи нет, в 1С ошибка эквайринга!

– На нашей стороне потерь нет, – меланхолично отозвался Виталий. – Проблема в вашем софте. Проверьте, не жует ли у вас кассир провода.

– Виталий, какие провода?! У вас оборудование отваливается там уже не в первый раз! Замените уже терминал!

– Пришлите лог подключения к терминалу в формате BASE64, упакованный в ZIP, зашифрованный подписью директора и освященный в местном храме. Мы рассмотрим в течение месяца. Всего доброго.

В трубке запищали гудки. Жанна Аркадьевна в это время в другое ухо дошла до обсуждения цвета рамочек в интерфейсе.

09:00.

Прошло всего двадцать минут рабочего дня. Антон посмотрел на кактус, стоящий на подоконнике. Ему показалось, что кактус сочувственно кивнул.

– Так, – Антон встал, взял пустую кружку и посмотрел на Элеонору Витальевну. – Либо вы сейчас все выходите отсюда на пять минут, либо я прямо сейчас пишу обработку, которая удалит все остатки из базы к чертовой матери.

В кабинете на секунду воцарилась тишина.

– И шрифт сделаю Comic Sans, – добавил он, глядя в сторону телефона, где все еще вещала Жанна Аркадьевна.

Глава 2. Сила есть – SQL не нужен

10:15.

Антон только успел выпить глоток обжигающего кофе, когда дверь снова содрогнулась. На этот раз её не вынесли – её открыли с ноги, потому что руки вошедшего были заняты коробками с какими-то платами.

– Антон, знакомься! Это Сеня, наш новый гений коммуникаций и патч-кордов! – провозгласила Элеонора Витальевна, сияя так, будто она лично нашла Атлантиду. – Он такой деятельный, такой активный! Сказал, что наш серверный парк – это «позорное кладбище электроники» и он всё исправит за час!

Сеня, парень с пучком на голове и в футболке с надписью «Error 404: Sleep not found», не глядя на Антона, уже начал выгружать содержимое своих коробок прямо на стол, погребая под ними заявление Анечки.

– Привет, шеф! – бросил Сеня, бешено вращая глазами. – Я тут глянул логи… Ну, как глянул, я их пролистал на скорости x10. У вас там всё тормозит, потому что железо помнит еще инаугурацию Ельцина. Короче, я в деле!

Антон потер переносицу. В голове пульсировала фраза Жанны Аркадьевны про шрифт, но реальность требовала действий.

– Так, деятельный ты наш. У нас на 8-й аптеке, той что на окраине, беда. SQL-сервер глючит. База «отвалилась», кассы стоят, провизоры бьются в истерике. Посмотри удаленно, что там. Скорее всего, служба просто «легла» после скачка напряжения. Просто. Перезапусти. Службу. Понял?

– База? SQL? Понял, шеф! Всё сделаю в лучшем виде, я на курсах «Админ за 24 часа» был лучшим по скоростному кликанью! – Сеня уже вовсю стучал по клавишам, а его мышка летала по коврику со свистом.

Антон отвернулся к своему монитору, пытаясь разгрести завалы в ЗУПе, которые оставила Анечка. Тишину прерывал только подозрительно бодрый шепот Сени: «Так, это что… это нам не надо… о, инсталлятор… о, а давай-ка мы вот так…».

Прошло ровно семь минут.

В кабинет, подобно фурии, ворвался Игорь, менеджер по закупкам. Лицо его было цвета спелой свеклы.

– АНТОН! ТЫ ЧТО ТАМ ТВОРИШЬ?! – заорал он так, что кактус на окне втянул колючки. – Восьмая аптека! Мне звонит директор, говорит, у них со столов всё исчезло! Вообще всё, а монитор написал: «Uninstalling Microsoft SQL Server…».

Антон медленно, очень медленно повернул голову к Сене.

– Сеня… – голос Антона был тихим, как шелест травы на кладбище. – Ты что делаешь?

– А? – Сеня даже не обернулся, он лихорадочно жал «Next» в каком-то окне. – Да там что-то служба не запускалась, писала «Ошибка доступа». Я решил, что конфиг битый. Ну, я и подумал: чего время тратить на ковыряние в мусоре? Проще же снести всё под корень и заново поставить чистенькую! Я вот уже почти удалил… Ой.

– Что «ой»? – Антон уже стоял у него за спиной.

– А там… там база данных была в той же папке, куда я софт ставил? – Сеня наконец-то посмотрел на Антона. В его глазах не было раскаяния, только легкое любопытство исследователя. – Просто оно спросило: «Удалить все связанные данные?», и я нажал «Да», чтобы быстрее было. А что, бэкапов нет?

В этот момент в коридоре послышался топот тяжелых сапог Элеоноры Витальевны. Она явно уже знала, что аптека на окраине превратилась в музей неработающей техники.

– Сеня, – прошептал Антон, глядя на пустой список баз данных. – У тебя есть ровно десять секунд, чтобы спрятаться в вентиляции. Потому что сейчас придет Элеонора, и она будет использовать твой патч-корд не по назначению.

– Но я же хотел, как лучше! – воскликнул Сеня, – Чистая установка – это же залог стабильности!

Антон сел на пол прямо рядом с системным блоком. Ему вдруг очень захотелось стать фармацевтом. Продавать гематоген, советовать пластырь и никогда, никогда в жизни не знать, что такое «Drop Database».

Глава 3. Великое очищение

10:30.

В кабинете пахло озоном, дешевым освежителем «Горный воздух» из коридора и надвигающимся увольнением. Пока Элеонора Витальевна за дверью объясняла Сене, почему его «активность» сравнима с падением метеорита, в дверях материализовалась тетя Люся.

Она выглядела подозрительно спокойной. Обычно это означало, что она либо выпила ведро валерьянки, либо сотворила что-то, что невозможно исправить в этой реальности.

– Антоша, – ласково начала она, поправляя очки на цепочке. – Я тут решила в центральной базе порядок навести. А то ты всё занят, всё бегаешь… А у меня там строчек много лишних было, с какими-то крестиками.

Антон, который в этот момент судорожно пытался нащупать бэкап 8-й аптеки, медленно замер. Его пальцы зависли над клавиатурой.

– Тетя Люся… – голос Антона сорвался на шепот. – Какие строчки? Какие крестики?

– Ну, те, что «помеченные на удаление». Я зашла в меню, нажала «Удалить», а оно мне пишет: «Обнаружены связи, удаление невозможно». Ну я же не глупая, я галочку поставила «Удалять без контроля ссылочной целостности». И оно так быстро-быстро побежало! За три года всё почистило. Теперь база такая легкая, летает!

Антон почувствовал, как мир вокруг начинает пикселизироваться и распадаться на нули и единицы.

«Удалять без контроля ссылочной целостности» в 1С – это как выдернуть фундамент из-под сорокаэтажного дома и надеяться, что он продолжит висеть в воздухе на честном слове.

– Тетя Люся, – Антон повернул к ней монитор, на котором красовался пустой список документов реализации за 2021-2023 годы. – Вы понимаете, что вы сейчас стерли историю компании? У нас теперь по документам нет ни закупок, ни продаж, ни прибыли. Мы теперь – благотворительный фонд «Чистый лист».

– Ой, да ладно тебе, – отмахнулась она. – У меня всё в Excel записано! Я сейчас принесу флешку.

В этот момент ожил селектор. Голос Элеоноры Витальевны, усиленный яростью и динамиками, разнесся по всему офису:

– АНТОН! Жанна Аркадьевна звонит на вторую линию! Она говорит, что раз базы всё равно нет, она подготовила список из пятисот улучшений, которые мы ДОЛЖНЫ внести в новую базу, пока ты её заново установишь! Она начнет диктовать через три… две… одну…

Глава 4. Миллионы из ниоткуда

11:00.

Дверь в кабинет распахнулась как врата рая, на пороге стояла Элеонора Витальевна. Её лицо выражало гамму чувств: от священного ужаса до экстаза человека, выигравшего в лотерею, в которую он даже не играл.

– Антон! Бросай всё! – взвизгнула она, размахивая планшетом. – Свершилось! Банк «Стабильность» проснулся!

– Что, транзакции прошли? – Антон выключил фен. В ушах всё еще стоял гул, а в левом наушнике Жанна Аркадьевна как раз переходила к критике цветовой схемы «Такси» в 1С.

– «Прошли»?! Да они там, видимо, коллективно сошли с ума! Помнишь ту бабушку, у которой зависли сорок тысяч за курс таблеток? Так вот, Виталий из техподдержки, видимо, нажал кнопку «Повторить» сорок восемь раз! И не только ей!

Антон медленно поднялся с колен.

– Элеонора Витальевна, вы хотите сказать…

– Я хочу сказать, что на расчетный счет нашей аптечной сети только что упало пять миллионов триста тысяч рублей! – она перешла на торжественный шепот. – И это только за последние десять минут! Деньги сыплются, как из рога изобилия!

В коридоре послышался топот. Это бежала тетя Люся, размахивая распечаткой банковской выписки.

– Элеонора! Антон! У нас в выписке какой-то сюрреализм! Платежи дублируются каждые тридцать секунд! У меня 1С: Бухгалтерия захлебнулась, она не понимает, куда столько авансов вешать! У нас по отчетам теперь каждая вторая бабушка в районе – оптовый закупщик элитных шприцов и мази Вишневского!

– Это же прекрасно! – Элеонора Витальевна уже явно видела себя на обложке Forbes «Аптечный магнат года». – Антон, не смей ничего исправлять! Скажи Виталию, что мы согласны на такие «ошибки».

– Элеонора Витальевна, – Антон почувствовал, как седеет еще один волосок у него на виске. – Вы понимаете, что это глюк шлюза? Как только они заметят, они отзовут платежи. А если мы их потратим – это 159-я статья, мошенничество в особо крупном. И крайним буду я, потому что «программист не настроил фильтр дублей».

– Ой, зануда! – отмахнулась директриса. – Ты лучше скажи, почему у меня в телефоне баланс растет, а на 8-й аптеке до сих пор всё лежит?

Антон посмотрел на Сеню, который в углу пытался понять, почему после его «чистки» SQL-сервера монитор в аптеке показывает только мультики про Свинку Пеппу.

В этот момент зазвонил телефон. На экране – Виталий из банка.

– Антон? – голос Виталия был подозрительно бодрым, на заднем фоне слышались крики и звук разбивающейся посуды. – Слушай, тут такое дело… У нас скрипт зациклился. Мы вам там случайно немного лишнего отправили. Ты это… не мог бы ты в своей 1С нажать «Отмена всех транзакций за утро»? А то у нас тут председатель правления уже за валидолом потянулся.

Антон усмехнулся.

– Виталий, дорогой. На нашей стороне потерь нет. Проблема в вашем ПО. Пришлите лог-файл в формате .xml за последние три года, мы рассмотрим его в течение месяца…

– Антон, не до шуток! – взмолился Виталий. – Если мы не вернем деньги через час, я пойду работать дворником в твою аптеку!

– О, – Антон оживился. – У нас как раз вакансия в 8-й. Там сейчас Сеня работает, вам будет о чем поговорить.

Глава 5. Бумеранг

11:15.

Антон стоял посреди кабинета, в трубке Виталий из банка «Стабильность» уже перешел от вежливых просьб к стадии «я сейчас приеду и сам нажму Delete на твоем сервере».

– Виталик, успокойся, – ледяным тоном произнес Антон, глядя, как Сеня пытается собрать серверный блок питания с помощью синей изоленты. – Ты же сам говорил: «На нашей стороне потерь нет». Вот и у нас сейчас – сплошные приобретения. Пять миллионов прибыли за утро. Акционеры плачут от счастья.

– Антон, побойся бога! – взмолился Виталий. – У нас в системе из-за этого дубля вылетело всё ядро. Если мы не откатим транзакции до обеда, ЦБ отзовет лицензию, а меня сошлют настраивать банкоматы в тундру!

– Виталя, выдохни, – спокойно сказал Антон. – Не суетись. На нашей стороне, конечно, потерь нет, но я сегодня добрый. Расслабься, сейчас набросаю обработку, вычленим твои «подарки» и вернем в целости и сохранности. Только с тебя потом простава – нормальный кофе в зернах, а не тот растворимый гудрон, что вы нам на прошлый Новый год дарили.

– Да я тебе плантацию в Колумбии куплю! – выдохнул Виталий. – Только жми на кнопки быстрее!

– Работаем, – бросил Антон и отключился.

Он быстро набросал обработку на коленке. Код лился легко, как песня, но тут в дверях появилась Анечка. Она выглядела подозрительно радостной.

– Анто-о-он! – пропела она. – А я тут подумала, что нам нужно обновить корпоративный дух! Раз у нас сегодня столько денег привалило, может закажем на Wildberries пятьсот розовых ковриков для мышек с логотипом нашей аптеки!

Антон выдохнул и медленно закрыл глаза.

Глава 6. Тонер преткновения

12:00.

В этот момент дверь в кабинет вынесла Элеонора Витальевна. Вид у неё был такой, будто у неё только что отобрали последний шанс на бессмертие.

– АНТОН! КАТАСТРОФА! – взревела она. – 5-я аптека! Центральная! У них ПАНИКА! Продажи стоят! Клиенты уходят к конкурентам! Жанна Аркадьевна лично звонила – сказала, что наступил технический дефолт!

Антон мгновенно перешел в режим боевой готовности. Мысли закрутились: «Так, 5-я аптека… Это же наш флагман. Неужели база рухнула? Или фискальный накопитель сгорел? Или обрыв магистрального кабеля?»

– Что случилось?! – Антон уже тянулся к консоли удаленного доступа. – База не открывается? Чеки не бьются?

– ХУЖЕ! – Элеонора Витальевна едва не плакала. – У них КОНЧИЛСЯ ТОНЕР В ПРИНТЕРЕ! Они не могут ничего напечатать! Жанна Аркадьевна говорит, что работать в таких условиях – это всё равно что оперировать ржавой вилкой! НЕМЕДЛЕННО ИСПРАВЬ!

Антон медленно опустил руки. Взгляд его стал стеклянным.

– Тонер?.. – переспросил он. – В принтере? Вы серьезно?

– А ты думал, мы тут в игрушки играем?! – рявкнула директриса. – Там очередь из десяти бабушек! Иди и делай!

Антон повернулся к Сене, который как раз пытался засунуть флешку в разъем не той стороной.

– Сеня, – голос Антона был полон зловещего спокойствия. – Бросай сервер. Твой звездный час настал. Полевое крещение.

– О, круто! – подпрыгнул Сеня. – Что делать? Хакерская атака? Подмена IP-адресов?

– Почти. Тебе нужно совершить героический марш-бросок в 5-ю аптеку и заменить картридж. И помни: там Жанна Аркадьевна. Если ты не поклонишься ей трижды перед тем, как открыть крышку принтера – ты оттуда не вернешься.

Сеня схватил запасной картридж, как боевой снаряд, и вылетел из кабинета. Антон проводил его взглядом, перекрестил дверь и сел за компьютер.

– Антон! Тут такое дело… мне вышло какие-то окошко где было написано, что требуется какое-то обновление и кнопка «Обновить всё». А после того как я её нажала, там вылезла такая красивая картинка с черепом и костями… Это же значит, что обновление прошло успешно, да?

Антон посмотрел на свой монитор. Сеть медленно уходила в небытие.

Глава 7. Тайная комната внутри ККТ

12:45.

Антон только-только вошел в транс, вычищая дубли оплат Виталика, как его телефон зозвонил на столе, вибрируя так сильно, что едва не сбросил кактус Кешу на пол. На экране светилось: «СЕНЯ».

– Да, Сеня, ты заменил картридж? – Антон прижал трубку плечом, не отрываясь от кода.

– Шеф… тут это… – голос Сени дрожал, в нем слышались нотки экзистенциального кризиса и далекое, зловещее шипение Жанны Аркадьевны. – Тут аномалия. Матрица дала сбой.

– Что случилось? Бумага застряла?

– Нет, бумага идет! – Сеня перешел на сдавленный шепот. – Она вылетает из кассы, нож её аккуратно отрезает, всё по фэншую. Но она… она девственно чистая, Антон! Белая, как снег в Альпах! Я уже три чека пробил – пустота. Жанна Аркадьевна смотрит на меня так, будто я съел её любимый справочник Видаля.

Антон замер.

– И в чем проблема, по-твоему?

– Так в том и дело! – воскликнул Сеня. – Я всё осмотрел. Разобрал эту чертову коробку наполовину. Но я в упор не вижу, куда тут засыпать тонер! Тут нет ни фотобарабана, ни лазера, ни магнитного вала. Тут вообще места под порошок нет! Я у Жанны спросил, где у них запасы тонера для кассы, а она ответила, что «мои интеллектуальные способности стремятся к абсолютному нулю». Шеф, где у ККТ заправочный люк?!

Антон медленно закрыл глаза и приложил ладонь к лицу.

– Сеня… скажи мне, ты какой стороной рулон вставил?

– В смысле «какой»? Круглой! Она же круглая! Я её туда впихнул, она крутится…

– Сеня, послушай меня внимательно, – Антон старался говорить максимально доходчиво, как ребенку. – В кассовом аппарате нет тонера. Там термопечать. Головка просто жжет бумагу.

– Жжет? – голос Сени стал подозрительным. – В смысле жжет? Она что, лазером стреляет?

– Нет, Сеня. На бумаге есть специальный слой. Ты вставил рулон «наизнанку». Ты печатаешь по обратной стороне, где нет термочувствительного слоя. Переверни рулон, гений цифровой трансформации.

В трубке повисла долгая, тяжелая тишина. Было слышно, как на заднем плане Жанна Аркадьевна громко произносит:

– …и эти люди еще пытаются рассуждать о блокчейне, не зная физики на уровне пятого класса!

– Ой… – наконец выдавил Сеня. – Слышу, зашуршало. О! Полез текст! «ООО Здоровый Костыль… Кассир: Жанна…». Заработало! Шеф, ты маг!

– Я не маг, Сеня, я просто читал инструкцию, – вздохнул Антон. – Возвращайся давай. У нас тут Анечка «обновила» систему, и теперь у меня на мониторе вместо 1С – приглашение в онлайн-казино на португальском языке.

– Понял, лечу! – радостно крикнул Сеня. – Кстати, Жанна Аркадьевна просила передать, что у чека «недостаточно благородный оттенок черного». Ты не знаешь, где в настройках драйвера подкрутить контрастность до уровня «Глубокая полночь»?

– Вешай трубку, Сеня. Просто вешай трубку.

Глава 8. Испанский стыд на португальском языке

13:00.

Антон сидел перед монитором, судорожно вбивая в командную строку коды очистки реестра. Благодаря «обновлению» Анечки, её рабочий стол превратился в филиал Лас-Вегаса. По экрану летали золотые монеты, мигали неоновые вывески «BÔNUS DE BOAS-VINDAS!» и периодически выпрыгивали окна с анимацией, которую никак нельзя было назвать «учебно-методическим пособием по фармакологии».

– Да закройся ты, проклятая рулетка! – рычал Антон, пытаясь поймать мышкой крошечный крестик, который при наведении убегал в другой угол экрана.

В этот самый момент дверь в кабинет Анечки открылась с характерным скрипом, который издавала только обувь тети Люси. Она зашла в кабинет с пачкой актов сверки, напевая какой-то мотивчик из советских кинофильмов.

– Антоша, я тут подумала… – начала она, поправляя очки. – Нам нужно сверить дебиторку по поставщику подорожника, а то у меня цифры не пляшут…

Она подошла к столу и замолчала. Мотивчик оборвался на полуслове.

На 27-дюймовом мониторе в этот момент, победно звеня фанфарами, развернулось на весь экран окно с надписью: «VOCÊ GANHOU! MULHERES QUENTES ESTÃO ESPERANDO POR VOCÊ!». И ладно бы только надпись – картинка на заднем плане не оставляла никаких сомнений в том, что именно «ждут» эти дамы.

Антон замер. Его рука на мышке одеревенела.

– Антоша… – голос тети Люси стал тонким и вибрирующим, как натянутая струна. – Это что же… это вот чем ты занимаешься, пока у нас 8-я аптека на листочках торгует?

– Тетя Люся, это не то, что вы думаете! – Антон наконец обрел дар речи и начал неистово кликать по экрану, отчего окон стало еще больше. – Это вирус! Анечка нажала на ссылку! Это португальское казино!

– Казино?! – ахнула она, прижимая акты к груди. – Так ты еще и на наши деньги в азартные игры играешь?! С голыми женщинами?! Антоша, я тебя с пеленок знаю, я твоей маме на собраниях в школе поддакивала! А ты… ты в приличном заведении вертеп устроил!

– Да какой вертеп! – Антон в отчаянии просто выдернул шнур питания из монитора. Экран погас, но в тишине кабинета из колонок всё еще доносилось ритмичное: «Jackpot! Jackpot! Ooooh, sim!».

– И звук не выключается… – прошептала тетя Люся, пятясь к двери. – Порочный ты человек, Антон. А с виду такой серьезный, в очках… Пойду Элеоноре Витальевне скажу, чтобы она тебе доступ к интернету по талонам выдавала. А то ведь так и до тюрьмы недалеко!

– Тетя Люся, постойте! Это скрипт-вымогатель! – крикнул он ей вслед, но дверь уже захлопнулась.

Через секунду в коридоре послышался её возмущенный голос: «Элеонора! Элеонора Витальевна! Срочно зайдите, там у него… непотребство! В прямом эфире из Лиссабона!».

Антон уронил голову на стол. В этот момент в кабинет зашел сияющий Сеня с пустым картриджем в руках.

– Шеф, я вернулся! Жанна Аркадьевна сказала, что я «примитивный исполнитель», но зато теперь принтер печатает так четко, что на чеках видны даже водяные знаки… Ой, а чего ты в темноте сидишь? И почему у тебя из колонок португальская попса орет?

– Сеня, – глухо произнес Антон, не поднимая головы. – У тебя есть пять минут, чтобы снести систему, переустановить всё и доказать всем, что я не игроман. Иначе твое следующее задание будет – инвентаризация склада клизм вручную.

Конец ознакомительного фрагмента.

Текст предоставлен ООО «Литрес».

Прочитайте эту книгу целиком, купив полную легальную версию на Литрес.

Безопасно оплатить книгу можно банковской картой Visa, MasterCard, Maestro, со счета мобильного телефона, с платежного терминала, в салоне МТС или Связной, через PayPal, WebMoney, Яндекс.Деньги, QIWI Кошелек, бонусными картами или другим удобным Вам способом.