Дмитрий Н написал: при совпадении "кодов заказов" битрикса все летит в тартарары! Как быть? Нужно сделать обмен заказами с двумя сайтами.
Искать пути для создания номеров сайтов, зависящих от сайта. Такая возможность со стороны Битрикс есть. Посмотрите в настройках модуля Интернет-магазин. Не уверен потребуется ли программирование, но сделать это точно можно.
Сергей Журавлев написал: удалось убедить в необходимости доработки.
Большое человеческое спасибо. Я знаю какие круги ада для этого нужно пройти.
Со стороны 1С программиста мне тоже в свое время убедить не удалось. Боюсь ошибиться, но для обмена достаточно просто не выгружать теги Картинка если они не менялись. (пустой тег низя - удалит к чертям). Пришлось городить огород для хранения картинок с фиксированным адресом. Доработка со стороны конторы решить давно уже гнойную проблему (как она надоела!).
Важная информация по модулям обмена, В этой теме будет выкладываться интересная и важная информация по модулям обмена с 1С:Предприятие. Просьба не флудить.
Анатолий Кирсанов написал: Почему вообще используются соответствия доставки в современной УТ (11-ой) если в ней есть подсистема "Управление доставкой" в подсистеме "Склад"?Программист 1С крайне недоволен из-за того, что решение для 10-й УТ притянуто за уши в 11-ю. Приходится использовать не штатный функционал 1С, а нечто сбоку, работающее с дополнительными сведениями документа ("Способ доставки" и "Метод доставки ИД").Программиста 1С я прекрасно понимаю. Сам также недоволен, когда, используя Битрикс, приходится писать что-то сбоку. Почему вообще это нужно делать в 1С то?
Тут проблема не в 1С, а в БУС. Там нужно выгружать доставки. Иначе они в БУС пропадут в отгрузках
С тем что документы реализации выгружать надо (иначе сайт считает, что их нет вовсе), с тем, что соответствия настраивать тоже надо никто не спорит. Видимо, некорректно сформулировал текст.
Претензия к тому, что требуется использовать два поля в дополнительных сведениях вместо данных, уже имеющихся в стандартном модуле "Склад/.Управление доставкой".
Были в конфигурации уже документы. И их море. И теперь возникла надобность в обмене заказами в обе стороны. А привязка то к службе доставки сайта не сохраняется. Поля в дополнительных сведениях не заполнены. А зачем их заполнять, если они уже есть в базе в стандартном месте?!
Александр Денисюк написал: Если из 1С не выгружается отгрузка, то на сайте она удалится. Если не настроено соответствие отгрузок, то на сайте она пропадет(или установится по умолчанию по настройке).
Почему вообще используются соответствия доставки в современной УТ (11-ой) если в ней есть подсистема "Управление доставкой" в подсистеме "Склад"? Программист 1С крайне недоволен из-за того, что решение для 10-й УТ притянуто за уши в 11-ю. Приходится использовать не штатный функционал 1С, а нечто сбоку, работающее с дополнительными сведениями документа ("Способ доставки" и "Метод доставки ИД").
Программиста 1С я прекрасно понимаю. Сам также недоволен, когда, используя Битрикс, приходится писать что-то сбоку. Почему вообще это нужно делать в 1С то?
Важная информация по модулям обмена, В этой теме будет выкладываться интересная и важная информация по модулям обмена с 1С:Предприятие. Просьба не флудить.
Анатолий Кирсанов написал: Судя по коду Битрикс, эти теги в заказе имеют смысл при отсутствии в контейнере документа отгрузки. Тогда срабатывает поиск значения по-умолчанию.
Отгрузка очищает идентификатор отправления?
Нет, все в порядке. Я собирал данные для программиста 1С. Поскольку на мне Битрикс, данные собирал в коде Битрикс.
Ничего не затирается, все хорошо. Заставил программиста выгрузить правильный реквизит в документе отгрузки.
Важная информация по модулям обмена, В этой теме будет выкладываться интересная и важная информация по модулям обмена с 1С:Предприятие. Просьба не флудить.
Важная информация по модулям обмена, В этой теме будет выкладываться интересная и важная информация по модулям обмена с 1С:Предприятие. Просьба не флудить.
Игорь Кобыща написал: итоге на стороне битрикса полный стандарт, на стороне 1с кастом, но это обычное дело.
Проблема в этом "обычном" деле. Не должно быть такого. Тем более для такой обыденности, как комментарии покупателя к заказу. Ну а выкрутиться можно всегда. Вопрос только в методах и ценах.
Артемий написал: Удалось ли кому-либо решить эту проблему?
Тут же писали. Простейший способ - модифицировать выгрузку на стороне 1С, чтобы она не отдавала теги, если картинка реально не изменена. Со стороны сайта решение более трудоемкое, заключается в поддержке дополнительных свойств товара/предложения с картинками, обновлением которых вы управляете сами.
Раиса Попова написал: неужели программисты Битрикс такие лентяи или в своей программе не разбираются?
Не в этом дело. У них есть пара пузатых и лысых начальников, указывающих своим перстом другое направление. Для незначительного ускорения можно создать еще одно обращение в поддержку. После получения ожидаемого ответа закрыть обращение с оценкой "Недоволен продуктом".
Файлы картинок при потере и "восстановлении" не выгружаются. Только теги Картинка.
Ситуация наблюдается не постоянно. Т.е. при обмене она может возникнуть, а может и нет. Затрагивает с десяток произвольных товаров. Отловить причину сложно. Если бы терялись все картинки или терялись бы по части, но всегда, давно бы разобрался.
Со стороны если наблюдать, то после завершения обмена картинка анонса и детальная картинка теряются. Потом, через некоторое время восстанавливаются. Я привязываю факт восстановления к обмену, но не уверен в этом. От обмена акт восстановления может не зависеть (просто протоколов навешал именно на обмен).
При отладке выясняется следующее.
Если файла картинки нет, то Битрикс ищет картинку среди уже привязанных к элементу по EXTERNAL_ID. Эти внешние коды вычисляются элементарно (md5 по содержимому тега Картинка). Факт поиск картинки по внешнему коду и список привязанных к элементу картинок я вижу. Я также вижу, что картинка находится (да, для отладки я влез в CheckFileByName).
Это значит, что она должна быть пересоздана (с получением нового ИД в таблице b_file).
И да, она пересоздается. Но с задержкой в несколько секунд от момента поиска. А привязка файла картинки к элементу инфоблока происходит с чудовищной задержкой в 50 минут. Естественно, со стороны кажется, что картинка пропала, а потом появилась ниоткуда.
Что я уже проверил
Битрикс виновен только в том, что в коде обмена (проверил исходники вплоть до версии iblock 16.5.2 не используют транзакции). Судя по логу (описал выше) картинки находятся, пересоздаются, привязываются.
Задержку пытаюсь объяснить поведением MySQL 5.1.73 на CentOS 6.8 (не MariaDB). Таблицы InnoDB (файлы и элементы инфоблока).
Ошибок в логе MySQL нет. В логе медленных запросов update на привязку файла к элементу не найден (искать легко - по ИД файла). Тестирование конфигурации Битрикс пройдено без единой ошибки (предупреждений тоже нет). Монитор производительности СУБД жалуется только на кеш открытых таблиц (12.81% при table_open_cache = 8192; статистика за 22 дня). Статуса 500 на скрипте обмена в момент «потери» и «самовосстановления» картинок не было (да и вообще они крайне редки - это Premature end of script header; в описанной ситуации между потерей и восстановлением этой болячки не было).
Признаться, впервые такое встречаю. Да, адреса меняются, но Маркет держит фотки в своем брюхе и от смены адреса не зависит. Зашел на первый же телевизор и убедился в этом.
Может конечно такое быть, что после получения товаров и до анализа картинок время проходит, не приходилось такое наблюдать.
Кто так решил? Да я уже написал. Любой разработчик и он прав.
Есть в настройках главного модуля галочка "Сохранять исходные имена загружаемых файлов". Я ее не решился снимать. Делал фиксированными только те ссылки, которые нужно. Да и не решит всех проблем эта галочка (влияет только на имя, не на путь).
wainer написал: как запретить пользователю менять email при оформления покупки
Программирование + настройки. Есть пользователь сайта, есть профиль покупателя. Вот с этим и нужно разбираться. И решение будет зависеть от версии компоненты оформления заказа и факта конвертации магазина. Сходу не скажешь, нужно просто сесть и сделать.
Цитата
wainer написал: Вся проблема в том что на синхронизации с 1с я поставил определения физ лиц по emailу)
Наверняка Вы не одиноки во вселенной. Правда, вот что интересно - генерация ИД покупателя не зависит от того, что оный вколотил в профиле покупателя (в форме заказа):
Код
if (IntVal($arOrder["USER_ID"]) > 0)
{
$dbUser = CUser::GetByID($arOrder["USER_ID"]);
if ($arUser = $dbUser->Fetch())
$arProp["USER"] = $arUser;
}
Вот и пример со "служебным пользователем" (используется на сильно кастомизированном сайте для заказов неавторизованных пользователей):
Цитата
<Ид>100#serviceuser#Пользователь Служебный</Ид>
Вот такой ИД контрагента используется ...
Вы сначала по email сопоставляете, а потом по ИД? Ну так и пусть. Есть примеры, когда сопоставляют по номеру телефона (надежнее, говорят).
В Битрикс на каждого пользователя сайта может приходиться с десяток профилей покупателя (это штатный функционал). Более того, он может делать заказы от имени физлица и юрлица. И даже больше - разных физлиц и юрлиц. Стоит ли с этим бороться? Почему внуку Васе нельзя сделать заказ от имени бабушки Марьи Петровны с ее домашним адресом, ее телефоном и липовым email (потому что сайт просит)? Бабушка получит и оплатит, это она клиент.
Александр Илюхин написал: Походу все сами решают эту проблему, как могут.
Именно так. Битрикс при указании файла картинки (даже просто тега, без передачи файла) будет создавать новый объект класса CFile. Генерация имен в этом классе случайная и так было сделано специально. Думаю, ради безопасности (не должно быть предсказуемых имен файлов при из загрузке на сайт).
Мне на одном проекте пришлось писать свой модуль для решения этой проблемы (устранять случайность генерации имен файлов). Картинки в стандартных свойствах и полях это не вылечит, а вот отдельные свойства можно заполнять так.
В моем случае я завел три свойства для хранения большой, средней и малой картинки. Ссылки из них используются для создания электронных писем с картинками в виде ссылок (а не вложений).
Цитата
Алексей написал: Не подскажете, сделали уже постоянные пути?
Юлия Земцова написал: у меня на сайте 2 разных инфоблока как раз настроено - один товары. второй - ТП
Эмиль Карапетян советует для товаров без предложений также создавать одно предложение (собственно, как у Вас было поначалу и с чем Вы успешно поборолись). Стандартные компоненты Битрикс справляются с такой ситуацией, как у Вас (есть товары с предложениями, а есть - без). Но если делать компоненты самому, то удобнее иметь однотипную структуру данных для всех случаев. Об этом разговор.
Александр написал: В то время как в 1С HTTPСоединиение - базовый элемент
На это Вам всегда будут отвечать, что проблема в 1С.
Документация на этот базовый элемент есть? Сам ни разу не нашел (похоже, она в принципе доступна только партнерам 1С).
Как пример, есть в Битрикс класс CIBlockElement. Если нужно добавить или изменить элемент инфоблока и посмотреть что из этого вышло, поможет член этого класса LAST_ERROR и системное исключение (все это о старом ядре Битрикс, всего-лишь для иллюстрации).
В случае проблем в работе с объектом этого класса всегда можно узнать что конкретно произошло (и это помимо различных протоколов, которые можно вести).
А с объектом 1С HTTPСоединиение как-то все уныло - он пустой и все. Так не бывает. Должны быть способы узнать что именно не так. Не найдете - не докажете ничего.
Александр написал: это больше вопросы к тех.поддержке сайта и хостингу, чем к простому 1Снику?
Странные у Вас вопросы ... Видимо, идет некая внутренняя борьба.
Определенно здесь больше работы на хостинге и в Битрикс. 1С-ник здесь нужен для запусков обмена и "рапортов" с его стороны.
Не знаю возможностей платформы 1С по отладке. Пустой объект Соединение - это детектив. Мои привычки к языкам программирования говорят о том, что переменные сами собой не исчезают. Может измениться только их состояние (это ведь наверняка COM). Может платформа использует неявное приведение типов к булеву ...
В общем, из написанного мной понятно что примерно думает "поддержка сайта" когда Вы им пишете о страшной проблеме. Здесь нужно глубоко залезать в объект Соединение и показывать внятно что там в нем пустого случилось. Без этого ситуация кажется внутренней проблемой 1С. На стороне сайта могут провести дежурную проверку (например выдать настройки по времени жизни сессии).
И еще ... Заметил уже по своей практике, что 1С-ник и Инет - это туго. И это несмотря на то, что сама платформа позволяет делать на 1С WEB-сервисы. Не исключено, что это портит отношения с поддержкой сайта.
Надо порыться на стороне сайта для начала. Очень долго - понятие растяжимое. Но это "долго" может оказаться больше максимального времени работы скрипта PHP (и сопутствующих таймаутов Apache, nginx, fastcgi). А если "очень-очень" - то и дольше времени жизни сессии PHP.
По тексту создается впечатление, что 1С начинает о чем-то долго думать, а когда лезет за продолжением на сайт, он не отвечает. Тогда это больше похоже на срок жизни сессии.
Лог на первом скриншоте потрясает своей подробностью (это привет Александр Денисюк). Там нет меток времени совсем. И непонятно сколько времени идет процесс. Диагностическое сообщение "Не удалось получить данные с сервера. Проверьте правильность адреса сервера, порт, имя пользователя и пароль, а также настройки подключения к Интернет" слишком общее. Нужна точность.
Наличие доступа к определенному узлу по TCP/IP проверить можно сразу как только вылезла ошибка. Бывали у меня такие ситуации, когда ни 1С, ни сайт ни причем, а препятствует работе шлюз (проделки админа ЛВС с демо версией, которая отказалась работать в определенное время).
Адрес хоста и прочее очевидно корректные, т.к. процесс был начат. Соответственно - не имеют смысла в этой ситуации.
"Не удалось получить". А что тогда удалось? Сокет хотя бы открыт?
С такой диагностикой разработчику 1С совершенно нечего сказать ни админу ЛВС, ни хостеру, ни разработчику сайта. Только "не работает".
К примеру, если моя догадка насчет срока жизни сессии верна, то не проходит авторизация на этом запросе к сайту. Тогда сеть есть, соединение есть, HTTP запрос успешен, но получил не те данные. Тогда какие?