Commerceml, обмен с 1С, проблема с файлом offers0_1

Быть может кто-нибудь сталкивался с такой ситуацией.
В файле offers0_1 1С присылает наличие и цены.

Так вот, когда в папке (1C_ТЕКУЩАЯ_ДАТА, на сайте) нет этого файла и он приходит в 1й раз, то этот файл имеет нормальную структуру

<?xml version="1.0" encoding="UTF-8"?>

<КоммерческаяИнформация …</КоммерческаяИнформация> конец файла.

Но при последующих выгрузках (в этот же день), новая выгрузка дописывается в конец файла и он приобретает вид:

<?xml version="1.0" encoding="UTF-8"?>

<КоммерческаяИнформация …
</КоммерческаяИнформация><?xml version="1.0" encoding="UTF-8"?>
<КоммерческаяИнформация …
</КоммерческаяИнформация>

Соответсвенно модуль его обработать не может.

Пока не могу выяснить где возникает проблема.
Или это модуль дописывает новый файл в конец существующего.
Или это 1с уже такой файл присылает.

Может есть какие-то идеи как проверить?

1 лайк

Добрый день, точно такая же боль :slight_smile: могу подсказать как я вылечил данную проблему.

Настроил выгрузку каждый час, и удаление файла по крону
find /var/files/1/exim/ ! -name log_commerceml.txt -mmin +40 -delete

1 лайк

Я нашел в чем причина.
Это совместный косяк цскарт и 1с.

В модуле цскарт функция createImportFile() может записывать присланное из 1с в двух режимах - w или a.
И выбор зависит от проверки существующего файла в функции xmlCheckValidate().

Не знаю зачем цскарт так сделали. Но видимо причины какие-то были.
Однако в какой-то ситуации это приводит к ошибке.
Если xmlCheckValidate() что-то не нравится в существующем файле.

В нашем случае особо доставляет то, что на два файла offers0_1, которые приходят на сайт из разных обменов, xmlCheckValidate реагирует по разному )

1 лайк

Это не лечение, это костыль )
Я другой костыль использую - в коде модуля заблокировал присвоение режима а. Это проще чем удалять файлы.

Костыль) согласен. Вы можете поделиться где и какой код закоментить, думаю люди будут благодарны.

Да собственно я все уже описал.
А обе эти функции в файле RusEximCommerceml.php.