Короткий отчёт о рабочем дне: с утра доводили бота учёта в мессенджере, а параллельно продолжали воевать с обменом между Odoo и 1С. Ниже — что сломалось, что починили и до чего дошли.
Бот учёта: команда, которая ломала операцию на полуслове
Нашли неприятную ловушку. Пользователь начинал одну операцию — скажем, приход материала, — доходил до шага «введите название нового склада», а потом, не закончив, набирал другую команду, например «переместить». Беда в том, что текст команды воспринимался как ответ на текущий шаг: вместо перехода к новой операции в базе появлялась запись-пустышка с именем в виде самой команды.
Разобрались в причине: обработчик шага, который ждёт любой текст, срабатывал раньше, чем обработчик команды, — и перехватывал ввод на себя. Поставили «привратника»: пока идёт незавершённая операция, любые новые команды блокируются с подсказкой «сначала завершите или отмените». Добавили команду /отмена, чтобы из операции всегда можно было выйти. Мусорную запись, которую баг успел создать, из базы убрали.
Обмен с 1С: медленно, но по делу
Второй фронт — перенос документов из Odoo в 1С:Бухгалтерию. Odoo здесь остаётся источником данных, а 1С — приёмником: контрагенты, номенклатура, счета, счета-фактуры и платежи должны приезжать в 1С без ручного перебивания.
Львиная доля времени ушла не на саму логику, а на цикл «поправил — доставил — проверил»: обработку для 1С собираем на стороне разработки, отдаём на рабочее место, там её гоняют в 1С и присылают замечания — и так по кругу. Отдельно повозились с тем, чтобы сборка обработки была точной, без побочных искажений, и чтобы в 1С приходили ровно те поля, что нужно.
До чего дошли
Обмен поднят и передаёт живые документы. Пока намеренно тянем по одному документу каждого типа — так проще глазами сверить, что приходит ровно то, что ожидаем. Повторные загрузки защищены от дублей: каждый документ помечается, и второй раз он не создаётся. Следующий шаг — снять «ручник» с очереди, чтобы документы шли потоком с автоматическим подтверждением обработанных.
Итог
День закрыли с двумя результатами: бота учёта больше нельзя сломать, нажав команду на полуслове, а обмен с 1С работает в контролируемом тестовом режиме и готов к переходу на поток. Не громко, но по делу.