Транзакция отмены

Дождь в апреле 2026-го был таким же серым и безликим, как стандартный интерфейс старой конфигурации. Алексей стоял у проходной завода «СтальПром», сжимая в кармане куртки пластиковый пропуск. Ещё час назад он был ведущим архитектором внедрения 1С:ERP. Теперь он — «пенсионер».

— Так положено, Лёша, — сказал ему директор по персоналу, не поднимая глаз от планшета. — Оптимизация штата. Ты же сам говорил, что хочешь на покой? Вот тебе ранняя пенсия по выслуге лет в ИТ-сфере. Подпиши.

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

— Без неё я как без рук, — пробормотал он.

— Будешь печатать мемуары, — усмехнулся директор.

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

— Они тебя слили, потому что ты нашёл дыру в закупках сырья, — шепнул Игорь, когда они отошли под зонтик. — Главбух Марья Ивановна и начснаб Петров. ERP покажет все их «левые» накладные, если мы доведём проект до конца. Они знают это.

— Проект закрыт, Игорь. Меня нет. Тебя скоро тоже сократят или запугают.

Игорь схватил Алексея за лацкан.

— Я закончу. Клянусь. Но мне нужна твоя помощь. Не официально. Ты ведь не исчезнешь из матрицы просто так, напарник?

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

День 1. Тень в коде

Квартира Алексея превратилась в штаб. На столе лежала та самая клавиатура, которую он «случайно» забыл сдать, завёрнутая в антистатический пакет. Рядом шумел домашний сервер, гудящий, как улей.

Алексей не стал писать жалобы в трудовую инспекцию. Он написал скрипт.

Пока Игорь днём изображал лояльного сотрудника, медленно и с ошибками обрабатывая документы, чтобы усыпить бдительность саботажников, Алексей ночью подключался к тестовому контуру ERP через старый, забытый всеми VPN-туннель, который он сам же и создал три года назад для аварийного обслуживания.

Он видел всё.

Каждое действие Марьи Ивановны. Каждый клик Петрова.

Они не просто тормозили внедрение. Они писали внешние обработки, которые подменяли данные перед сохранением. «Сахар» в коде. Сладкий яд.

— Лёша, они сегодня заблокировали мой доступ к регистру накопления, — писал Игорь в зашифрованный чат. — Говорят, технические работы.

— Это не технические работы, напарник, — отвечал Алексей, попивая холодный кофе. — Это диверсия. Петров пытается обнулить остатки по складу №4. Там лежит нелегальный металлопрокат. Если ERP запустится с реальными остатками, вскроется недостача на миллионы.

Алексей улыбнулся. Он открыл консоль отладки.

— Пусть думают, что победили. Мы дадим им то, что они хотят. Фейковую победу.

День 2. Ловушка для крыс

На заводе царило напряжение. Игорь ходил с понурой головой, жаловался коллегам, что «старая добрая бухгалтерия» лучше любой ERP. Марья Ивановна довольно кивала, угощая его конфетами.

— Правильно, Игорёк, — говорила она. — Эти ваши программы только нервы треплют. Зачем нам эта прозрачность? Мы же семья.

Вечером Игорь пришёл домой и включил ноутбук.

— Они готовят финальный удар. Завтра собрание у директора. Они предложат заморозить проект ERP на год и вернуться на УПП. Аргумент: «система нестабильна, данные искажаются».

Алексей сидел в темноте, освещённый только строками кода. Его пальцы летали по клавиатуре. Щёлк-щёлк-щёлк. Звук был ритмичным, как сердцебиение хищника.

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

— Ты с ума сошёл? Они удалят все мои наработки!

— Нет, — ответил Алексей. — Они удалят только то, что видят. А то, что действительно важно, я спрячу там, где они никогда не будут искать. В конфигурации ERP, в виде скрытого расширения, которое активируется только при определённом условии.

— Какое условие?

— Когда кто-то попытается провести документ «Списание товаров» с отрицательным остатком.

День 3. Час Х

Собрание у генерального директора прошло именно так, как планировал Алексей. Игорь сломался. Марья Ивановна и Петров торжествовали. Директор, уставший от конфликтов, махнул рукой: «Замораживаем. Возвращаемся к старому».

Петров, чувствуя полную безнаказанность, решил закрепить успех. Ему нужно было срочно списать ту самую партию металла со склада №4, чтобы замести следы перед аудиторской проверкой, которая должна была прийти через месяц. Он думал, что раз ERP «заморожена», то контроля нет. Но он забыл, что Игорь оставил демо-доступ для «последней сверки».

Петров зашёл в систему поздно вечером. Создал документ списания. Нажал «Провести».

В этот момент в квартире Алексея сработал триггер.

Скрипт, который Алексей писал всю ночь, перехватил транзакцию. Но не заблокировал её. Он сделал кое-что другое.

Он скопировал документ, добавил в него цифровую подпись Петрова (которую тот использовал для входа) и отправил копию не в базу 1С, а напрямую на почту генерального директора, в налоговую инспекцию (через открытый интерфейс сервиса отчётности) и в службу безопасности завода. Тема письма: «Добровольное признание в хищении. Доказательства».

Но самое главное — Алексей активировал «Призрак».

Скрытое расширение, о котором он говорил Игорю, изменило поведение системы для пользователя Петрова. На экране Петрова всё выглядело нормально: «Документ проведён». Но на самом деле ERP начала автоматически формировать цепочку связанных документов, восстанавливающих истинную картину движения товара за последние два года, связывая каждую операцию с личным кабинетом Петрова и счетами офшорных фирм, которые он использовал.

Эта цепочка называлась «Отчёт для следственного комитета». И она уже формировалась.

Эпилог. Утро четверга

Алексей сидел на балконе и смотрел, как рассвет окрашивает небо в цвета интерфейса 1С: светло-серый, переходящий в бледно-жёлтый.

Ему позвонил Игорь. Голос дрожал от возбуждения.

— Лёша! Ты видел? Петрова увезли прямо с работы! Вместе с Марьей Ивановной! Служба безопасности получила какой-то автоматический отчёт... Директор в шоке. Он вызывает меня. Говорит, чтобы я срочно размораживал проект ERP. Что я единственный, кто может это исправить.

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

— А ты? Ты вернёшься?

Алексей посмотрел на свою клавиатуру. Затем на значок 1С-ника, лежащий на столе. Он взял значок и бросил его в мусорное ведро.

— Нет, Игорь. Программист 1С не возвращается. Он переходит на поддержку. А поддержка, как известно, стоит дороже внедрения ERP.

Он повесил трубку.

За окном начинался новый день. Где-то в недрах сервера «СтальПрома» тихо гудели вентиляторы, переваривая терабайты правды. Алексей открыл новый файл в текстовом редакторе.

// Начало новой конфигурации

// Автор: Призрак

Он улыбнулся. Пенсия оказалась самым продуктивным периодом в его карьере.