На счет количества товаров я затупил. Можно еще попробовать в файле \bitrix\modules\iblock\classes\mysql\cml2.php поправить строчку while($data = zip_entry_read($entry, 102400)), увеличить шаг раз в 10. Вдруг поможет.
14.06.2011 10:30:30
В 1С нет RTF-подобного редактора, поэтому вряд ли что-то действительно удобное можно придумать на скорую руку. Максимум, что можно сделать по-быстрому, это предложить заказчику форматировать описания в каком-нибудь викитекст-формате, а при выгрузке поставить обработчик, который будет это парсить в html. Но в таком случае для просмотра результата форматирования придется делать/ждать выгрузку, то есть тоже никакого визивига.
|
|
|
01.06.2011 09:30:14
Не могу утверждать, так как этого не проверял и не очень сильно разбирался, но в классе CIBlockXMLFile имя временной таблицы идет отдельной переменной _table_name, которая может быть указана конструктору или задается по дефолту (как, например, в обычном компоненте импорта).
Так что в компоненте импорта нужно следующее. Во-первых, везде заместо CIBlockXMLFile::DropTemporaryTables() и прочих ...Tables() сначала инициализировать такой объект с нужным именем таблицы (про это я не подумал сначала), ну и использовать эти функции уже как функции объекта. Во-вторых, при вызове CIBlockCMLImport::Init() последним параметром указывать имя таблицы, внутри этой инициализации будет так же инициализироваться CIBlockXMLFile с тем же именем. |
|
|
01.06.2011 09:06:01
Я понимаю, что AddEventHandler() можно выполнять только по условию, но это самое условие на то, что идет обмен ведь будет проверяться на каждом хите. Но в целом Вы, Иван, правы. Пусть лучше будет так, как задумано разработчиками, то есть как-то так (пишу, чтобы кому-нибудь пригодилось) - засовываем следующий код в init.php и все.
|
|||
|
31.05.2011 16:28:22
Должно быть часто, особенно если выгрузки большие (а какие, если не секрет?). Да, тут косяк еще в том, что одна база может узурпировать соединение.
Но, насколько я знаю современный механизм выгрузки, для решения вопроса одновременности нужно всего лишь в коде компонента загрузки задействовать последний параметр функции CIBlockCMLImport::Init(), и вынести для порядку этот параметр в настройки компонента. |
|
|
31.05.2011 16:09:20
Тут IMHO остается только кастомизировать выгрузку - выносить выгрузку на отдельную страницу и добавлять обработчики на обновление элементов инфоблока. Примерно следующим образом (пишу - не проверяю). Создаете файл вроде /bitrix/my_1c_import.php, копируя содержимое /home/bitrix/www/bitrix/modules/catalog/admin/1c_import.php. Потом в этом файле перед подключением компонента загрузки каталога $APPLICATION->IncludeComponent("bitrix:catalog.import.1c", "", Array( ... ) вставляете такой обработчик:
Чтобы поля вообще никакие поля не менялись, можно отключить другие поля массива $arFields аналогично. Можно было бы возвращать в обработчике ложь, но это, наверное, приведет к ошибке выгрузки. После нужно настроить 1С-ку на выгрузку/загрузку с этим файлом, а не с оригинальным. |
|||
|