В максимальной версии есть мультифилиальность и можно вверху сделать выбор магазина вместо города.
http://mega.readyscript.ru/

Похожим образом на вордпрессе цены обновляют smile и товары загружают. Там толком механизмов встроенных нет.

Я не знаю как там реализовано, но для моментальной загрузки большого массива данных во временную таблицу - это самый быстрый вариант.
Загрузка массива происходит мгновенно, в отличии от парсинга csv файла штатными средствами PHP. А потом переносите данные в рабочие таблице как хотите, но ничего быстрее, чем сделать это парой SQL запросов - нет.

Реального времени - это при загрузке страницы идёт куда-то запрос, где данные актуальные.

Топикстартер вверху пишет, что надо обновлять цены и остатки и при просмотре каталога товаров, а не только 1 товара.
А как быть при использовании фильтрации и т.д.? Делать постоянно запросы для каждого товара к внешней системе? А если там что то с серваком будет или еще какие то задержки, то тайм аута запроса будем ждать? 
Ну пусть интервал 5 минут, а 1 минута. Роли не играет, остатки товаров не успевают так быстро поменяться в учетной системе.  И 15 минут хватает. Я сужу по статистике сайта для оптовиков, где в день несколько сотен заказов и 10 000 товаров. Проблем не было.

Явно у них внутри какой-то динозавр типа оракла всё крутит и ничего умнее придумать не смогли.

Oracle скорее железный человек, который все может) Система спокойно переваривает сотни гигабайт данных. MySQL и PostgreSQL такого не снилось.

Это ещё почему? Ограничение по айпи на уровне mysql и чем-то типа iptables закрыт порт для всех, кому не положено.

Потому что взломав сайт можно получить доступ к базе, что не есть хорошо для безопасности.
Я до создания сайтов на RS (спасибо Набиуллина) занимался Oracle, АБС Банк XXI век и интеграцией с процессингом пластиковых карт.  Если бы я дал доступ к базе извне, меня бы уволили, может бы и дело завели. Как минимум можно за DDOS-ить  запросами к базе.

Хотите пример подобного велосипеда, где данные через джонсик прилетают на страницу? И там не только цены, там весь каталог прилетает.
https://rs24.ru/catalog.htm

Это совсем не то, о чем пишет ТС.  Весь фронтэнд построен на Vanilla JS, они просто список товаров получают со своего  же сайта, а не со сторонних серверов. Примерно так же, как RS при фильтрации каталога товаров, только интерфейс на стороне клиента строится, а не прилетает в готовом виде.

Самый яркий пример использования сторонних сервисов - сайты с бронированием.В особенности агрегаторы.  Там видно, с какими задержками обновляются данные при использовании запросов в различные сервисы

Ну или по крону связываться с внешней БД и порциями затягивать остатки. Тоже как вариант.
Но я бы на месте администратора системы запретил прямой доступ к базе

Независимо от выбора движка онлайн синхронизацию в разумные сроки выполнить не получится. Время открытия страницы - один из основных факторов, влияющих на юзабили сайта.

Для каталога товаров в 10 000 позиций я делал выгрузку в csv файл каждый 5 минут, затягивал его в таблицу средствами Mysql LOAD DATA INFILE (это встроенный механизм MySQL для загрузки больших объемов данных.). Затем скриптом обновлял остатки и цены. Этот метод работает молниеносно.  Временная таблица создается в доли секунды.
В моем случае скрипт загрузки вызывался внешней системой, но можно и cron у RS использовать.
Можно хоть раз в минуту выгружать. Фактически остатки и цены будут синхронизированы в режиме реального времени.

Спасибо за ответ! А тоже самое для фронтэнда возможно реализовать? Для построения решений, аналогичных моему модулю с оповещениями о товаре в корзине

В списке изменений увидел "Добавлена возможность организации COMET сервера"
Можете подробнее про данную возможность рассказать?

Когда предыдущая версия 1с выгружала 1 комплектацию как

 <Предложения>
            <Предложение>
                <Ид>6c1c6bf6-ea03-11e7-8109-00155d000e0a</Ид>
                <Артикул/>
                <Наименование>KAL Coenzyme Q10 30мг 90таб </Наименование>
                <БазоваяЕдиница Код="796 " НаименованиеПолное="Штука" МеждународноеСокращение="PCE">
                    <Пересчет>
                        <Единица>796</Единица>
                        <Коэффициент>1</Коэффициент>
                    </Пересчет>
                </БазоваяЕдиница>
                <Цены>
                    <Цена>

было все ок с товарами.
Как только 1с обновили, и стало выгружаться

<Предложения>
            <Предложение>
                <Ид>6c1c6bf6-ea03-11e7-8109-00155d000e0a#8e6fad08-ea01-11e7-8109-00155d000e0a</Ид>

, и т отоже с 0 ценой товар с первой выгрузки.

Т.е. было еще товарное предложение (в терминах 1с) с ид <Ид>6c1c6bf6-ea03-11e7-8109-00155d000e0a</Ид> , а теперь сразу <Ид>6c1c6bf6-ea03-11e7-8109-00155d000e0a#8e6fad08-ea01-11e7-8109-00155d000e0a</Ид>[

https://a.d-cd.net/874cd26s-480.jpg
Вот идеальное решение)

фобия перпендикулярных линий?

210

(25 ответов, оставленных в Вопросы по Маркетплейсу)

как разработчик полностью поддерживаю)
Подписка на обновления должна покупать отдельно на модули. Получается, что разработка основной системы идет и оплачивается, а модули на бесконечной поддержке

211

(11 ответов, оставленных в Вопросы по разработке модулей и API системы)

Код для темы "детская",  поэтому в современной не будет работать.
По меньшей мере надо добавить классы  "metrika_{название события}" в нужные элементы.

ураааааааааааааааааааааааааааааааааааааа

Вот только тестирую интеграцию 3-й версии RS c новой 1с и такая же петрушка на новых товарах. Первая загрузки и у первой комплектации цена = 0

214

(25 ответов, оставленных в Вопросы по Маркетплейсу)

В последнее время вижу только отрицательные отзывы в марктеплейсе.
Пользователи модулей пытаются связаться с разработчиком или сразу в отзыве сливают негатив?

215

(6 ответов, оставленных в Вопросы по работе с системой)

По мне, так удобства любого интерфейса заканчиваются на первых несколько сотнях элементах дерева или списка, далее надо программно делать.
В 1с, кстати, как работа с 10000 категорий обстоит?

В любом случае, подвижки в этому направлении есть.
ps минусы не я поставил

217

(22 ответов, оставленных в Вопросы по созданию тем оформления)

http://forum.readyscript.ru/post/9776/#p9776
ответил тут

218

(22 ответов, оставленных в Вопросы по созданию тем оформления)

Каждый  готовый шаблон или самописный проблему адаптивного меню решает по-своему. Кто то делает 2 разных меню, а кто-то использует 1 меню и меняет ему версту в зависимости от разрешения.

219

(4 ответов, оставленных в Вопросы по созданию тем оформления)

Если делаете верстку без конструктора, то в соответствующих местах делаете вставку moduleinsert с дополнительным параметром indexTemplate, где указан уже другой шаблон, и root - идентификатор корневого пункта меню.

  {moduleinsert name="\Menu\Controller\Block\Menu" indexTemplate='blocks/menu/foot_menu.tpl' root='0'} 

templates\fashion  - тут тема полностью так построена, можно подглядывать.

220

(22 ответов, оставленных в Вопросы по созданию тем оформления)

Можно 2 циклами вывести. 1 меню для обычного отображения, 2 меню для мобильных. Но я не знаю на основе какого шаблона делаете меню, может достаточно 1 цикла

https://readyscript.ru/text-blog/gotovi … cript-4-1/

222

(22 ответов, оставленных в Вопросы по созданию тем оформления)

Верно вот так

{moduleinsert name="\Catalog\Controller\Block\BrandList"}

Просто в папке \Catalog\Controller\Block смотрите какие есть контроллеры блоков.

223

(22 ответов, оставленных в Вопросы по созданию тем оформления)

Чтобы посмотреть, какие поля есть у объекта,  имея только блокнот (опускаю использование IDE)
Смотрим сам объект \modules\banners\model\orm\banner.inc.php :

......
function _init()
    {        
        parent::_init()->append(array(
                'site_id' => new Type\CurrentSite(),
                'title' => new Type\Varchar(array(
                    'description' => t('Название баннера')
                )),
                'file' => new Type\File(array(
                    'description' => t('Баннер'),
                    'storage' => array(\Setup::$ROOT, \Setup::$FOLDER . static::$src_folder),
                    'template' => '%banners%/form/banner/file.tpl'
                )),
                'use_original_file' => new Type\Integer(array(
                    'description' => t('Использовать оригинал файла для вставки'),
                    'checkboxView' => array(1, 0)
                )),
                'link' => new Type\Varchar(array(
                    'description' => t('Ссылка')
                )),
                'targetblank' => new Type\Integer(array(
                    'description' => t('Открывать ссылку в новом окне'),
                    'checkboxView' => array(1, 0)
                )),
                'info' => new Type\Text(array(
                    'description' => t('Дополнительная информация')
                )),
                'public' => new Type\Integer(array(
                    'maxLength' => 1,
                    'description' => t('Публичный'),
                    'checkboxView' => array(1, 0)
                )),
                'xzone' => new Type\ArrayList(array(
                    'description' => t('Связанные зоны (удерживая CTRL можно выбирать несколько зон)'),
                    'list' => array(array('\Banners\Model\ZoneApi', 'staticAdminSelectList')),
                    'attr' => array(array(
                        'size' => 10,
                        'multiple' => 'multiple'
                    ))
                )),
                'weight' => new Type\Integer(array(
                    'description' => t('Вес от 1 до 100'),
                    'default' => 100,
                    'hint' => t('Чем больше вес, тем больше вероятность того, что баннер будет показан в случае конкуренции')
                )),
            t('Расписание'),
                'use_schedule' => new Type\Varchar(array(
                    'description' => t('Использовать показ по расписанию?'),
                    'checkboxview' => array(1, 0),
                    'default' => 0,
                    'checker' => array(array('\Banners\Model\Orm\Banner', 'staticUseScheduleCheck')),
                    'template' => '%banners%/form/banner/use_schedule.tpl'
                )),
                'date_start' => new Type\Datetime(array(
                    'description' => t('Дата начала показа'),
                    'visible' => false,
                )),
                'date_end' => new Type\Datetime(array(
                    'description' => t('Дата окончания показа'),
                    'visible' => false,
                ))
        ));
    }

Соответственно,

 {if $banner.info}

выведет дополнительную информацию. И да, можно в это поле и html вставлять. Возможно надо обработать функцией html_entity_decode 

{$banner.info|html_entity_decode}

224

(22 ответов, оставленных в Вопросы по созданию тем оформления)

Если не нужен, удалите. 5 раз он не подключится

225

(22 ответов, оставленных в Вопросы по созданию тем оформления)

в блок передаются данные из контроллера блока.
Т.е после вызова moduleinsert  и передачи ему различных параметров, контроллер передает в шаблон tpl переменные шаблона. В исходнике slider.tpl из папки view самого модуля banners видно какие переменные передаются.

{addjs file="{$mod_js}jquery.photoslider.js" basepath="root"}
{if $zone}
{assign var=banners value=$zone->getBanners()}
<div class="bannerSlider">
    <ul class="banners">
        {foreach from=$banners item=banner}
        <li class="item {if $banner@first} act{/if}" {$banner->getDebugAttributes()}>
            <a {if $banner.link}href="{$banner.link}"{/if} {if $banner.targetblank}target="_blank"{/if}><img src="{$banner->getBannerUrl($zone.width, $zone.height, 'axy')}" alt="{$banner.title}"></a>
        </li>
        {/foreach}
    </ul>
    <div class="pages">
    {foreach from=$banners item=banner}
        <a href="#" class="{if $banner@first}act{/if}"></a>
    {/foreach}
    </div>
</div>
{/if}

Плюс, в в руководстве есть информация, как посмотреть переданные в блок переменные визуально. Просто мышкой наводите и видно.  https://readyscript.ru/dev-manual/dev_t … ogrid_tpls  <-тут чуть ниже как включить режим отладки