обмен данными с 1с8

#
Re: обмен данными с 1с8
svhs,
может я что-то не понимаю.. смотрю на lib_config_36 и удивляюсь: при обмене с 1С скрипт вызывается 12 раз, и каждый раз:

//Создадим массив для записи в него переданных данных
$array_of_data = array();                           //стр.74 (в последней редакции демо-сайта)

после создания, запись в массив происходит всего один раз:

$array_of_data[] = $GLOBALS['HTTP_RAW_POST_DATA']; //стр.102

а потом еще пытаются в цикле перебрать элементы массива!

$count = count($array_of_data);                    //стр.114

// Проверяем количество принятых файлов
if($count > 0)                                     //стр.117
{
   for($i = 0; $i < $count; $i++)             //стр.119

Да их не может быть больше одного - скрипт вызывается при получении каждого файла! И каждый раз по новой создается массив.

А зачем потом еще раз перед выгрузкой заказов:

$array_of_data = array();                         //стр.129!!!

если массив уже не используется больше. Для очистки? Вряд-ли.
Что то в скрипте явно не так....
#
Re: обмен данными с 1с8
Спасибо за помощь!

HostCMS писал(а):
PHP случайно не работает в режиме CGI? Если да, то обновляете типовую с демо-сайта и смотрите FAQ.

Как проверить в каком режиме работает PHP не знаю, больше пользователь,  но воспользовался советом и скорректировал .htaccess как написано здесь: http://www.hostcms.ru/support/faq/modules/shop/1c-php-cgi/

теперь с новым содержимым файла lib_config_36.php проверка коннекта 1С с сайтом проходит успешно )), но правильные/ошибочные моменты по передаче что были на предыдущей версии скрипта также остались и сейчас. Для чистоты эксперимента буду пробовать связать еще российскую типовую конфигурацию УТ.
#
Re: обмен данными с 1с8
zhurba писал(а):
Беда в том, что ни загрузка товаров на сайт, ни выгрузка заказов через http не работает


Разобрался в чем была проблема:

после присваивания в скрипте lib_config_36.php:

$shop_shops_id = to_int($GLOBALS['LA']['shop_id']);

переменная $shop_shops_id равна 0, а на Демонстрационном сайте нет магазина с таким ID.
(заменил присваивание на: $shop_shops_id = 1 - импорт номенклатуры сработал)

И теперь вопросы:
1. почему $GLOBALS['LA']['shop_id'] возвращает 0 ???
2. А если на сайте несколько магазинов, как настроить 1С, чтобы она обменивалась с тем магазином, с которым нужно? Сделать аналог lib_config_36.php и присвативать в нем, скажем $shop_shops_id = 2 ??? Как-то не очень красиво...
Модератор
#
Re: обмен данными с 1с8
zhurba писал(а):
1. почему $GLOBALS['LA']['shop_id'] возвращает 0? ??

Проверяйте параметры типовой дин. страницы в структуре сайта, там указывается.

zhurba писал(а):
2. А если на сайте несколько магазинов, как настроить 1С, чтобы она обменивалась с тем магазином, с которым нужно?

Создать нужные узлы структуры с той же типовой, магазин указывается в структуре сайта в атрибутах типовой.
Модератор
#
Re: обмен данными с 1с8
svhs писал(а):
теперь с новым содержимым файла lib_config_36.php проверка коннекта 1С с сайтом проходит успешно)),

значит PHP у Вас работает в режиме CGI.

svhs писал(а):
но правильные/ошибочные моменты по передаче что были на предыдущей версии скрипта также остались и сейчас

Этот вопрос у программистов, ответ будет дан дополнительно.
#
Re: обмен данными с 1с8
zhurba писал(а):
1. почему $GLOBALS['LA']['shop_id'] возвращает 0? ??

у меня код
$shop_shops_id = to_int($GLOBALS['LA']['shop_id']);
работает корректно, т.е. какой магазин задашь в самом нижнем параметре узла стурктуры "Обмен с 1C" , то ID этого магазина и возвращает

проверь, очевидно у тебя этот параметр просто не задан, см. Структура сайта ->  Список узлов структуры -> Интернет-магазин -> редактируй Обмен с 1C (параметр Идентификатор магазина)
#
Re: обмен данными с 1с8
HostCMS, HostCMS,
Ура! Заработало! Спасибо за подсказки.

После инсталяции HostCMS, в настройках узла /shop/1c/ в параметре типовой "Обмен с 1С:Управление торговлей" - "Идентификатор магазина", как и положено, стоял "Демонстрационный магазин".
Но. $GLOBALS['LA']['shop_id'] возвращал 0.

(Понять в чем дело смог только тогда, когда модифицировал код 1С так, чтобы в протокол обмена выводились все сообщения от сервера. А из \lib\lib_36\lib_config_36.php стал выдавать в 1С через echo значения всех переменных...)

Проблема решилась так: в настройках узле /shop/1c/ выбрал другую типовую (Прайс), сохранил настройки узла, потом снова выбрал типовую "Обмен с 1С" и выставил "Демонстрационный магазин". Сохранил. После этого в папке \lib\lib_36\ - появился файлик lib_values_83.dat со значением shop_id. Вот тогда и зафурыкало...

а в файле \lib\lib_36\lib_config_36.php я убрал ненужный массив $array_of_data (заменил его просто переменной $data) и соответственно цикл по массиву. Загрузку файлов поместил в соответствующую ветку if.

И еще раз спасибо за помощь
Модератор
#
Re: обмен данными с 1с8
zhurba,
пожалуйста.
#
Re: обмен данными с 1с8
zhurba писал(а):
а в файле \lib\lib_36\lib_config_36.php я убрал ненужный массив $array_of_data (заменил его просто переменной $data) и соответственно цикл по массиву. Загрузку файлов поместил в соответствующую ветку if.

скопируй пожалуйста фрагменты кода что на что заменил

Поделюсь замеченным по ошибке выдаваемой в логе 1С (при загрузке данных из магазина в 1С):
"Номенклатура не найдена по уникальному идентификатору: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
это говорит о том что на сайте у импортируемого товара не задан параметр "Идентификатор товара CommerceML" (из подгруппы Экспорт/Импорт), т.е. при пустом значении каждый раз генерируется новый код , который ничему не соответствует, а если самостоятельно в это поле прописать любую последовательность символов, то ошибки высвечиваться не будет. Идентификация товаров из ИМ с номенклатурой из 1С при этом происходить по наименованию (по крайней мере у меня ... и где в 1С для товара задается CommerceML идентификатор пока найти не удалось, кто знает подскажите плиз)
#
Re: обмен данными с 1с8
У меня другая проблема: добился я нормальной аутентификации, но при загрузке ядро системы выдает следующую ошибку:

"22.10.2009 09:58:58","admin","Вход в систему управления","4","-","http://z122543.infobox.ru/shop/1c/?type=catalog&mode=file&filename=offers.xml","194.105.198.226"
"22.10.2009 09:58:58","admin","<strong>ЗАМЕЧАНИЕ:</strong> iconv() [<a href='function.iconv'>function.iconv</a>]: Detected an illegal character in input string в файле /home/www/z122543/htdocs/modules/Kernel/Kernel.class.php (строка 4587)
Стек вызовов:
Файл: /home/www/z122543/htdocs/modules/Kernel/Kernel.class.php, строка 4587,
Файл: /home/www/z122543/htdocs/lib/lib_36/lib_config_36.php, строка 125,
Файл: /home/www/z122543/htdocs/index.php, строка 840","2","-","http://z122543.infobox.ru/shop/1c/?type=catalog&mode=file&filename=offers.xml","194.105.198.226"


Глазками просмотрел выгружаемые файлы - вроде как все нормально, но загружается стабильно только группа и 6 товаров.
Авторизация