Доброго здоровья! Решил поделиться простейшим примером (неоптимальным, не очень-то и правильным, но зато работающим) выгрузки 1С на сайт, вместе с готовым скриптом.
Регистрируетесь на хостинге. Если он вам даст прямой доступ к базе данных mysql - будет проще. Если нет - сделаете туннель через putty. Затем в личном кабинете берете данные для доступа к базе (в моем случае адрес - доменное имя, в вашем может быть и localhost, если подключение через туннель).
В обработке выбираете вид выгружаемой цены. В итоге получится результат "Наименование номенклатуры / кол. штук / цена руб."
Можно в модуле обработки поставить нужные данные, подключить ее через пользовательский режим и выполнять ее регламентным заданием.
Скрипт взят отсюда https://kylaksizov.ru/51-zhivoy-poisk-ajax-php.html
Для работы необходим https://dev.mysql.com/get/Downloads/Connector-ODBC/8.0/mysql-connector-odbc-8.0.17-win32.msi
Конструктивная критика приветствуется, собственно в том числе и ради нее делаю публикацию)
Тестировалось на Рознице 2.2.12.30 и на платформе 8.3.13.1865. Думаю работать будет на огромном количестве конфигураций и версий платформ. Работает не очень-то быстро, но я не знаток mysql, да и в 1С я не так давно.
&НаКлиенте
Функция ПодключитьсяКРабочемуСайту()
Connection = Новый COMОбъект("ADODB.Connection");
Если Connection.State = 0 // 0 - adStateClosed
Тогда
SRV = Объект.АдресСервераMysql; //адрес сервера MySQL
DB = Объект.ИмяБазыMysql; //имя базы MySQL
UID = Объект.ИмяПользователяMysql; //имя пользователя MySQL
PWD = Объект.ПарольПользователяMysql; //пароль пользователя MySQL
PORT = "3306";//порт сервера MySQL, например 3306
cstr = "DRIVER={MySQL ODBC 8.0 Unicode Driver};
|SERVER=" + SRV + ";UID=" + UID + ";
|PASSWORD=" + PWD + ";DATABASE=" + DB + ";PORT=" + PORT + ";";
Попытка
Connection.Open (cstr);
Исключение
Connection = Неопределено;
Сообщить(ОписаниеОшибки());
КонецПопытки;
КонецЕсли;
Возврат Connection;
КонецФункции // ПодключитьсяКСайту()
&НаКлиенте
Процедура УдалитьВсе()
Connection = ПодключитьсяКРабочемуСайту();
Попытка
Connection.Execute("TRUNCATE TABLE `search`");
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
Connection.Close();
КонецПроцедуры
&НаКлиенте
Процедура ВыполнитьЗагрузку()
МассивНаСайт = СформироватьОтправляемыеДанные();
Connection = ПодключитьсяКРабочемуСайту();
Для Каждого ЭлементМассива из МассивНаСайт Цикл
Попытка
Connection.Execute("INSERT INTO `search` SET `name` ="+""""+ЭлементМассива+"""");
Исключение
Продолжить;;
КонецПопытки;
КонецЦикла;
Connection.Close();
КонецПроцедуры
&НаСервере
Функция СформироватьОтправляемыеДанные()
МассивНаСайт = Новый Массив;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура,
| ЕСТЬNULL(ТоварыНаСкладахОстатки.КоличествоОстаток, 0) КАК Количество,
| ЦеныНоменклатурыСрезПоследних.Цена КАК Цена,
| ТоварыНаСкладахОстатки.Номенклатура.Представление КАК НоменклатураПредставление
|ИЗ
| РегистрНакопления.ТоварыНаСкладах.Остатки(, ) КАК ТоварыНаСкладахОстатки
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ВидЦены = &ВидЦены) КАК ЦеныНоменклатурыСрезПоследних
| ПО ТоварыНаСкладахОстатки.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
|ГДЕ
| ТоварыНаСкладахОстатки.КоличествоОстаток > 0
| И ЦеныНоменклатурыСрезПоследних.Цена > 0
|
|УПОРЯДОЧИТЬ ПО
| Номенклатура
|АВТОУПОРЯДОЧИВАНИЕ";
Запрос.УстановитьПараметр("ВидЦены", Объект.ВидЦены);
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
СтрокаНаСайт = Выборка.НоменклатураПредставление + " / " + Выборка.Количество + " шт. / " +Выборка.Цена + " руб.";
МассивНаСайт.Добавить(СтрокаНаСайт);
КонецЦикла;
Возврат МассивНаСайт;
КонецФункции
&НаКлиенте
Процедура ОтправитьНаСайт(Команда)
УдалитьВсе();
ВыполнитьЗагрузку();
КонецПроцедуры
Спасибо за внимание! ))