Синхронизируем боевую базу 1С Управление торговлей с сайтом. В ходе синхронизации возникает ошибка:
[Df_1C_Model_Cml2_Import_Data_Entity_ReferenceListPart_Item::getName] Результат метода забракован проверяющим «df_result_string». Сообщения проверяющего: Требуется строка, но вместо неё получена переменная типа «NULL».
Разбор логов "rm.1c.log" и "rm.log" показал, что ошибка возникает, когда модуль формирует справочник и пытается добавить свойство без значения, то возникает эта ошибка. Это видно из файла импорта import.xml. У первого значения справочника "Видео формат Xvid" нету значения.
<Свойство> <Ид>14196403-178e-11e3-a8aa-001517451451</Ид> <Наименование>Видео формат Xvid</Наименование> <ТипЗначений>Справочник</ТипЗначений> <ВариантыЗначений> <Справочник> <ИдЗначения>00000000-0000-0000-0000-000000000000</ИдЗначения> </Справочник> <Справочник> <ИдЗначения>14196404-178e-11e3-a8aa-001517451451</ИдЗначения> <Значение>-</Значение> </Справочник> <Справочник> <ИдЗначения>14196405-178e-11e3-a8aa-001517451451</ИдЗначения> <Значение>+</Значение> </Справочник> </ВариантыЗначений> <ДляТоваров>true</ДляТоваров> </Свойство>
Несмотря на то, что такая ситуация недопустима для Магенто (значение свойства без значения), ее успешно генерирует 1С.
Я предлагаю добавить проверку для такой ситуации, не прерывать синхронизацию и не пытаться добавлять "ошибочные" варианты справочника, для которых отсутствует узел Значение.