Перейти к содержанию
Официальный форум поддержки Simpla

Синхронизации с Мой Склад особенности реализации в Симпле


Рекомендуемые сообщения

  • Ответов 99
  • Дата создания
  • Последний ответ

Лучшие авторы в теме

Лучшие авторы в теме


pikusov 18:36
Возможно проблема в разном времени в PHP 1C и Mysql

я не нашел где используется время 1С, все вроде по php пусть и не правильному
Ссылка на сообщение
Поделиться на другие сайты

И еще - вы эти заказы в симпле изменяли после 2012-08-22 22:07:39? Например, статус? Пользователь их оплачивал?

Ссылка на сообщение
Поделиться на другие сайты

Посмотрите у выгружаемых заказов через phpmyadmin поле modified, если оно больше чем s_settings.ast_1c_orders_export_date, значит они были изменены, и, соответсвенно, выгружаются их изменения.
Изменения это любые изменения заказа через админку а так же факт онлайн-оплаты

Ссылка на сообщение
Поделиться на другие сайты

я НЕ менял заказы в Симпле.
Когда менял в Симпле все нормально отрабатывало (заказ повторно выгружался)

Вся загадка, почему куча заказов выгружается после изменения хотя бы одного заказа в МС, при том, что в Симпле НИЧЕГО не делалось

Ссылка на сообщение
Поделиться на другие сайты

Посмотрел таблицу с заказами, некоторые из них имеют дату modified такую:
№ 159
создан 2012-08-23 16:52:12
изменялся 2012-08-23 18:28:19


№ 160
создан 2012-08-23 18:02:05
изменялся 2012-08-23 18:22:24


№ 141
создан 2012-08-22 22:07:39
изменялся 2012-08-23 17:48:54

Значит сам обмен работает нормально, но теперь нужно понять почему дата изменения такая свежая

Ссылка на сообщение
Поделиться на другие сайты

Я посмотрел ваш access log и нашел следующее:


**первые числа ip прикрыл***.76.229 - admin [23/Aug/2012:18:28:19 +0400] "POST /simpla/index.php?module=OrderAdmin&return=%2Fsimpla%2Findex.php%3Fmodule%3DOrdersAdmin%26return%3D%252Fsimpla%252Findex.php%253Fmodule%253DOrdersAdmin%2526return%253D%25252Fsimpla%25252Findex.php%25253Fmodule%25253DOrdersAdmin%252526return%25253D%2525252Fsimpla%2525252Findex.php%2525253Fmodule%2525253DOrdersAdmin%252526status%25253D0%2526status%253D0%26status%3D0&status=0&id=159

Ссылка на сообщение
Поделиться на другие сайты

А судя по тому (видно из лога), что переход в заказ был осуществлен со страницы Новые заказы, а сейчас заказ имеет статус Принят можно сделать вывод что человек с ip заканчивающимся на 76.229 зашел в заказ номер 159 в 18:28:19 изменил его статус на Принят и нажал Сохранить.
Соответсвенно, этот заказ выгрузился в 1С как измененный.
С остальными заказами, думаю, ситуация аналогична.

Ссылка на сообщение
Поделиться на другие сайты

Если вас не устраиват то, что измененя заказа в Симпле отражаются в 1С, вы можете изменить файл api/Orders.php, функцию get_orders, заменив midofoed на created:


if(isset($filter['modified_from']))     $modified_from_filter = $this->db->placehold('AND o.created > ?', $filter['modified_from']);


Таким образом будут отдаваться заказы созданные, а не измененные с определенной даты
Ссылка на сообщение
Поделиться на другие сайты

> а где находится access.log? :/
Домашняя страница>Домены>
Управление файлами журналов домена

>может все же отрабатывает выгрузка из МС?
Я проверил, она выгружает заказы, измененные с прошлой выгрузки, всё верно. Другое дело, нужно ли вам передавать информацию об этих изменениях в 1С. Выше я написал как отменить передачу информации об изменениях в 1С. Точнее в Мойсклад, но это одно и тоже

Ссылка на сообщение
Поделиться на другие сайты

Денис, большое спасибо. Так и сделаю.
Мое упущение, плохо заказчику объяснил, что не нужно заказы править в Симпле.

Ссылка на сообщение
Поделиться на другие сайты

После синхронизации в s_settings.ast_1c_orders_export_date записывается значение на два часа ранее

$f = fopen($dir.'logo.txt', 'a');
fwrite($f, ' ;sale query date("Y-m-d H:i:s")'.date("Y-m-d H:i:s"));
fclose($f);

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

<?
echo "PHP: ".date("Y-m-d H:i:s");
?>

выводит верное время
Попробовал прописать в 1c_exchange.php

// Временная зонаdate_default_timezone_set('CET');
т.к. она до этого устанавливалась в config.php, а он в 1c_exchange.php вроде не подключается.
Странно, но тоже не помогло.
Что делать?
Ссылка на сообщение
Поделиться на другие сайты

Видимо на сервере что-то с таймзоной.
Попробуйте убрать вот эту строку из api/Config.php


// Временная зона
date_default_timezone_set('CET');

Ссылка на сообщение
Поделиться на другие сайты

Не нашел такую зону 'CET' http://www.php.net/manual/ru/timezones.php
Прописал в 1c_exchange.php

// Временная зонаdate_default_timezone_set('Europe/Moscow');
сейчас правильно записывает, харкордно как то

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

если таймзону, например 'Europe/Moscow', прописать в конфиг, то как сделать, чтобы она стала везде доступна и в 1c_exchange.php тоже?

Ссылка на сообщение
Поделиться на другие сайты

В config.php написать
timezone = Europe/Moscow;

В api/Config.php написать вот так:
date_default_timezone_set($this->vars['timezone']);

и перенести эту строку чуть ниже, после определения переменных vars

Ссылка на сообщение
Поделиться на другие сайты

Если прописать
В api/Config.php написать вот так:
date_default_timezone_set($this->vars['timezone']);
это разве повлияет на 1c_exchange.php ?

Убрал вообще:
// Временная зона
date_default_timezone_set('CET');

Вроде работает.

Ссылка на сообщение
Поделиться на другие сайты
  • 4 недели спустя...

Если в Симпле на складе товара с артикулом арт1 1 штука, его заказали, синхронизировали заказы с МС (там товар зарезервировался и остаток стал 0), допустим заказ в Симпле еще не обработали и произошла автоматическая синхронизация остатков МС с ИМ (из МС выгрузился нулевой остаток данной товарной позиции).
Получаем заблокированный заказ (недостаточно товара 0 штук)
Как рекомендуете решить?

Ссылка на сообщение
Поделиться на другие сайты
  • 2 года спустя...

 

Со скидкой проблема решается изменением строки 220 файла /simpla/cml/1c_exchange.php:

 

$t1_4 = $t1_3->addChild ( "Сумма", $purchase->amount*$purchase->price*$order->discount/100);
заменить на
$t1_4 = $t1_3->addChild ( "Сумма", $purchase->price*$order->discount/100);

Решилась проблема со скидкой? Так как работает через раз нормально. 

Ссылка на сообщение
Поделиться на другие сайты

Стабильно работала синхронизация с моим складом (выгрузка заказов в мойсклад через скрипт). скрипт дописывали. после смены статуса в админке на "Принят" заказ выгружался в скрипт и раз в 5 минут (или по ручному зарпосу) скрипт с заказами или пустой выгружался в мойсклад. Сейчас не стабильно происзходыть выгрузка. иногда заказ прилетает, иногда нет. Не отслеживается четкий алгоритм ошибки. симпла лицинзионная

Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...