Александр Илюхин написал: Походу все сами решают эту проблему, как могут.
Именно так. Битрикс при указании файла картинки (даже просто тега, без передачи файла) будет создавать новый объект класса 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 запрос успешен, но получил не те данные. Тогда какие?
Евгений Архангельский написал: Какую роль несет сам товар, который охватывает предложения, и по какому принципу мне лучше выбрать главный товар (товар с предложенями).
На сайте в такой ситуации товар - это средство группировки предложений. Он не продается никогда, если у него есть предложения. Продаются предложения. Так что понятие "основной товар" на стороне сайта не применимо.
Цитата
Евгений Архангельский написал: Если кто-то делал что-то подобное, отпишитесь пожалуйста, если вы меня смогли понять.
Не приходилось. Я бы уговорил сделать нормальный CML на стороне 1С. Да и задача Ваша очень похожа на создание своего алгоритма выгрузки со стороны 1С с расчетом на то, что это примет сайт (т.е. чтобы не переделывать "приемную часть").
Идеал здесь - заставить владеть информацией о способах группировки того, кого положено - 1С. Вот на этой стороне понятие "основной товар" вполне может жить.
Radius17 написал: А при каких условиях появляется вкладка "Автоматизация процессов" ?
Очень похоже на новый движок магазина (более новая версия sale, проведена конвертация магазина). Отсюда и битва с автоматической установкой статуса. На старом движке я от такой проблеме не слышал.
Александр Панишев написал: учитывая что ВМ бесплатная - ничего удивительного, надо вообще сказать спасибо что она есть
Учитывая это, конторе вообще не надо тратить на это время. Все равно приходится настраивать все самому или использовать панели управления типа ISPManager и Plesk. И в панелях, кстати, вопросы со свежими PHP решены даже не CentOS 6.5.
Нужно как в браузере в простешем случае. Выбрал адрес с https, зашел. Подставлять сертификат нужно в тех случаях, когда сайт умеет авторизовывать по нему. Это не тот случай.
Денис Диденко написал: до какой то из версий платформы 8.3 1с не умела https
Посмотрел анонсы платформы. Есть анонс по пачке версий (8.3.1, 8.3.2, 8.3.3). Там сказано, что SSL теперь поддерживается "во всех механизмах платформы, использующих Интернет".
У меня (я не программист 1С) платформа 8.3.5.1383. Значит поддержка сертификатов и SSL со стороны платформы есть.
Документации по платформе я не нашел. Имеются ли другие способы работы с https до способа с явной работой с сертификатами - тоже не знаю. Что будет, если в объект содениения не передать объект с OpenSSL и все равно лезть по https - не представляю.
Было бы интересно знать как это сделано в обмене 5. И может ли это в принципе работать с сайтами по https.
С ошибкой в тесте конфигурации я разобрался. Нужно было обеспечить серверной переменной HTTPS верное значение. Используется двухуровневая архитектура (nginx+Apache+php_mod). Проблемы с авторизацией из 1С сохранились.
Включил принудительное использование https на стороне nginx. Интеграция упала с ошибкой:
Код
Авторизация не выполнена.
Не удалось установить соединение с сервером. Проверьте имя пользователя и пароль.
Загрузка заказов не выполнена.
Предполагаю, что 1С не умеет обращаться с переадресацией и нужно сразу в параметрах узла указать https. Все равно ошибка.
Хорошо, тестирую конфигурацию сайта. Получаю на тесте "HTTP авторизация" успех. Но есть проблема с тестом "Внутреннее перенаправление (функция LocalRedirect)":
Код
2015-Dec-18 10:36:32 Внутреннее перенаправление (функция LocalRedirect) (check_localredirect): Ok
50% done
Connection to ssl://www.example.com:443 Success
2015-Dec-18 10:36:33 Внутреннее перенаправление (функция LocalRedirect) (check_localredirect): Fail
Connection to www.example.com:80 Success
== Request ==
GET /bitrix/admin/site_checker.php?test_type=redirect_test&unique_id=b3c83f2b444454696c505c30e01caeb4&SERVER_PORT=80&HTTPS=&FCGI_ROLE=&HTTP_HOST=www.example.com&SERVER_PROTOCOL=HTTP%2F1.0&done=Y HTTP/1.1
Host: www.example.com
== Response ==
HTTP/1.1 301 Moved Permanently
Server: nginx/1.6.0
Date: Fri, 18 Dec 2015 07:36:33 GMT
Content-Type: text/html
Transfer-Encoding: chunked
Connection: keep-alive
Location: https://www.example.com:443/bitrix/admin/site_checker.php?test_type=redirect_test&unique_id=b3c83f2b444454696c505c30e01caeb4&SERVER_PORT=80&HTTPS=&FCGI_ROLE=&HTTP_HOST=www.example.com&SERVER_PROTOCOL=HTTP%2F1.0&done=Y
== Body ==
<ht ml>
<head><title>301 Moved Permanently</title></head>
<body bgcolor="white">
<center><h1>301 Moved Permanently</h1></center>
<hr><center>nginx/1.6.0</center>
</body>
</html>
==========
Ошибка! Не работает
Т.е. тест в курсе, что я зашел в админку по https, но упорно тестирует на 80 порту и нарывается на переадресацию. Потому и не проходит. Это вопрос отдельный, скорее всего. Сюда написал на всякий случай, для полноты картины.
Вопрос в теме. Нужно ли копать 1С, сайт, чтобы заставить работать интеграцию
Обмен 4, а потом 5 предлагает выгружать товары не все зараз, а пакетами. К примеру, всего 100 000 товаров. Можно разбить их на 1000 пакетов по 100 товаров и эти пакеты выгружать отдельно. Как на стороне сайта узнать, что 1С разбила весь каталог на 1000 пакетов и вот этот, текущий пакет уже последний? Или самый первый.
Для большей ясности - на каждый пакет уходит несколько XML файлов - метаданные товаров и предложений (два файла), товары и предложения (два файла), остатки (один файл) ... Все эти файлы описывают один пакет товаров с их предложениями и остатками по ним.
Посмотрел свежую версию компоненты bitrix:catalog.import.1c (catalog 15.5.0) - там ничего подобного не вижу, пакеты товаров обрабатываются независимо. Т.е. всю серию пакетов не отследить.
Ruar написал: Остается вопрос, как "скормить" эти привязки компоненту bitrix:search.title? А точнее, как, в каком формате передать эту привязку в функцию CSearchTitle:Search?
Без кастомизации компоненты никак. Я смотрел версию модуля 14.5.3. Также при условии использования встроенного поиска, а не Sphynx (иначе работает совершенно другой код).
Нужно поработать с переменной $exFILTER до вызова $obTitle->Search.
Добавлено: Без разницы какой движок поиска. Кастомизацию делать все равно и она одна и таже.
Георгий написал: 1.-й пункт занимает у нас коло 10-15 минут (время появления файлов выгрузки во временной директории)
2-Й и 3-Й не известно. Как рекомендуете это выяснить?
На стороне Битрикс можно только влезая в код обмена. И слава Богу, что только компоненты. Как может помочь лог 1С не знаю (я видел эти протоколы, но не прочувствовал пользы). Помимо кода Битрикс нужно еще настроить nginx на отдельный лог по адресу обмена (так намного удобнее). Вот эти два протокола помогут прояснить ситуацию (сколько времени требуется, было ли вообще обращение на сайт, кто не дождался ответа - 1С, nginx ...)
Юлия Бедросова написал: сотрудник заказчика - я бы вообще не стала доверять тому, что он говорит
Не так проблемна ситуация, это конструктивное взаимодействие. Не думаю, что мне откажут, если я захочу сам заглянуть в конфигурацию. Тем более, сначала она делалась на тестовой базе. Не налетели на болячку только потому, что не было репликации на две базы.
Цитата
Юлия Бедросова написал: тем более, если обмен немного кастомный
Суть кастомизаций мне известна, делалась ради работы сайта. Это множественность свойств, выгрузка дополнительных свойств в файл предложений. Признаться, без понятия могла ли такая кастомизация повлиять на обмен. Скорее разница в версиях самой конфигурации и той, для которой был сделан использованный модуль обмена.
Придется обращаться в поддержку, другого исхода не вижу.