Вывод данных с СКЛ таблицы на сайт


#1

Подскажите пожалуйста, хотим вывести курс доллара на сайте в отдельном блоке.

Курс будем выгружать с 1С в новую таблицу СКЛ cacart_kursdol
Каким кодом или модулем можно вывести данные в блок?


#2

Какая структура таблицы?


#3

одна колонка в таблице с курсом, наименование колонки сделаем kurs_1C


#4

Там как минимум еще дата-время нужны, чтобы понимать с какого момента начал действовать данный курс.


#5

можно любые данные выгрузить с 1С вплоть до того кто установил новый курс…
вопрос как правильно вытащит эти данные в блок макета?


#6

Ну если костылем, то так (через HTML блок с поддержкой SMARTY)

{"SELECT kurs_1C FROM ?:kursdol"|db_get_field}


#7

Спасибо, вывод работает


#8

А не знаете, возможно ли воспользоваться не db_get_field, а db_get_fields?


#9

Можно, но результатом будет массив, который нужно будет прогонять через foreach
к слову, можно это всё присвоить переменной.

Но от себя добавлю, что лучше придерживаться модели MWC и разграничивать работу с базой и шаблоны представления. Можно создать новый блок через схему, указать в контенте выполняемую функцию и отображаемый шаблон. Бонусом добавится гибкое кеширование (пересобирать блок только если в этой конкретной таблице поменялись записи). В документации описан общий принцип, в коде стандартных модулей можно посмотреть примеры


#10

Большое спасибо, получилось! Понял что в целом так не стоит делать, но иногда бывает нужно в виде временного варианта на этапе проработки концепции что-то вывести. И собирать всё по правилам в 10 раз дольше, а так - попробовать, понять, намного быстрее… потом просто попросить уже разработчика сделать по-человечески. Не думал что так можно, а тут увидел и стало интересно и похоже очень удобно для прототипирования.

А не подскажите, возможно подставить в такой select в качестве условия запроса значение другой переменной smarty?

{$auth.user_id}
{$subscriptionsUser = "SELECT product_id, user_id FROM ?:product_subscriptions where user_id=1"|db_get_fields}
<ul>
{foreach from=$subscriptionsUser item=subs}
    <li>{$subs}</li>
{/foreach}
</ul>

Например вот, я знаю id пользователя и хочу вывести список его подписок на товары. В приложенном варианте я вывел их только для главного администратора магазина, а возможно ли подставить вместо 1 $auth.user_id?


#11
{$subscriptionsUser = "SELECT product_id, user_id FROM ?:product_subscriptions where user_id=?i"|db_get_fields:$auth.user_id}

так попробуй


#12

Создайте функцию в my_changes/func.php. Например, fn_my_changes_get_subscriptions();
В шаблоне вызовите {$items = fn_my_changes_get_subscriptions()}
внутри функции вся логика. Потом можно просто перенести вызов функции путь к шаблону в схему блоков


#13

О, работает, спасибо!

Ну, это уже близко к нормальному решению и дальше от быстрого прототипирования(что-то не очень удобно по всем этим папкам и кучам файлов ползать, кеши скидывать и т.д. Но большое спасибо!