Научился чистить Zoho Books
К сожалению, у ZB есть лимиты в API:
- Paid Organization — 2500 API calls/day and 100 API calls/minute
- Free Organization — 1000 API calls/day and 100 API calls/minute
У меня объемы документов намного больше. Приходилось выгружать порядка 100.000 документов. Понятно, что у меня нет 40 дней, чтобы все это выгрузить, да и на один документ уходит не один вызов API. Даже платно нельзя получить такой сервис, что странно.
Кроме того, после выгрузки заказчик проверял документы и если его что-то не устраивало, просил удалить и загрузить заново.
Поэтому загрузка документов была переделана на загрузку из CSV-файлов, там можно загружать довольно большие объемы. Это я не автоматизировал, а сажал оператора, который грузил файлы.
А вот удаление — удалось автоматизировать через Selenium.
Просто выбирались все документы, по 25 штук и имитировалось нажатие кнопок удаления.
Причем нужно сначала удалять оплаты инвойсов, потом сами инвойсы. Оплаты биллов, потом сами биллы. Иначе не дает.
Вот как я это делал для разных документов:
Код выглядит примерно так:
А вот код нажатия кнопок подтверждения:
В свое время я искал эмулятор браузера и нашел лучший на данный момент вариант — Selenium!
Писать на JaveScript-е ты не умеешь. Форматирование ужас.
В API должны быть операции для bulk выгрузки. Где-то что-то ты упустил. Обход ограничения посредством фактически создания бота могут посчитать нарушением лицензии на использование Zoho. А могут и не посчитать… В общем, надейся что твоего клиента не забанят и не впаяют лишний счет.
это я уже слыхал. Ссылку на API я тебе привел. Найдешь — с меня 1к рублей премии. 😉
А уметь в джава — это форматирование?
Я думал — результат…
Мне кажется Гений ничего этого сам не писал
Тебе кажется
В целом, код написан нормально, используются await-ы для работы с асинхронностью, поиск элементов по Xpath где нужны сложные выборки, let-ы для инициализации переменных (хотя лучше использовать const, если не меняешь значение переменной, т.к. const-ы работают быстрее).
Но потом среди нормально написанного кода начинаются вкропления адового пиздеца вида if (++i == 2), инициализации переменной вида i=0, вывод в дебаг через цикл с await. И тут мы узнаем фирменный стиль нашего гения.
Отсюда можно сделать вывод, что код только допиливался гением, а изначально был написан кем-то другим. На это также указывают и другие факторы: гений вряд ли мог сам додуматься использовать Силениум, англиский язык в формах слишком хорош для нашего гения, ну и т.д.
Если это принципиально, то код писал я сам по фрагментам кода, найденным в разных местах.
Да, JS я не часто использую, поэтому совершенства там ждать не стоит.
Но главное — работает и выполняет то, что нужно.
Каким образом запуск js из 1С выполняешь? через HTML или есть другой способ?
Я не запускаю JS из 1С. Я запускаю скрипт NODE JS. Он и запускает Selenium.
Ясно, спасибо. Способов напрямую связать selenium и 1С без промежуточных скриптов я так понимаю не существует?
Если вы про COM, как IE.Application, то нет.
А так по идее можно через файлы управлять. Т.е. выставил файл с командой, джава его прочитала, выложила текст с текущим HTML сайта.
Через одно место, но некий интерактив организовать можно.