Вхолостую

19 августа разработчик попросил всех выйти из 1С. Через пятнадцать минут интеграция, два месяца исправно работавшая в тестовой среде, была установлена на боевой сервер. Это должна была быть самая скучная часть проекта. Вместо этого именно с неё всё началось.

В этой истории

19 августа 2024 года в 16:58 в рабочем Telegram-чате появилось сообщение:

«Коллеги, через 3 минуты буду переносить доработку на рабочую базу, просьба в 15:00 завершить работу в системе».

Через несколько секунд со стороны клиента ответили:

«Передам».

Ещё через три минуты:

«Сейчас в УТ никого».

В 17:13 разработчик сообщил, что закончил.

Доработка стояла на сервере клиента. Настройки были переключены с тестового Measoft на настоящий. Measoft — программа для курьерской службы; через неё у клиента работала доставка в Узбекистане.

Регламентное задание должно было раз в полчаса проверять 1С, находить новые заказы и передавать их в Measoft.

К сообщению прилагались два снимка экрана и инструкция.

Ничего примечательного.

Именно так обычно выглядит момент, когда разработка заканчивается.

Только в этот раз она начиналась.

Проект стартовал в начале лета. Клиент продавал автомобильную электронику и хотел связать 1С:Управление торговлей с системой курьерской службы.

До этого часть пути заказ проходил с помощью людей.

Он появлялся в 1С, затем сведения о получателе, адресе, товарах и доставке нужно было передать дальше. После выполнения заказа часть данных возвращалась обратно.

Предполагалось, что всё это будет происходить автоматически.

1С создаёт заказ.

Measoft его получает.

Курьерская служба выполняет доставку.

Информация возвращается.

1С создаёт необходимые документы.

Была одна особенность: клиенту требовался поштучный учёт серийных номеров. После доставки в 1С должны были вернуться номера именно тех устройств, которые фактически уехали покупателю.

Для разработки Measoft предоставил тестовый контур — песочницу.

Название хорошее.

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

Главное условие довольно простое.

Песочница должна вести себя так же, как настоящая система.

В июле обнаружилось первое препятствие.

Получить через API серийные номера отдельных товаров было невозможно.

Не потому, что наши программисты неверно составили запрос.

Такой возможности в Measoft просто не существовало.

Специалисты сервиса подтвердили это и передали запрос своим разработчикам.

Через несколько дней функция появилась.

Работа продолжилась.

К августу обмен был собран.

Заказы уходили.

Ответы приходили.

Механизмы отрабатывали.

8 августа клиенту показали готовый вариант.

После демонстрации он написал:

«На первый взгляд то, что хотели».

А затем задал вполне разумный вопрос:

«Что делаем, если вдруг спустя время интеграция не работает, работает некорректно?»

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

И добавил оговорку: при условии, что API Measoft функционирует должным образом.

Через одиннадцать дней разработчик попросит всех выйти из 1С.

А вскоре эта оговорка перестанет выглядеть формальностью.

После переноса на рабочую систему начали появляться ошибки.

Сначала ничего большого.

Не прошло одно поле.

Потом другое.

Запрос, который нормально отрабатывал в песочнице, рабочий сервис принимал иначе.

Стали разбираться.

Выяснилось, что некоторые поля, необязательные в тестовом контуре, в настоящем обязательны.

Структура отправляемых данных различалась.

Некоторые параметры использовались по-разному.

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

Это неприятное сочетание.

Если бы системы отличались сильно, это обнаружилось бы сразу.

Если бы они были одинаковыми, проблемы не существовало бы.

Но различия сидели в деталях и показывали себя по одной.

Например, доставка.

В 1С существовал «Вид доставки».

В Measoft тоже существовал «Вид доставки».

Можно было предположить, что речь идёт об одном и том же.

Оказалось — нет.

Значения, которые клиент использовал в 1С, на стороне Measoft относились к другому параметру.

Обе программы использовали знакомые слова, но вкладывали в них разный смысл.

Разобрались.

Отдельно пришлось вернуться к серийным номерам. К тому моменту Measoft уже научился передавать их через API, однако номенклатура в двух системах называлась по-разному, и 1С не могла корректно сопоставить полученные данные со своими товарами.

Привели справочники в соответствие.

Обмен пошёл дальше.

В другой момент вмешалось время.

Рабочий компьютер жил по Москве.

Документы 1С — по Ташкенту.

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

Исправили.

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

Убрали.

Позже доработали расчёт количества грузовых мест.

И так далее.

Никакого одного большого дефекта не существовало.

Не было красивой ошибки, которую можно найти, исправить и закрыть вопрос.

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

Каждое из них решалось.

После него становилось видно следующее.

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

К тому моменту программистам пришлось переработать примерно 30–40 процентов уже готового функционала.

Причина была простой и от этого особенно неприятной: песочница оказалась не вполне копией рабочего сервиса.

Всё это время интеграция действительно работала.

Просто работала не там.

К осени в проекте постоянно участвовали три стороны.

Клиент.

Наша команда.

Measoft.

У каждой был свой кусок происходящего.

Наши разработчики видели запросы, которые отправляла 1С, и ответы, которые получала обратно.

Клиент видел результат в программе курьерской службы.

Специалисты Measoft видели свою систему изнутри.

Иногда эти картины совпадали.

Иногда нет.

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

Сначала большая часть технического общения шла через клиента.

Потом наших программистов добавили в чат со специалистами Measoft.

Telegram неожиданно стал ещё одним звеном обмена.

В подобных проектах довольно быстро появляется фраза:

«У нас всё правильно».

И она вполне может быть правдой.

Можно открыть журнал.

Показать запрос.

Показать ответ.

Найти место, где поведение перестало соответствовать ожидаемому.

Технически граница ответственности определена.

Только заказ от этого не начинает работать.

Поэтому постепенно спор о том, на чьей стороне очередная проблема, уступил место более простому способу.

Разработчики брали конкретный заказ и проходили вместе с ним весь путь.

Создание в 1С.

Передача.

Появление в Measoft.

Работа курьерской службы.

Изменение статуса.

Возврат данных.

Создание документов.

На каком шаге цепочка останавливалась, там и разбирались.

Ничего эффектного.

Зато постепенно количество таких мест уменьшалось.

К октябрю одной из последних оставалась доставка.

Нужно было убедиться, что установленный режим не только правильно передаётся при создании заказа, но и не меняется позднее в процессе работы курьерской службы.

Создали очередной заказ.

Попросили изменить статус.

Стали ждать.

Рабочий день в Узбекистане закончился раньше проверки.

Продолжили утром.

На следующий день клиент написал:

«Универсал не поменялся».

И следом:

«Похоже работает».

Фраза «похоже работает» к тому моменту уже звучала вполне обнадёживающе.

18 октября программисты закончили ещё одну доработку и перенесли её на рабочую базу.

Через несколько часов клиент написал:

«Проверили на боевой. Работает».

Потом:

«Режим доставки верный, количество мест верное».

И:

«Спасибо».

Несколько месяцев технических обсуждений закончились несколькими короткими сообщениями.

Это, пожалуй, нормальное состояние автоматизации.

Пока она не работает, вокруг неё образуется огромное количество текста.

Переписка.

Журналы.

Снимки экрана.

Запросы.

Инструкции.

Когда всё наконец начинает работать, большая часть этого становится не нужна.

Заказ создаётся.

Уходит в курьерскую службу.

Возвращаются данные.

Появляются документы.

И больше про это почти никто не разговаривает.

Недавно среди обычных рабочих звонков оказался один московский.

Человек нашёл на нашем сайте упоминание Measoft и хотел понять, можем ли мы связать его с 1С.

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

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

В какой-то момент он спросил, был ли у нас такой опыт.

Я ответил:

— Был.

После разговора полез искать старую переписку.

Нашёл.

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

На сайте всё это занимало одну строку.

Интеграция 1С с Measoft.

Вам не нужно выбирать формат заранее

Начнём с вашей ситуации

Расскажите, что происходит. Мы начнём с вопросов, разберёмся в ситуации и вместе определим следующий разумный шаг.

Хотите поговорить?

Для Москвы +7 495 033-15-00
Для всей России 8 800 600-23-25
Или написать start@octosmart.ru