:D Я понял, почему у меня не фильтровало! Я забыл заполнить это поле. Слегка переработался ужо.
Спасибо за ответ, Денис!
Спасибо за ответ, Денис!
10.08.2010 11:43:25
Все, разобрался. Можно передавать нужные свойства в момент добавления в корзину с помощью:
И затем в шаблоне корзины их просто корректно вывести. Обошлось даже без изменения стандартного компонента корзины. |
|||
|
10.08.2010 10:53:14
Решил делать через изменение стандартного компонента. Скопировал его, в конце использую CIBlockElement::GetList для получения дополнительных свойств товаров, которые выбраны выше в корзине.
Вопросы: - каким образом определить в sale.basket.basket IBLOCK_ID, в котором исходные товары должны были находиться? - возможно ли передать нужные свойства товаров в момент добавления в корзину, чтобы не было нужны получать их из отдельных таблиц? Пока что думаю с помощью константы решить проблему с отсутствием IBLOCK_ID, хотя это далеко не лучшее решение. |
|
|
09.08.2010 07:34:05
Нашел проблему. В .left.menu.php в массиве была указана ссылка как на папку, а нужно напрямую на файл.
Было:
А правильно так:
|
|||||
|
06.08.2010 15:09:02
Что-то не пойму, откуда берется дублирующее выпадающее меню:
Есть структура: e-store/ e-store/xml_catalog/ Нужно, чтобы оба этих раздела отображали одинаковое дополнительное меню. В обе папки положен одинаковый .left.menu.php. Если перейти по адресу http://сайт/e-store/, то выпадающее лишнее меню исчезает. Но стоит выйти за его пределы (просто на сайт или в другие разделы) - снова появляется. Как убрать дубликат в главном меню, но при этом выводить левое меню? |
|
|
06.08.2010 14:40:01
Дмитрий Козлов, спасибо, я уже разобрался
|
|
|
06.08.2010 13:57:52
Используется bitrix:catalog, конкретнее шаблон catalog.element.
Выборка сделана с параметрами, указанными ниже. Вопрос в следующем: как сделать, чтобы пользователи, состоящие в определённых группах, видели только свои типы цен? В панели управления (Рабочий стол / Магазин / Торговый каталог / Типы цен) указал ограниченные привилегии: - Группы пользователей, имеющие права на просмотр этого типа цен - Группы пользователей, имеющие права на покупку по этому типу цен Но не смотря на это, пользователь состоящий в группе "Зарегистрированные пользователи" видит все цены, выведенные в шаблоне catalog.element. Я вижу решение методом "костылей" в том, чтобы до подключения компонента "bitrix:catalog" проверить, в какой группе состоит пользователь, и в зависимости от результата указывать параметр "PRICE_CODE". Но будет ли при этом правильно работать заказ товара? Тем более в интеграции с 1С. Вот код подключения каталога:
P.S.: Смотрите |
|||
|
06.08.2010 13:39:16
Неприятная мелкая ошибка, которая появляется, если клиент использует типы цен с пробелами в названиях.
Проблема тянется из 1С, где разрешено ввести элемент вида " Цена без НДС " вместо того, чтобы преобразовать в "Цена без НДС". В результате в catalog.element не срабатывает настройка выборки "Цены: Тип цены".
Решение: bitrix/modules/iblock/classes/general/comp_pricetools.php Строка 22 (найти):
Исправление (заменить):
Вопрос к экспертам: как мне исправить эту ошибку, чтобы при обновлении Bitrix снова не перекрылось это? |
|||||||
|
03.08.2010 10:03:43
Я даже устанавливал специально повышенный приоритет всем процессам, связанным с выгрузкой (httpd, mysql, 1c, ...). Дело не в них. Просто кодеры из 1С-Битрикс перемудрили с механизмами и где-то идёт сбой, из-за чего таблица b_xml_tree раз за разом обнуляется и процесс входит в вечный цикл. Перенёс сейчас всё это дело на другой компьютер, чтобы частями отлаживать процесс выгрузки. Вероятнее всего, что нужно периодическую выгрузку делать не полную, а также - частями (по группам товаров), чтобы снизить нагрузку на сервер и уменьшить вероятность глюков.
Дополнительно осложняет работу тот факт, что "Файлов: 22 413; папок: 9 542" — это не шутки. Полная распаковка системы занимает сама по себе до 4х часов времени. Плюс обнаружилось, что в полном бекапе *.tar.gz ещё и не все файлы оказались. |
|
|
01.08.2010 23:10:36
22:00. Синхронизация так и не была завершена. Ну а мы продолжаем наши изыскания.
Представляем широкому вниманию таблицу b_xml_tree. Структура таблицы: ID int(11) PARENT_ID int(11) LEFT_MARGIN int(11) RIGHT_MARGIN int(11) DEPTH_LEVEL int(11) NAME varchar(255) VALUE text ATTRIBUTES text Пример содержания: ID PARENT_ID LEFT_MARGIN RIGHT_MARGIN DEPTH_LEVEL NAME VALUE ATTRIBUTES 136807 136803 273607 273608 6 Валюта грн NULL 136806 136803 273605 273606 6 ЦенаЗаЕдиницу 1,47 NULL 136805 136803 273603 273604 6 ИдТипаЦены a9d725... NULL 136804 136803 273601 273602 6 Представление 1,47 грн. за шт NULL И так - под два миллиона записей. Два миллиона (!) раз повторять тип переменной, записывая его кириллическими (!) символами в поле типа varchar с резервом в 255 символов! Где бы найти хорошую метлу, чтобы изгнать беса, который придумал ЭТО?!? Как это можно допускать вообще в программировании? И где? В компании 1С! (дальше отборный мат) Нужно занести этот метод в учебники, как пример самого нереально-извращённого способа решения поставленной задачи обмена. P.S.: С 6:00 до 22:00 за сегодня, |
|
|
01.08.2010 21:35:57
Попытка номер два.
Выключаю проактивную защиту. На локальном компе выключаю интернет, файервол, весь лишний софт. Настраиваю MySQL согласно инструкциям из справки и из форумов по оптимизации MySQL. Перевожу все таблицы в InnoDB. Включаю параметр define("MYSQL_TABLE_TYPE", "InnoDB"). my.cnf:
Устанавливаю ZendOptimizer. Перезапускаю сервер. Стартую выгрузку в 15:00. 1С сообщает: - Выгружено товаров: 6153 - Выгружено картинок: 2332 - Выгружено файлов: 51 - Выгружено предложений: 12891 На "Временные таблицы созданы" как всегда уходит в глубокий штопор. В процессе наблюдаю за таблицей b_xml_tree. Она бесконечно-изменяется, каждую секунду прибавляется по 1000-2000 записей. Идентификатор ID растёт, вырастает до значений (внимание) выше 1700000 — почти два миллиона записей Затем обнуляется и процесс повторяется. За несколько часов выгружается "Основной каталог товаров" (не знаю, полностью ли). "Пакет предложений" так и не меняется. Сейчас 20:20. Выгрузка всё продолжается и конца не видно. b_xml_tree выростает / обнуляется / выростает / обнуляется и так бесконечно. Это какой-то идиотизм. У меня нет ни одного разумного довода в пользу системы, которая на 12891 + 6153 записей плодит таблицу с миллионными количествами строк и при этом ещё и неоднократно. Объясните мне: это полный коллапс мышления программистов, создававших выгрузку или всё-таки что-то где-то волшебным образом нужно настроить? Пошел шестой час выгрузки шести тысяч товаров! Всё больше склоняюсь к мысли, что нужно написать собственный механизм выгрузки, скооперировавшись с 1с-никами из офиса. Скорость работы MySQL: 1000-2000 запросов в секунду. На каждый товар, допустим, выделяется по 3 строки в разных таблицах. Плюс у каждого товара есть как минимум один дубликат (ну не бред ли?) — это его "пакет предложений". Вот алгоритм, рождённый "от балды": 1. 1С соединяется с сервером и передаёт полную выгрузку товаров в виде чистых SQL-запросов (а не хронического дибилизма в XML). Также передаёт простенький конфиг, в котором описана структура (вот для этого, блин, существует XML) переданных данных. 2. Сервер Битрикс сравнивает структуру, переданную от 1С со своей структурой объектов - и если не совпадает, сообщает об этом и прерывает синхронизацию, либо добавляет / игнорирует недостающие поля. 3. Сервер читает конфиг, создаёт временные таблицы согласно переданной структуре (с точными характеристиками полей). 4. Затем импортирует SQL-файл. 12891 + 6153 = 19 044 / 1000 запросов в секунду = пару минут времени максимум даже на слабых машинах. 5. Пробегаем SELECT-ом по временной таблице, выбираем связку товаров id=>last_upd_time. То же по реальным товарам. Определяем те, которые не сходятся (не существуют на сайте, либо обновлены). Тут у нас уходит, допустим, до пяти минут. 6. Добавляем новые, обновляем старые (если это выгрузка на пустую базу, то это ещё пару минут). На лету перебиваем ссылки на вложения / графику, которая была передана с 1С. 7. То же проделываем с дополнительными характеристиками "пакета предложений". Плюс 5-10 минут предел. 8. Синхронизируем заказы, конец. Если пройдёт 30 минут - я буду удивлён. Одно но: нужно перелопатить всю структуру данных Битрикс, чтобы понять где именно, как и чем связаны товары из b_iblock_element с другими таблицами. А это могут знать досконально только разработчики Битрикс. Если знают, конечно... |
|||
|
01.08.2010 13:26:30
Поддерживаю. Я php-программист со стажем. Подобная "синхронизация" у меня вызывает полный шок. Каталог из ~10000 товаров, выгружаю с нуля, чтобы протестировать почему идут глюки при синхронизации. Выгрузку начал утром, в 6 часов. Сейчас 12 часов дня. Локальный компьютер, никаких сетей / интернетов. Свободно 1,5 гига памяти, занято столько же. Загрузка процессора практически на нуле. Можно параллельно 3D-графику рендерить - ничего не изменится. Intel Core2Duo 2GHz. Наибольшую загрузку показывает диск C:\, при том, что MySQL и веб-сервер расположены на диске D:\.
Мне вот даже теоретически интересно — ЧТО можно делать с шести утра с несчастными 10000 записей? 1С тупо висит, последнее сообщение "создание временных таблиц завершено". Сейчас черный квадрат (после скринсейвера). Никаких намёков на состояние нет. И при этом всём выгрузка ещё и безбожно глючная. |
|
|
06.07.2009 15:00:22
Добрый день.
Есть ли где-то видео-руководство по созданию нового портала? От чтения "размыленной" документации уже в глазах рябит (тесты вообще порой поражают фантазией). У большинства разработчиков в начале действий - единственная мысль: покажите как оно работает. Как _быстро_ создать новый сайт, натянуть на него свой дизайн и только потом уже возникает желание где-то ковырнуть, где-то разобраться с механизмом действий. Я уже прочел несколько мануалов, но до сих пор не получилось сделать собственный шаблон сайта. Всё как-то криво, тонны подгружаемых css, js и т.д. Как по мне, то остро не хватает руководства из серии "быстрый старт". Разумеется, фразы типа "запустите инсталлятор - и вуаля, сайт готов" - сразу в урну. Это не сайты, это клоноклепательство. Где можно найти "сухую" документацию, сообщающую о назначениях всех папок, скриптов стилей и так далее? Базовый сайт, который мне нужен, содержит всего-лишь раздел многоуровневой документации (где по сути - вся нужная информация), раздел новостей, пару "маркетинговых" страниц и главную страницу, на которой "подтягиваются" в виде ul-списков последние статьи и новости. Все остальное - вопрос оформления. Как на Битриксе это реализовать не теряя месяц блужданий по мануалам? Спасибо. P.S.: Нашел |
|
|