А вопросы у меня следующие?
1. Что делать с этой тарабарщиной? Как ее превратить в SQL таблицы и запросы?
PS
1. В мои задачи не входит импортировать данные с 1С в ВиртуалМаркет. В случае если я получу путем каких либо действий SQL, дальше я уже все сделаю как надо. Опять же, ни каких продаж с сайте не предполагается. Требуется сделать каталог "Витрину" с возможностью предварительного заказа товаров путем оформления эл. письма - заказа, а это значит что обратной связи ни какой не будет.
2. Если существуют какие то модули, я готов их приобрести. Номер моей ICQ 349263067. e-mail: v.volovikov@yandex.ru
3. Я также слышал про ODBC. Некий универсальный драйвер который позволяет настроить обмен данными между разными базами. Если 1С подключить к ODBC, я получу на выходе SQL запросы? Если да, то, возможно всезнающий ALL, направит меня туда, где описан механизм подключения 1С к ODBC и получения данных в цивилизованном виде?
Здравствуте Уважаемый!
Эту тарабарщину не надо переводить в SQL запросы. 1С имеет мощный язык программирования так что не иммет смыла копаться в структуре таблиц ...
Хотя конечно можно, при желании но тут придется писать целый "паровоз"...
Модули существуют - подробности по ICQ
По поводу ODBC - (англ. Open Database Connectivity) — это программный интерфейс (API) доступа к базам данных. т.е. берешь любую среду разработки, и через объекты ODBC работаешь с данными любой СУБД ...
Вот простой пример выгрузки данных справочника номенклатура в ВМ для 1с 7.7
// опредяеляем строку для подключения, по конетексту понятно что где
СтрПодключения = "DSN="+СокрЛП(ДСН)+";";
СтрПодключения = СтрПодключения+"Database="+СокрЛП(ИмяБД)+";";
СтрПодключения = СтрПодключения+"Uid="+СокрЛП(Пользователь)+";";
СтрПодключения = СтрПодключения+"Pwd="+СокрЛП(Пароль)+";";
// собственно созадем соединение
Connection = СоздатьОБъект("ADODB.Connection");
Попытка
Connection.Open(СтрПодключения);
Исключение
Предупреждение("Ошибка соединения с БД");
Возврат;
КонецПопытки;
RS = СоздатьОБъект("ADODB.Recordset");
RSIDProduct = СоздатьОБъект("ADODB.Recordset");
Command = СоздатьОБъект ("ADODB.Command");
Command.ActiveConnection = Connection;
//Ищем номенклатуру по артикулу
query = "
|SELECT *
|FROM "+СокрЛП(Префикс)+"_vm_product WHERE product_sku='"+СокрЛП(Артикул)+"' limit 1";
Command.CommandText = query;
Command.CommandType = 1;
Попытка
RSIDProduct = Command.Execute();
Исключение
КонецПопытки;
НашлиТОвар=0;
Попытка
RSIDProduct.MoveFirst();
НашлиТОвар=1;
Исключение
// ЕСли товар нашли обновляем, не нашли создаем
Если ЕстьГруппа=0 Тогда
Сообщить("Добавляем товар "+артикул);
query = "insert into "+СокрЛП(Префикс)+"_vm_product ( vendor_id , product_parent_id , product_sku , product_s_desc , product_desc, product_publish , product_special , product_discount_id , product_name , product_unit , quantity_options, product_order_levels, product_in_stock, product_sales, product_url,product_full_image, product_thumb_image )
|values ( '1', '0', '"+Артикул+"', '"+ОписаниеТовара+"', '"+ПолноеОписаниеТовара+"', '"+ПризнакПубликации+"', 'N', '0', '"+НаименованиеТовара+"', 'шт.', 'none,0,0,1', '0,0','','"+Цена+"','','"+Картинки+"','"+"resized/"+МаленькиеКартинки+"')";
НастройкиПолей.ВыбратьСтроки();
Стр1="";
Стр2="";
НастройкиПолей.ВыбратьСтроки();
Пока НастройкиПолей.ПолучитьСтроку()=1 Цикл
Если СокрЛП(НастройкиПолей.Реквизит)="" ТОгда
Продолжить;
КонецЕсли;
Стр1= Стр1+СокрЛП(НастройкиПолей.ПолеVM)+",";
Стр2=Стр2+"'"+СокрЛП(Номенклатура.ПолучитьАтрибут(НастройкиПолей.Реквизит))+"'"+",";
КонецЦикла;
Стр1 = Стр1+"product_full_image, product_thumb_image";
Стр2 = Стр2+"'"+Картинки+"','"+"resized/"+МаленькиеКартинки+"'";
query1 = "insert into "+СокрЛП(Префикс)+"_vm_product ("+Стр1+") values ("+Стр2+")";
// Сообщить(query1);
Command.CommandText = query1;
Command.CommandType = 1;
Попытка
RS = Command.Execute();
Исключение
Сообщить (ОписаниеОшибки());
КонецПопытки;
RSIDProduct.Close();
флагсуществования =0;
Иначе
флагсуществования=1;
Сообщить("Обновляем товар "+артикул);
query = "UPDATE "+СокрЛП(Префикс)+"_vm_product SET product_sku='"+Артикул+"',product_name='"+НаименованиеТовара+"', product_s_desc= '"+ОписаниеТовара+"',product_desc= '"+ПолноеОписаниеТовара+"',product_in_stock= '',product_sales='"+цена+"',product_url='',product_publish='"+ПризнакПубликации+"',product_full_image='"+Картинки+"',product_thumb_image='"+"resized/"+МаленькиеКартинки+"' WHERE product_sku='"+Артикул+"'" ;
Стр1="";
Стр2="";
НастройкиПолей.ВыбратьСтроки();
Пока НастройкиПолей.ПолучитьСтроку()=1 Цикл
Если СокрЛП(НастройкиПолей.Реквизит)="" ТОгда
Продолжить;
КонецЕсли;
Стр1= Стр1+СокрЛП(НастройкиПолей.ПолеVM)+" ='"+СокрЛП(Номенклатура.ПолучитьАтрибут(НастройкиПолей.Реквизит))+"',";
//Стр2=Стр2+СокрЛП(Номенклатура.ПолучитьАтрибут(НастройкиПолей.Реквизит))+",";
КонецЦикла;
Стр1=Стр1+"product_full_image='"+Картинки+"',product_thumb_image='"+"resized/"+МаленькиеКартинки+"'";
query1 = "UPDATE "+СокрЛП(Префикс)+"_vm_product SET "+Стр1+" WHERE product_sku='"+Артикул+"'";
// Сообщить(query1);
Command.CommandText = query1;
Command.CommandType = 1;
Попытка
RS = Command.Execute();
Исключение
Сообщить (ОписаниеОшибки());
КонецПопытки;
RSIDProduct.Close();
КонецЕсли;
НастройкиПолей - в данном случае настраиваемая структура, здесь не привожу по контексту понятно что делать ...