Алексей Беспалов написал: А как товар будет с 1С синхронизирован если его вручную добавляют??? Заказ придет с сайта, но будет пустым, т.к. обмен не найдет нужного товара в 1С.
А, так вот в чём проблема... Всё, теперь я понял, где дорабатывать нужно. Не подскажите, как в типовом обмене реализована функция поиска товара? Через GUID?
Не понятно зачем аналоги на сайте, клиент заказывает товар, аналоги уже менеджер будет предлагать, когда нет нужного товара.
Ну или можно аналоги выгружать в отдельный инфоблок, да или в тот же и выводить по аналогии с Аксессуарами. Но это все на сайте придется руками настраивать.
Был случай, когда клиенту нужно было выводить из одного инфоблока товары с похожим составом. Выводились через доработанный catalog.top. Назвали это аналогами. Эти товары лежали рядом со своими аналогами в каталогах.
Констaнтин С. написал: 2. Могу ли я вручную скопировать на сайт эту папку и сделать обмен в БУС на стороне сайта?
Есть и такой метод. На сайте, где-нибудь в каталоге /upload, создаёте свой каталог, например, 1c_files. Туда по FTP помещаете результат выгрузки(xml и папка с картинками). Лучше с предварительной архивацией. На месте деархивируете. Затем переходите в панели управления БУС Контент\Инфоблоки\Импорт\XML. В поле "Файл для загрузки" ваш .xml.
Если всё же проблема не в скорости соединения сервера 1С с хостинг-сервером БУС, прироста в скорости точно не будет.
У вас при загрузке картинок не стоит какая-либо своя предобработка?
Алексей Беспалов написал: Вам же все рано придется хотя бы раз выгрузить товар на сайт. И новый выгружать. А так конечно можно не гонять товар туда сюда. Обмен заказами и товаром это всегда разные обмены и разный интервал запуска.
Товар уже есть на сайте. Его добавляет контент-менеджер на сайте. Клиент, в силу обстоятельств, отказался от настройки выгрузки товара. Но в случае с кассами, вероятно, иного выбора не будет. Всем спасибо.
Значит, самый оптимальный вариант - настроить печать через 1С? Тогда такой вопрос: можно ли настроить интеграцию таким образом, чтобы не загружать каталог товаров, а пользоваться только функцией выгрузки заказов? То есть товары создаются вручную, а заказы нужно обработать в 1С.
В последних 7 версиях модуля - появилась возможность использования 1 кассы. Но нужно немного дорабатывать типовой объект (Модуль управляемого(обычного для УТ 10.3) приложения). Тогда клиент, захвативший порт, будет печатать как розничные чеки, так и с сайта
Александр, это решение для сценария с интеграцией с 1С? (Ссылка)
Решение неоптимальное, потому как обновляет остатки по всем товарам. Как заплатка пойдёт. Если товаров до 20 000 при хорошем сервере занимает 2-4 минуты. По-хорошему нужно вытаскивать либо XML_ID из xml-файла импорта, путь к которому передаётся в $ABS_FILE_NAME, либо обработанные данные из таблицы b_xml_tree. Это для того, чтобы обновлять не все товары, а только те, по которым пришли остатки.
Добрый. Я повесил обработчик события на OnSuccessImport1C. В этом обработчике происходит пересчёт доступного количества из суммы на складах. Решение временное.
Нашёл нужный кусок кода. Вот он считает, что если в файле с изменением остатков нет общего количества товара, то взять за общее количество цифру из остатков на этом самом прилетевшем складе. Кусок кода в методе CIBlockCMLImport::ImportElementPrices. Смотрел здесь http://bxapi.ru/src/?module_id=iblock&name=CIBlockCMLImport::ImportElementPrices
Отдельное спасибо Долганину Антону за сервис Bitrix API Online.
Добавлю немного оффтопа в своей же теме. Не смог найти переменную $MAIN_MODULE_EVENTS, описанную в примечании на https://dev.1c-bitrix.ru/api_help/main/functions/module/addeventhandler.php Сказано, что переменная глобальная, но не сказано, где формируется. В $_GLOBAL она отсутствует на момент проверки в init.php
Эксперименты показали, что при выгрузке остатка со склада каким-то образом с помощью такой-то матери происходит пересчёт остатков. Если все склады сами (по отдельности каждый) выгружают остатки, то общий остаток (доступное количество), при отсутствии реквизита <Количество> у <Предложение>, устанавливается в количество товаров на последнем выгруженном складе.
P.S. Тема становится похожа на личный дневник экспериментов. Может кто хоть аналогичной проблемой поделится, уже не говоря про ответы на мои вопросы о системных механизмах...
1. Как рассчитывается общий остаток товара? Есть проблема: на складах остаток есть, но общий установлен в 0. Или общий остаток должен выгружаться отдельным реквизитом, а не рассчитываться? 2. Интеграция настроена на выгрузку остатков и цен по изменениям. То есть выгружаются только изменения, без удаления отсутствующих товаров в xml-файле выгрузки. Как в таком случае можно удалять некоторые товары при выгрузке?
В BF есть классы с методами для добавления элементов в инфоблок и торговый каталог. А есть ли методы для добавления коллекций элементов? Я столкнулся с проблемой создания нескольких десятков тысяч элементов. Добавляю их циклом с созданием элемента и товара через CIBlockElement::Add и CCatalogElement::Add соответственно. Такой же цикл есть по обновлению имеющихся товаров. В целом около 14 тысяч товаров. Добавление и обновление идут около 40 минут. Предварительно идёт проверка через CIBlockElement::GetList по пользовательскому параметру для поиска существующих элементов. Я понимаю, что такое решение не рационально, так как к базе обращается туча запросов. Существует ли нативная возможность добавить несколько элементов одной транзакцией?