— Аркаша, только ничего не нажимай.
— Я ещё даже не подошёл.
— Я тебя знаю заранее.
Так меня встретил дядя Вадим в магазине у нашего дома. Было без десяти восемь, двери для покупателей ещё не открыли, а я пришёл помочь ему перенести коробку с рекламными листовками. Работа на три минуты. Я рассчитывал закончить её, получить булочку из пекарни и уйти.
Потом я увидел ценник у огурцов.
На нём было написано:
«ТОРТ ШОКОЛАДНЫЙ. 1490 РУБ./ШТ.»
— Дядь Вадим.
— Что?
— У вас огурцы сильно подорожали.
Он подошёл, посмотрел на ценник и закрыл глаза.
— Только этого не хватало.
— Зато торт, наверное, подешевел.
Мы пошли к холодильной витрине. Под шоколадным тортом сияла маленькая электронная табличка:
«ОГУРЦЫ СРЕДНЕПЛОДНЫЕ. 219 РУБ./КГ.»
— Беру два, — сказал я.
— Не смешно.
— Немного смешно.
Электронные ценники появились в магазине неделю назад. Они были размером с визитную карточку и держались на полках в пластиковых рамках. Внутри не было бумажки: экран менялся сам, когда компьютер магазина присылал новую цену. Дядя Вадим объяснял мне раньше, что каждый ценник привязан к конкретному товару по своему номеру. Цена меняется в программе — через несколько минут обновляется и на полке.
Удобно. Пока огурец не превращается в торт.
— Вчера вечером техник проверял новую группу ценников, — сказал дядя Вадим. — После закрытия всё было нормально.
Мы пошли вдоль рядов.
У макарон обнаружилась надпись «Губки хозяйственные, пять штук».
У губок — «Корм для канареек».
У корма для канареек — «Макароны, спираль».
— Круговорот товаров в магазине, — сказал я.
— Не помогай словами. Ищи дальше.
Через пять минут у нас было одиннадцать перепутанных ценников. Остальные выглядели нормально. Кассиры как раз включали терминалы, пекарь выкладывал свежий хлеб, а уборочная машина гудела в дальнем проходе. До открытия оставалось чуть больше получаса.
— Можно просто переставить таблички на правильные места, — предложил я.
— Нельзя.
— Почему? Вот эту от торта к огурцам, эту от огурцов к торту. Готово.
Дядя Вадим снял один ценник с полки и перевернул. На обратной стороне был маленький штрихкод и номер: E-0417.
— Потому что завтра компьютер обновит цену торта, а сообщение уйдёт вот сюда, к огурцам. Мы исправим внешний вид на один день, а связь останется неправильной.
— Значит, надо перепривязать.
— Значит, надо сначала понять, что именно перепуталось.
В служебной комнате он открыл программу на планшете. На экране была таблица: товар, номер ценника, полка, состояние связи.
Шоколадный торт числился за E-0417.
— Это номер ценника, который висит у огурцов, — сказал я.
— Верно.
Огурцы числились за E-0882. Мы вернулись к витрине. У торта сзади было E-0882.
— Они просто поменялись местами физически? — спросил я.
— Пока похоже на это.
Но макароны всё испортили.
По программе макароны должны были быть E-1051. На полке под макаронами висел E-1051 — то есть правильный номер. Только текст на нём был про губки.
Я посмотрел на дядю Вадима.
— Значит, его не переставили.
— Значит, вариантов уже два. Часть ценников висит не там, часть получила не те данные.
— Отличная система.
— Система нормальная. Отличное утро.
Он позвонил технику. Тот ехал через весь город и обещал быть не раньше девяти.
— Магазин мы на час не закроем, — сказал дядя Вадим. — Бумажные временные ценники распечатаем. Но сначала хочу понять масштаб, чтобы не искать ошибку весь день.
Мне выдали планшет и ручной сканер. Сканер выглядел как толстый телефон с красным лучом. Им можно было считать код на товаре и сразу увидеть карточку в системе.
— Ничего не меняешь, — предупредил дядя Вадим. — Только сравниваешь. Товар, ценник, номер.
— А если найду причину?
— Тогда торжественно сообщишь взрослому человеку, у которого есть пароль.
Вот это был разумный порядок.
Мы разделились. Дядя Вадим пошёл от овощей к молочным продуктам, я — от бытового ряда к бакалее.
Схема оказалась простой. Сканирую пачку риса: товар «Рис длиннозёрный». Смотрю на ценник: тоже рис. Переворачиваю ценник: E-0710. В планшете у риса — E-0710. Всё совпало.
Чай — совпало.
Соль — совпало.
Печенье — совпало.
А потом я дошёл до полки, где начиналась странность.
На хлопьях висело «Салфетки бумажные».
Номер ценника совпадал с хлопьями.
Следующий товар — кофе. На ценнике «Хлопья кукурузные». Номер снова правильный для кофе.
Следующий — какао. На ценнике «Кофе растворимый».
Я сделал ещё два шага.
Картина продолжалась: каждый ценник был физически на своём месте, но показывал товар с предыдущей полки.
— Дядь Вадим! — крикнул я.
— Я слышу тебя через три ряда. Что нашёл?
Он подошёл.
— Здесь не случайная путаница. Смотри: хлопья показывают салфетки. Кофе показывает хлопья. Какао показывает кофе. Всё сдвинуто на одну позицию.
Дядя Вадим провёл пальцем по строкам на планшете.
— Точно.
— Если найти первый неправильный, можно понять, откуда пошёл сдвиг.
Мы пошли назад. Кофе, хлопья, салфетки. Перед салфетками стояла гречка.
Гречка показывала гречку.
Следом — салфетки, но экран у них утверждал, что это губки для посуды.
— Значит, начинается здесь, — сказал я.
— А где у нас губки?
В другом ряду.
Мы нашли губки. Их ценник показывал корм для канареек. Канареечный корм показывал макароны. Макароны — снова губки.
Я присвистнул.
— Это не цепочка. Это маленький круг и длинная цепочка рядом.
Дядя Вадим снял очки и протёр их краем футболки.
— Вчера техник переносил тестовые шаблоны. Возможно, импортировал список в неправильном порядке.
— Что значит импортировал?
— Загрузил сразу много строк из файла. Если в одной колонке товары, а в другой номера экранов и строки съедут, получится как сейчас: устройство своё, данные чужие.
— А торт с огурцом?
— Там, похоже, ещё и два ценника переставили при уборке. Отдельная история.
До открытия оставалось двадцать минут.
Дядя Вадим распечатал временные бумажные ценники для всех найденных ошибок. Я помогал вставлять их в прозрачные держатели перед электронными экранами. Покупатель видел правильную цену, а неправильный экран оставался спрятанным за бумажкой до приезда техника.
— Одиннадцать? — спросил кассир Антон.
— Уже семнадцать, — ответил я.
— Растёшь.
— Не я. Ошибка.
— Она тоже молодец.
В восемь двери открылись.
Первой вошла женщина с тележкой, которая каждое утро покупала кефир и газету. Она прошла мимо огурцов и ничего не заметила. Я почему-то почувствовал лёгкое разочарование. Столько работы — и никто не оценил торт за килограмм.
Потом пришёл техник Денис. Дядя Вадим показал ему наш список.
— Сдвиг начинается отсюда, — сказал я и ткнул в строку салфеток. — А эти три образуют кольцо. И отдельно E-0417 с E-0882 висят физически наоборот.
Денис посмотрел сначала на список, потом на меня.
— Ты это сам нашёл?
— Нет, магазин подсказывал очень громко.
Он открыл журнал изменений. Там хранилось, что и когда отправляли на ценники. В 21:47 действительно была массовая загрузка. В одной группе семнадцать строк получили данные со смещением, а три строки замкнулись между собой из-за неверно выбранного диапазона.
— Вот, — Денис увеличил таблицу. — Видишь? В колонке товаров семнадцать строк, а в колонке назначения выделили начиная со следующей строки.
— То есть всё уехало на одну клетку вниз.
— Именно.
— А канарейки зачем закольцевались?
— Их тестировали отдельно. Я вчера сделал временную связку и забыл вернуть.
Дядя Вадим не стал изображать начальника, который никогда не ошибается. Он просто спросил:
— Исправить сколько?
— Минут десять.
Денис сначала восстановил правильные связи в программе. Потом отправил обновление. Электронные таблички мигнули одна за другой.
Макароны снова стали макаронами.
Губки — губками.
Канареечный корм перестал притворяться чем-либо ещё.
Мы дошли до овощей.
Под огурцами всё ещё стояло «Торт шоколадный».
— А эти два надо просто вернуть на места, — сказал я.
Дядя Вадим посмотрел номера и кивнул.
Мы переставили E-0417 к торту, E-0882 к огурцам. Денис отправил тестовое изменение: снизил цену огурцов на один рубль, подождал несколько секунд и вернул обратно. Изменилась именно табличка у огурцов.
— Готово, — сказал он.
Я посмотрел на часы. Было восемь двадцать три.
— А я вообще-то пришёл перенести коробку.
Дядя Вадим посмотрел в угол служебной комнаты. Коробка с рекламными листовками так и стояла там, где была.
— Точно.
— Три минуты работы.
— Не торопись. Сегодня это подозрительно.
Коробку мы всё-таки перенесли.
Потом дядя Вадим дал мне обещанную булочку и чек. На чеке значилось:
«Булочка с корицей — 1 шт.»
Я проверил дважды.
— Всё правильно? — спросил он.
— Цена похожа на правду.
— А название?
Я откусил кусок.
— Пока тоже.
Когда я уже выходил, кассир Антон крикнул вслед:
— Аркаша! Подожди!
Я обернулся.
— Что ещё перепуталось?
— Ничего. Ты рекламные листовки не туда поставил.
Мы с дядей Вадимом посмотрели на коробку. Вместо стойки у входа я по привычке отнёс её к двери склада.
— Вот теперь, — сказал дядя Вадим, — система полностью восстановлена. Ошибки снова делают люди по одной.