Ко мне обратилась компания, которая продавала оборудование для кафе. Сайт на конструкторе принимал заявки, а учёт вели в десктопной программе, о которой я раньше только слышал. Директор сказал: «Нужно, чтобы заявка с сайта сразу появлялась у менеджера в учёте, без двойного ввода». Я кивнул, как будто это стандартный понедельник. Внутри было «я ни разу не подключал такую связку».
Первую неделю я только читал. Документация оказалась наполовину устаревшей: скриншоты не совпадали с кнопками. Я созвонился с их «человеком, который когда-то настраивал учёт» — он уволился, остался пароль на стикере. Мы нашли экспорт в промежуточный формат: странный набор полей, лишние кавычки, даты в трёх видах. Я написал маленькую программу-переводчик: принимает наш простой набор «имя, телефон, комментарий», отдаёт их файл, который учётная программа съедает при импорте. Это был не «живой обмен», а почти ручная выкладка раз в пятнадцать минут по расписанию. Но директор уже радовался: менеджеры перестали ругаться на пропущенные заявки с сайта.
На второй неделе я полез глубже — хотел без задержки. Оказалось, у программы есть закрытый интерфейс обмена, но ключ выдают только партнёрам. Мы написали в поддержку, ждали ответ четыре дня, получили ссылку на платный модуль и список требований к серверу. Бюджет клиента дрогнул. Мы вернулись к схеме «сайт → промежуточная папка → импорт», но я ускорил её: теперь файл появлялся через минуту после отправки формы, а не раз в четверть часа. Я также добавил журнал: каждая заявка с номером, временем, статусом «принята учётом» или «ошибка формата».
Самая злая ошибка всплыла на третьей неделе. Два менеджера одновременно импортировали разные файлы — получились дубли клиентов, один реальный человек оказался в базе трижды с разными опечатками в фамилии. Мы ввели правило: импортирует только старший, плюс я добавил проверку по телефону — если номер уже есть, новая строка не создаётся, а дописывается комментарий к существующей карточке. Звучит очевидно, но до боли в проекте доходят не сразу.
Три недели — и что в итоге
Через три недели у них работала связка, которой можно было пользоваться каждый день. Не элегантная, не «как у больших», но стабильная. Я написал инструкцию на одной странице: что делать, если заявка не пришла, куда смотреть журнал, кого звонить. Директору я объяснил схему без слов «интеграция» — только «сайт кладёт файл, учёт его забирает». Он перестал звонить мне по каждому сбою — сначала смотрел журнал, потом писал.
Я вынес урок: форматы важнее красивого кода. Потратить день на то, чтобы понять, как у них реально называются поля, дешевле, чем неделю чинить «почему программа не видит клиента». Второй урок — не обещать мгновенный обмен, пока не прочитал ограничения чужой учётной системы. Третий — всегда оставлять след: журнал, копия входящего файла, возможность повторить импорт вручную. Сейчас, когда ко мне приходят «свяжите сайт с 1С или чем-то ещё», я первым делом прошу экспорт и импорт на реальных трёх заявках. Если это уже боль — значит, проект живой. Если «в теории всё просто» — значит, впереди мои три недели, только с другим названием программы.
Отдельная история — кодировки. В одном файле фамилия «Семёнов» превращалась в набор символов, и учёт отбрасывал строку целиком. Я два дня гонял файл туда-сюда, пока не договорился с их программистом из поддержки о единой кодировке для обмена. С тех пор в начале каждого проекта обмена я прошу один тестовый файл с кириллицей, ё и длинным тире в комментарии. Скучно, но спасает.
Менеджеры привыкли звонить клиенту сразу после заявки. Когда связка задержалась на минуту, они нервничали: «Клиент уйдёт». Пришлось показать журнал — заявка уже в учёте, просто не мигает у них на экране так, как привыкли. Мы добавили простую страницу «последние десять заявок» на внутреннем сайте — не избыточность, а психологический мост, пока учёт не научили смотреть в новое место.
Директор в конце сказал: «Я думал, вы принесёте волшебную кнопку». Я принёс цепочку, которую можно объяснить охраннику у ворот. Для меня это успех. Связь сайта с учётом — не про то, чтобы «данные летали сами». Про то, чтобы люди перестали дублировать и ругаться из-за потерянных строк. Три недели форматов и договорённостей — нормальная цена за первый раз. Второй раз я укладываюсь быстрее, но никогда за два дня, если честно смотрю на чужую систему.