4XPro Опубликовано 12 января, 2018 Жалоба Поделиться Опубликовано 12 января, 2018 Сегодня обнаружил весьма неприятную ошибку при выгрузке заказов в 1С и решил поделиться тем, как ее исправлятьСуть ошибки: в модуле api/Orders.php в методке get_orders по умолчанию прописан лимит в 100 записей при получении списка заказов из базы данных. А в скрипте экспорта в 1С этот метод вызывается без указания лимита. В результате в 1С выгружаются только 100 записей. Соответственно, если с момента последнего обмена с 1С пришло или обновилось больше 100 заказов, то часть из них остается не импортированной.Исправление:в файле simpla/cml/1c_exchange.php меняем строку $orders = $simpla->orders->get_orders(array('modified_since'=>$simpla->settings->last_1c_orders_export_date)); на такую: $orders = $simpla->orders->get_orders(array('modified_since'=>$simpla->settings->last_1c_orders_export_date,'limit'=>10000)); увеличив тем самым количество строк, извлекаемых из базы до 10 тысяч.Сейчас проверил, даже в самой последней версии эта ошибка присутствует. Цитата Ссылка на сообщение Поделиться на другие сайты
Плохиш Опубликовано 13 января, 2018 Жалоба Поделиться Опубликовано 13 января, 2018 Подобные ошибки имеются в коде еще примерно в 5-6 местах и могут проявляться в десятке мест, например http://forum.simplacms.ru/topic/9579-%D0%BF%D0%BE%D0%B4%D0%B1%D0%BE%D1%80-%D1%82%D0%BE%D0%B2%D0%B0%D1%80%D0%BE%D0%B2-%D0%BA-%D0%B7%D0%B0%D0%BA%D0%B0%D0%B7%D1%83-%D0%B2-%D0%B0%D0%B4%D0%BC%D0%B8%D0%BD%D0%BA%D0%B5/ http://forum.simplacms.ru/topic/11111-%D1%83%D0%B1%D1%80%D0%B0%D1%82%D1%8C-%D0%BE%D0%B3%D1%80%D0%B0%D0%BD%D0%B8%D1%87%D0%B5%D0%BD%D0%B8%D0%B5-%D0%B2-100-%D1%81%D0%B2%D1%8F%D0%B7%D0%B0%D0%BD%D0%BD%D1%8B%D1%85-%D1%82%D0%BE%D0%B2%D0%B0%D1%80%D0%BE%D0%B2-%D0%B2-%D0%B0%D0%B4%D0%BC%D0%B8%D0%BD/ И сам подход автора, когда по умолчанию используется фиксированное значение $limit - совсем несерьезный... Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.