Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
01 июл 2025, 23:42

Opencart + Echange 1C + Simple

Автор AIFrame, 11 сен 2015, 06:05

0 Пользователей и 1 гость просматривают эту тему.

AIFrame

Есть сайт, с которым настроена выгрузка номенклатуры и загрузка заказов.
Пользователи регистрируются через модуль simple, где им предлагается выбрать свой тип как "Физ.лицо" или как "Юр.лицо".
С Физ.лицами проблем нет, они создаются как контрагенты Физ.лица.
Проблема с юр.лицами. Для них поля Имя-Фамилия не являются основными, это просто контактная информация. При регистрации Юр.лицо указывает название компании (company), свой ИНН (tax_id) и КПП (fax).
При создании такого контрагента обработка ОбменССайтом все равно пихает его в группу физ.лиц и полностью игнорирует поля Юр.лица (Компания, ИНН, КПП).
В обработке есть
Функция ИдентифицироватьКонтрагентов(ДеревоДокументов)
   Для Каждого СтрокаДД Из ДеревоДокументов.Строки Цикл
Понимаю, что готовых решений не будет, посему вопрос издалека:
Как мне получить в лог список всех полей и их значения из ДеревоДокументов?

AIFrame

Раскопал следующее:
Вывод CML:
Функция РазобратьCML(СтрокаCML)
Сообщить("ТипУзла: " + ОбъектCML.ТипУзла + " ----- Имя: " + ОбъектCML.Имя + " ----- Значение: " + ОбъектCML.Значение);

Настройка полей для формирования xml:
/www/site.com/admin/model/tool/exchange1c.php
Сейчас попробую прописать туда нужные мне поля и обработать.
Добавлено: 11 сен 2015, 09:07


Получилось.
<Ид>7</Ид>
<Номер>7</Номер>
<Дата>2015-09-11</Дата>
<Время>06:52:47</Время>
<Валюта>RUR</Валюта>
<Курс>1</Курс>
<ХозОперация>Заказ товара</ХозОперация>
<Роль>Продавец</Роль>
<Сумма>5667.0000</Сумма>
<Комментарий></Комментарий>
<Контрагенты>
<Контрагент>
<Ид>9#admin@asd.com</Ид>
<Наименование>Name Lastname</Наименование>
<Роль>Покупатель</Роль>
<ПолноеНаименование>Name Lastname</ПолноеНаименование>
<Фамилия>Lastname</Фамилия>
<Имя>Name</Имя>
<Компания>ООО "Рога и Копыта"</Компания>
<ИНН>7723643863</ИНН>
<КПП>000000000</КПП>
<Тип>2</Тип>
<Адрес>
<Представление>УЛ МАЛЫШЕВА, Д 13, КОРП 2, Москва, 109263, Российская Федерация</Представление>
</Адрес>
<Контакты>
<Контакт>
<Тип>ТелефонРабочий</Тип>
<Значение>00022200</Значение>
</Контакт>
<Контакт>
<Тип>Почта</Тип>
<Значение>admin@asd.com</Значение>
</Контакт>
</Контакты>
</Контрагент>
</Контрагенты>

Соответствие полей:
$document['Документ' . $document_counter]['Контрагенты']['Контрагент'] = array(
'Ид'                 => $order['customer_id'] . '#' . $order['email']
,'Наименование'     => $order['payment_lastname'] . ' ' . $order['payment_firstname']
,'Роль'               => 'Покупатель'
,'ПолноеНаименование' => $order['payment_lastname'] . ' ' . $order['payment_firstname']
,'Фамилия'            => $order['payment_lastname']
,'Имя'           => $order['payment_firstname']
,'Компания'           => $order['payment_company']
,'ИНН'           => $order['payment_tax_id']
,'КПП'           => $order['fax']
,'Тип'           => $order['customer_group_id']
,'Адрес' => array(
'Представление' => $order['shipping_address_1'].', '.$order['shipping_city'].', '.$order['shipping_postcode'].', '.$order['shipping_country']
)
,'Контакты' => array(
'Контакт1' => array(
'Тип' => 'ТелефонРабочий'
,'Значение' => $order['telephone']
)
,'Контакт2' => array(
'Тип' => 'Почта'
,'Значение' => $order['email']
)
)
);

Имена полей смотреть в таблице %prefix%_order через PhpMyAdmin.

Осталось в обработке настроить использование новых полей в нужном месте и можно пить кофе.
Добавлено: 11 сен 2015, 11:39


В модуле обработки ОбменССайтом
Функция ОбработатьЗначениеЭлемента(Знач ИмяЭлемента, Знач ЗначениеЭлемента, ДеревоДокументов);
В ней указываем поля, которые были добавлены в выгрузку xml.
ИначеЕсли ИмяЭлемента = "Документ.Контрагенты.Контрагент.Компания" Тогда
ТекущаяСтрокаДерева.СтруктураДанныхКонтрагента.Вставить("НаименованиеПолное", ЗначениеЭлемента);
ТекущаяСтрокаДерева.СтруктураДанныхКонтрагента.Вставить("Наименование", ЗначениеЭлемента);
ТекущаяСтрокаДерева.СтруктураДанныхКонтрагента.Вставить("ЮрФизЛицо", Перечисления.ЮрФизЛицо.ЮрЛицо);

Собственно, вот и все. Сам спросил, сам ответил.

Теги:
Рейтинг@Mail.ru

Поиск