Процедура СнятиеФлагаПустыхГрупп(Кнопка) СтрПодключения = "DSN=mySQL_ishop;"; СтрПодключения = СтрПодключения+"Database=joomla;"; СтрПодключения = СтрПодключения+"Uid=Sa;"; СтрПодключения = СтрПодключения+"Pwd=хххххххх;"; Connection = Новый COMОбъект("ADODB.Connection"); Connection.Open(СтрПодключения); RS = Новый COMОбъект("ADODB.Recordset"); RSIDProduct= Новый COMОбъект("ADODB.Recordset"); Command = Новый COMОбъект ("ADODB.Command"); Command.ActiveConnection = Connection; Сообщить (Строка (ТекущаяДата()) + " обновляем флаг пустых групп"); Запрос =Новый Запрос; ЗАпрос.Текст ="ВЫБРАТЬ РАЗЛИЧНЫЕ | Номенклатура.ЭтоГруппа, | Номенклатура.НеОтображатьWeb, | Номенклатура.НеОтображатьНикогда, | Номенклатура.Код КАК Код, | Номенклатура.Артикул, | Номенклатура.ПустойОстаток |ИЗ | Справочник.Номенклатура КАК Номенклатура |ГДЕ | Номенклатура.ЭтоГруппа = ИСТИНА"; // | И (Номенклатура.ПустойОстаток = ИСТИНА // | ИЛИ Номенклатура.НеОтображатьWeb = ИСТИНА // | ИЛИ Номенклатура.НеОтображатьНикогда = ИСТИНА)"; Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл Если Выборка.ПустойОстаток ИЛИ Выборка.НеОтображатьНикогда ИЛИ Выборка.НеОтображатьWEB Тогда АпдейтГрупп = "UPD ATE jos_vm_category SET category_publish='N' WHERE category_description='"+Выборка.Код+"'" ; Иначе АпдейтГрупп = "UPD ATE jos_vm_category SET category_publish='Y' WHERE category_description='"+Выборка.Код+"'" ; КонецЕсли; Command.CommandText = АпдейтГрупп; Command.CommandType = 1; Попытка РекордСет = Command.Execute(); Исключение Сообщить (ОписаниеОшибки()); КонецПопытки; КонецЦикла; КонецПроцедуры Процедура КнопкаВыполнитьНажатие(Кнопка) СтрПодключения = "DSN=mySQL_ishop;"; СтрПодключения = СтрПодключения+"Database=joomla;"; СтрПодключения = СтрПодключения+"Uid=Sa;"; СтрПодключения = СтрПодключения+"Pwd=ххххххх;"; Connection = Новый COMОбъект("ADODB.Connection"); Connection.Open(СтрПодключения); RS = Новый COMОбъект("ADODB.Recordset"); RSIDProduct= Новый COMОбъект("ADODB.Recordset"); Command = Новый COMОбъект ("ADODB.Command"); Command.ActiveConnection = Connection; // выберем запросом все группы товаров Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Номенклатура.Ссылка, | Номенклатура.ПометкаУдаления, | Номенклатура.Предопределенный, | Номенклатура.Родитель, | Номенклатура.ЭтоГруппа, | Номенклатура.Код, | Номенклатура.Наименование, | Номенклатура.НеОтображатьWeb, | Номенклатура.НеОтображатьНикогда, | Номенклатура.Артикул, | Номенклатура.ПустойОстаток |ИЗ | Справочник.Номенклатура КАК Номенклатура |ГДЕ | Номенклатура.ЭтоГруппа = ИСТИНА"; // | И Номенклатура.Родитель = &Родитель"; // Запрос.УстановитьПараметр("Родитель",Справочники.Номенклатура.ПустаяСсылка()); Результат = Запрос.Выполнить(); Выборка= Результат.Выбрать(); ЭлементыФормы.Индикатор1.МинимальноеЗначение = 0; ЭлементыФормы.Индикатор1.МаксимальноеЗначение = Выборка.Количество(); н=0; Пока Выборка.Следующий() Цикл н=н+1; // запрос существования товара в базе виртуемарта query = " |SEL ECT category_id |FR OM jos_vm_category WHERE category_description='"+Выборка.Код+"' limit 1"; RSIDProduct.CursorType = 3; RSIDProduct.Open(query, Connection); Если RSIDProduct.EOF() И RSIDProduct.BOF() Тогда СтрН = СтрЗаменить(Строка(н)," ",""); //пишем группы верхнего уровня // если группа имеет признак того что-бы ее не выгружать на web то отменим публикацию // необходимо для оптимизации добавить рекурсию по родительскому каталогу Если Выборка.НеОтображатьWeb или Выборка.НеОтображатьНикогда или Выборка.Родитель.НеОтображатьНикогда или Выборка.Родитель.НеОтображатьWeb или Выборка.ПустойОстаток Тогда query = "ins ert into jos_vm_category (vendor_id , category_name ,category_description, category_publish , category_browsepage , products_per_row , category_flypage, list_order ) |values ('1' , '"+Выборка.НАИМЕНОВАНИЕ+"' ,'"+Выборка.Код+"', 'N', 'managed' , '1' , 'flypage.tpl', '1')"; // иначе публикуем Иначе query = "ins ert into jos_vm_category ( |vendor_id , |category_name , |category_description, |category_publish , |category_browsepage , |products_per_row , |category_flypage, |list_order ) |values ('1' , '"+Выборка.НАИМЕНОВАНИЕ+"' ,'"+Выборка.Код+"', 'Y', 'managed' , '1' , 'flypage.tpl', '1')"; КонецЕсли; Command.CommandText = query; Command.CommandType = 1; Попытка RS = Command.Execute(); Исключение Сообщить (ОписаниеОшибки()); Сообщить (Выборка.Код); Сообщить (Формат (н,"ЧГ=0")); КонецПопытки; query = " |SEL ECT * |FR OM jos_vm_category WHERE category_description='"+Выборка.Код+"' limit 1"; RS.Open(query, Connection); RS.MoveFirst(); Пока RS.EOF() = 0 Цикл ИДГруппы = RS.Fields("category_id").Value; RS.MoveNext(); КонецЦикла; RS.Close(); query = "ins ert into jos_vm_category_xref ( `category_parent_id` , `category_child_id` ) |values ( '"+0+"' , '"+Формат(ИДгруппы,"ЧГ=0")+"' )"; Command.CommandText = query; Command.CommandType = 1; Попытка RS = Command.Execute(); Исключение Сообщить (Выборка.Код); Сообщить(ОписаниеОшибки()); КонецПопытки; ОбработкаПрерыванияПользователя(); // Состояние("Обновляем группу товаров " + Выборка.Наименование); КонецЕсли; Индикатор1=н; RSIDProduct.Close(); КонецЦикла; Сообщить ("обновлено " + н+ " групп"); // обновим статус публикацию групп Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Номенклатура.Ссылка, | Номенклатура.ПометкаУдаления, | Номенклатура.Предопределенный, | Номенклатура.Родитель.Код КАК КодРодителя, | Номенклатура.ЭтоГруппа, | Номенклатура.Код, | Номенклатура.Наименование, | Номенклатура.НеОтображатьWeb, | Номенклатура.НеОтображатьНикогда |ИЗ | Справочник.Номенклатура КАК Номенклатура |ГДЕ | Номенклатура.ЭтоГруппа = ИСТИНА | И (НЕ Номенклатура.Родитель = &Родитель)"; Запрос.УстановитьПараметр("Родитель",Справочники.Номенклатура.ПустаяСсылка()); Результат = Запрос.Выполнить(); Выборка= Результат.Выбрать(); ЭлементыФормы.Индикатор1.МинимальноеЗначение = 0; ЭлементыФормы.Индикатор1.МаксимальноеЗначение = Выборка.Количество(); н=0 ; Сообщить ("Строим структуру..."); Пока Выборка.Следующий() Цикл н=н+1; // Если не Выборка.Ссылка.Уровень=0 тогда //1 найдем айди родителя и категории в виртуамарте query = " |SEL ECT * |FR OM jos_vm_category WHERE category_description='"+Выборка.КодРодителя+"' limit 1"; RS.Open(query, Connection); RS.MoveFirst(); Пока RS.EOF() = 0 Цикл ИДРодителя = RS.Fields("category_id").Value; RS.MoveNext(); КонецЦикла; RS.Close(); query = " |SEL ECT * |FR OM jos_vm_category WHERE category_description='"+Выборка.Код+"' limit 1"; RS.Open(query, Connection); Попытка RS.MoveFirst(); Исключение Сообщить (Выборка.Код); КонецПопытки; Пока RS.EOF() = 0 Цикл ИДГруппы = RS.Fields("category_id").Value; RS.MoveNext(); КонецЦикла; RS.Close(); //найдем и завалим запись в категории query = "delete fr om jos_vm_category_xref where category_child_id='"+Формат(ИДгруппы,"ЧГ=0")+"'"; Command.CommandText = query; Command.CommandType = 1; Попытка RS = Command.Execute(); Исключение Сообщить (Выборка.Код); Сообщить(ОписаниеОшибки()); КонецПопытки; // добавим запись в категорию query = "ins ert into jos_vm_category_xref ( category_parent_id , category_child_id) |values ( '"+Формат(ИДРодителя,"ЧГ=0")+"' , '"+Формат(ИДгруппы,"ЧГ=0")+"' )"; Command.CommandText = query; Command.CommandType = 1; Попытка RS = Command.Execute(); Исключение Сообщить (Выборка.Код); Сообщить(ОписаниеОшибки()); КонецПопытки; Индикатор1=н; // КонецЕсли; КонецЦикла; Сообщить ("обновлена структура " + н+ " групп"); // RS.Close(); Connection.Close(); КонецПроцедуры Процедура ОсновныеДействияФормыОчистьТАблицыSQL(Кнопка) СтрПодключения = "DSN=mySQL_ishop;"; СтрПодключения = СтрПодключения+"Database=joomla;"; СтрПодключения = СтрПодключения+"Uid=Sa;"; СтрПодключения = СтрПодключения+"Pwd=ххххххх;"; Connection = Новый COMОбъект("ADODB.Connection"); Connection.Open(СтрПодключения); RS = Новый COMОбъект("ADODB.Recordset"); Command = Новый COMОбъект ("ADODB.Command"); Command.ActiveConnection = Connection; Command = Новый COMОбъект ("ADODB.Command"); Command.ActiveConnection = Connection; query =" |DELETE FR OM jos_vm_category"; Command.CommandText = query; Command.CommandType = 1; RS = Command.Execute(); query =" |DELETE FR OM jos_vm_category_xref"; Command.CommandText = query; Command.CommandType = 1; RS = Command.Execute(); query =" |DELETE FR OM jos_vm_product"; Command.CommandText = query; Command.CommandType = 1; RS = Command.Execute(); query =" |DELETE FR OM jos_vm_product_category_xref"; Command.CommandText = query; Command.CommandType = 1; RS = Command.Execute(); query =" |DELETE FR OM jos_vm_product_price"; Command.CommandText = query; Command.CommandType = 1; RS = Command.Execute(); // RS.Close(); Connection.Close(); КонецПроцедуры Процедура ОсновныеДействияФормыОбновитьТовары(Кнопка) Сообщить (Строка (ТекущаяДата()) + " обновляем группы товаров..."); КнопкаВыполнитьНажатие(1); СтрПодключения = "DSN=mySQL_ishop;"; СтрПодключения = СтрПодключения+"Database=joomla;"; СтрПодключения = СтрПодключения+"Uid=Sa;"; СтрПодключения = СтрПодключения+"Pwd=ххххххх;"; Connection = Новый COMОбъект("ADODB.Connection"); Connection.Open(СтрПодключения); RS = Новый COMОбъект("ADODB.Recordset"); RSIDProduct = Новый COMОбъект("ADODB.Recordset"); Command = Новый COMОбъект ("ADODB.Command"); Command.ActiveConnection = Connection; Склад = Константы.СкладРозница.Получить(); Сообщить (Строка (ТекущаяДата()) + " распубликовываем отсутсвующие товары"); Запрос = Новый Запрос; Запрос.Текст ="ВЫБРАТЬ | ОстаткиТоваровКомпанииОстатки.КоличествоОстаток КАК Остаток, | ОстаткиТоваровКомпанииОстатки.Номенклатура.Артикул КАК Артикул, | ЕСТЬNULL(ЕСТЬNULL(ОстаткиТоваровКомпанииОстатки.КоличествоОстаток, 0) - ЕСТЬNULL(ЗаказыПокупателейОстатки.КоличествоОстаток, 0), 0) КАК ДоступноеКоличество, | ЕСТЬNULL(ЗаказыПокупателейОстатки.КоличествоОстаток, 0) КАК Заказы |ИЗ | РегистрНакопления.ОстаткиТоваровКомпании.Остатки(&КонецДня, СкладКомпании = &Склад) КАК ОстаткиТоваровКомпанииОстатки | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ЗаказыПокупателей.Остатки(&КонецДня, ) КАК ЗаказыПокупателейОстатки | ПО ОстаткиТоваровКомпанииОстатки.Номенклатура = ЗаказыПокупателейОстатки.Номенклатура |ГДЕ | ОстаткиТоваровКомпанииОстатки.Заказ = &ПустойЗаказ | И ЕСТЬNULL(ЕСТЬNULL(ОстаткиТоваровКомпанииОстатки.КоличествоОстаток, 0) - ЕСТЬNULL(ЗаказыПокупателейОстатки.КоличествоОстаток, 0), 0) > 0 | И (НЕ ОстаткиТоваровКомпанииОстатки.Номенклатура.WebЦенаУпр = 0) | И (НЕ ОстаткиТоваровКомпанииОстатки.Номенклатура.WebЦенаУпр2 = 0)"; Запрос.УстановитьПараметр("ПустойЗаказ", Документы.ЗаказПокупателя.ПустаяСсылка()); Запрос.УстановитьПараметр("Склад",Склад ); Запрос.УстановитьПараметр("КонецДня",КонецДня (ТекущаяДата())); // Запрос.УстановитьПараметр("Артикул",Артикул); ТЗостатоков = Запрос.Выполнить().Выгрузить(); // ТЗостатоков.ВыбратьСтроку(); query = " |SEL ECT product_sku, product_id |FR OM jos_vm_product"; RS.Open(query, Connection); Если (НЕ RS.EOF()) И (НЕ RS.BOF()) Тогда RS.MoveFirst(); Пока RS.EOF() = 0 Цикл Артикул = RS.Fields("product_sku").Value; ПродуктИД = RS.Fields("product_id").Value; // Если Выборка.Количество()= 0 Тогда Если ТЗостатоков.Найти(Артикул,"Артикул")= Неопределено Тогда АпдейтВиртмарта = "UPD ATE jos_vm_product SET product_in_stock= '0',product_publish='N' WHERE product_sku='"+Артикул+"'" ; Command.CommandText = АпдейтВиртмарта; Command.CommandType = 1; Попытка РекордСет = Command.Execute(); Исключение Сообщить (ОписаниеОшибки()); КонецПопытки; КонецЕсли; RS.MoveNext(); КонецЦикла; КонецЕсли; RS.Close(); //** модуль обновление цен Сообщить (Строка (ТекущаяДата()) + " начинаем обновление цен на сайте..."); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ОстаткиТоваровКомпанииОстатки.КоличествоОстаток КАК Остаток, | ОстаткиТоваровКомпанииОстатки.Номенклатура КАК Номенклатура, | ОстаткиТоваровКомпанииОстатки.Номенклатура.Код КАК Код, | ОстаткиТоваровКомпанииОстатки.Номенклатура.Артикул КАК Артикул, | ОстаткиТоваровКомпанииОстатки.Номенклатура.Наименование КАК Наименование, | ОстаткиТоваровКомпанииОстатки.Номенклатура.Родитель.Код КАК РодительКОД, | ОстаткиТоваровКомпанииОстатки.Номенклатура.Родитель.Артикул КАК РодительАртикул, | ОстаткиТоваровКомпанииОстатки.Номенклатура.WebЦенаУпр КАК WEbЦЕнаУПР, | ОстаткиТоваровКомпанииОстатки.Номенклатура.WebЦенаУпр2 КАК WEbЦЕнаУПР2, | ОстаткиТоваровКомпанииОстатки.Номенклатура.НеВыводитьНаСайт КАК НеВыводитьНаСайт, | ОстаткиТоваровКомпанииОстатки.Номенклатура.Родитель.НеОтображатьWeb КАК НеОтображатьWeb, | ОстаткиТоваровКомпанииОстатки.Номенклатура.Родитель.НеОтображатьНикогда КАК НеОтображатьНикогда, | ЕСТЬNULL(ЕСТЬNULL(ОстаткиТоваровКомпанииОстатки.КоличествоОстаток, 0) - ЕСТЬNULL(ЗаказыПокупателейОстатки.КоличествоОстаток, 0), 0) КАК ДоступноеКоличество, | ЕСТЬNULL(ЗаказыПокупателейОстатки.КоличествоОстаток, 0) КАК Заказы |ИЗ | РегистрНакопления.ОстаткиТоваровКомпании.Остатки(&КонецДня, СкладКомпании = &Склад) КАК ОстаткиТоваровКомпанииОстатки | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ЗаказыПокупателей.Остатки(&КонецДня, ) КАК ЗаказыПокупателейОстатки | ПО ОстаткиТоваровКомпанииОстатки.Номенклатура = ЗаказыПокупателейОстатки.Номенклатура |ГДЕ | ОстаткиТоваровКомпанииОстатки.КоличествоОстаток > 0 | И ОстаткиТоваровКомпанииОстатки.Заказ = &ПустойЗаказ | И (НЕ ОстаткиТоваровКомпанииОстатки.Номенклатура.WebЦенаУпр = 0) | И (НЕ ОстаткиТоваровКомпанииОстатки.Номенклатура.WebЦенаУпр2 = 0)"; Запрос.УстановитьПараметр("ПустойЗаказ", Документы.ЗаказПокупателя.ПустаяСсылка()); Запрос.УстановитьПараметр("Склад", Справочники.СкладыКомпании.НайтиПоКоду("00002")); Запрос.УстановитьПараметр("КонецДня",КонецДня(ТекущаяДата())); Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); ЭлементыФормы.Индикатор1.МинимальноеЗначение = 0; ЭлементыФормы.Индикатор1.МаксимальноеЗначение = Выборка.Количество(); н=0 ; ЗапросКурса = Новый Запрос; ЗапросКурса.Текст = "ВЫБРАТЬ | КурсыВалютСрезПоследних.Курс |ИЗ | РегистрСведений.КурсыВалют.СрезПоследних(&ТекущаяДата, ) КАК КурсыВалютСрезПоследних |ГДЕ | КурсыВалютСрезПоследних.Валюта = &Валюта"; ЗапросКурса.УстановитьПараметр("Валюта", Константы.ВалютаУправленческогоУчетаКомпании.Получить()); ЗапросКурса.УстановитьПараметр("ТекущаяДата",КонецДня(ТекущаяДата())); ВыборкаКурса = ЗапросКурса.Выполнить().Выбрать(); Пока ВыборкаКурса.Следующий() Цикл Курс = ВыборкаКурса.Курс; КонецЦикла; Пока Выборка.Следующий() Цикл н=н+1; // Если Выборка.ДоступноеКоличество < 0 Тогда ДОступноеКоличество=0; Иначе ДОступноеКоличество=Выборка.ДоступноеКоличество; КонецЕсли; ДОступноеКоличество=Выборка.ДоступноеКоличество; // Сообщить (Выборка.Номенклатура.Наименование + " " + ДОступноеКоличество); флагсуществования=Ложь; // убираем непорядочные символы Наименование = СтрЗаменить(Выборка.Наименование,"'"," "); //уберем символ ' // запрос существования товара в базе виртуемарта query = " |SEL ECT * |FR OM jos_vm_product WHERE product_sku='"+Выборка.Артикул+"' limit 1"; RSIDProduct.Open(query, Connection); Если RSIDProduct.EOF() И RSIDProduct.BOF() Тогда // Если Выборка.НеОтображатьНикогда = NULL Тогда НеОтображатьНикогда=Ложь; Иначе НеОтображатьНикогда=ИСТИНА; КонецЕсли; // Если Выборка.НеОтображатьНикогда = NULL Тогда НеОтображатьWeb=Ложь Иначе НеОтображатьНикогда=ИСТИНА; КонецЕсли; Если ПРО2 Тогда Цена = ВЫборка.WEbЦЕнаУПР2; Иначе Цена = Выборка.WEbЦЕнаУПР; КонецЕсли; Если Выборка.НеВыводитьНаСайт Тогда // флаги отображения на сайте //Если Выборка.НеВыводитьНаСайт или Выборка.НеОтображатьНикогда или Выборка.НеОтображатьWeb Тогда query = "ins ert into jos_vm_product ( vendor_id , product_parent_id , product_sku , product_s_desc , product_publish , product_special , product_discount_id , product_name , product_unit , quantity_options, product_order_levels, product_in_stock, product_sales,product_url ) |values ( '1', '0', '"+Выборка.Артикул+"', '"+наименование+"', 'N', 'N', '0', '"+наименование+"', 'шт.', 'none,0,0,1', '0,0','"+Формат (ДОступноеКоличество, "ЧГ=0")+"','"+Формат (Цена*Курс,"ЧГ=0")+"','http://catalog.sunrise.ru/descriptionPage.aspx?a="+Выборка.Артикул+"')"; Иначе query = "ins ert into jos_vm_product ( vendor_id , product_parent_id , product_sku , product_s_desc , product_publish , product_special , product_discount_id , product_name , product_unit , quantity_options, product_order_levels, product_in_stock, product_sales, product_url ) |values ( '1', '0', '"+Выборка.Артикул+"', '"+наименование+"', 'Y', 'N', '0', '"+наименование+"', 'шт.', 'none,0,0,1', '0,0','"+Формат (ДОступноеКоличество, "ЧГ=0")+"','"+Формат (Цена*Курс,"ЧГ=0")+"','http://catalog.sunrise.ru/descriptionPage.aspx?a="+Выборка.Артикул+"')"; КонецЕсли; // запишем номенклатуру // Сообщить (query); Command.CommandText = query; Command.CommandType = 1; Попытка RS = Command.Execute(); Исключение Сообщить (ОписаниеОшибки()); КонецПопытки; RSIDProduct.Close(); флагсуществования =Ложь; Иначе флагсуществования=Истина; // выполним пока не нужный запрос /// данные об изменении в номенклатуре //RSIDProduct.MoveFirst(); //Пока RSIDProduct.EOF() = 0 Цикл // ИД = RSIDProduct.Fields("product_id").Value; // RSIDProduct.MoveNext(); //КонецЦикла; // Если Выборка.НеОтображатьНикогда = NULL Тогда НеОтображатьНикогда=Ложь; Иначе НеОтображатьНикогда=ИСТИНА; КонецЕсли; // Если Выборка.НеОтображатьНикогда = NULL Тогда НеОтображатьWeb=Ложь Иначе НеОтображатьНикогда=ИСТИНА; КонецЕсли; Если ПРО2 Тогда Цена = ВЫборка.WEbЦЕнаУПР2; Иначе Цена = Выборка.WEbЦЕнаУПР; КонецЕсли; Если Выборка.НеВыводитьНаСайт Тогда query = "UPD ATE jos_vm_product SET product_sku='"+Выборка.Артикул+"', product_s_desc= '"+наименование+"',product_in_stock= '"+Формат (ДОступноеКоличество, "ЧГ=0")+"',product_sales='"+Формат (Цена*Курс,"ЧГ=0")+"',product_url='http://catalog.sunrise.ru/descriptionPage.aspx?a="+Выборка.Артикул+"',product_publish='N' WHERE product_sku='"+Выборка.Артикул+"'" ; Иначе query = "UPD ATE jos_vm_product SET product_sku='"+Выборка.Артикул+"', product_s_desc= '"+наименование+"',product_in_stock= '"+Формат (ДОступноеКоличество, "ЧГ=0")+"',product_sales='"+Формат (Цена*Курс,"ЧГ=0")+"',product_url='http://catalog.sunrise.ru/descriptionPage.aspx?a="+Выборка.Артикул+"',product_publish='Y' WHERE product_sku='"+Выборка.Артикул+"'" ; КонецЕсли; Command.CommandText = query; Command.CommandType = 1; Попытка RS = Command.Execute(); Исключение Сообщить (ОписаниеОшибки()); КонецПопытки; RSIDProduct.Close(); КонецЕсли; // Попытка записать Данные о товаре Попытка // запрос ID родителя товара query = " |SEL ECT * |FR OM jos_vm_category WHERE category_description='"+Выборка.РодительКод+"' limit 1"; RS.Open(query, Connection); RS.MoveFirst(); Пока RS.EOF() = 0 Цикл ИДгрупы = RS.Fields("category_id").Value; RS.MoveNext(); КонецЦикла; RS.Close(); //Обновление группы // запрос айди товара в мускуле виртуемарта // Сообщить (Выборка.Номенклатура.Артикул); query = " |SEL ECT * |FR OM jos_vm_product WHERE product_sku='"+Выборка.Артикул+"' limit 1"; RS.Open(query, Connection); RS.MoveFirst(); Пока RS.EOF() = 0 Цикл ИД = RS.Fields("product_id").Value; RS.MoveNext(); КонецЦикла; RS.Close(); Если НЕ флагсуществования Тогда query = "ins ert into jos_vm_product_category_xref (category_id , product_id ) values ( '"+Формат(ИДгрупы,"ЧГ=0")+"' , '"+Формат(ИД,"ЧГ=0")+"' )"; Command.CommandText = query; Command.CommandType = 1; RS = Command.Execute(); Иначе query = "UPD ATE jos_vm_product_category_xref SET category_id='"+Формат(ИДгрупы,"ЧГ=0")+"' WHERE product_id='"+Формат(ИД,"ЧГ=0")+"'"; // "UPD ATE jos_vm_product_category_xref SET category_id='"+Формат(ИДгрупы,"ЧГ=0")+"', product_id='"+Формат(ИД,"ЧГ=0")+"' WHERE product_id='"+Формат(ИД,"ЧГ=0")+"' " ; // Сообщить (query); Command.CommandText = query; Command.CommandType = 1; RS = Command.Execute(); КонецЕсли; // прибьем ценник товара query = "delete fr om jos_vm_product_price WHERE product_id='"+Формат(ИД,"ЧГ=0")+"' " ; Command.CommandText = query; Command.CommandType = 1; RS = Command.Execute(); // все поля важны ! query = "I_nsert into jos_vm_product_price ( |product_id, |product_price, |product_currency, |product_price_vdate, |product_price_edate, |cdate, |mdate, |shopper_group_id, |price_quantity_start, |price_quantity_end ) |values ( '"+Формат(ИД,"ЧГ=0")+"' , '"+Формат (Цена*Курс,"ЧГ=0")+"','RUB',0,0,1222792314,1222792314,'5',0,0 )"; // Сообщить(Формат(ИД,"ЧГ=0")); Command.CommandText = query; Command.CommandType = 1; Попытка RS = Command.Execute(); Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; Исключение Сообщить (ОписаниеОшибки()); Сообщить (Выборка.Наименование); КонецПопытки; ОбработкаПрерыванияПользователя(); // Состояние("Обновляем товары " + Выборка.Номенклатура.Наименование); Индикатор1 = н; КонецЦикла; Сообщить ("Выгружено " + н + " объектов"); Сообщить(Строка (ТекущаяДата()) + " обновление завершено"); КонецПроцедуры Процедура Автомат () ОсновныеДействияФормыОбновитьТовары(1); КонецПроцедуры Процедура ПустыеГруппы() СнятиеФлагаПустыхГрупп(1); КонецПроцедуры Процедура ОсновныеДействияФормыАвтомат(Кнопка) ЭтаФорма.ПодключитьОбработчикОжидания("автомат", 3600); ЭтаФорма.ПодключитьОбработчикОжидания("ПустыеГруппы", 5400); ЭтаФорма.ЭлементыФормы.ОсновныеДействияФормы.Кнопки.Автомат.Доступность = Ложь; КонецПроцедуры
НачатьТранзакцию(); стрПодключения = "Driver={Microsoft Visual FoxPro Driver}; |SourceType=DBF;SourceDB=\\192.168.***.***\server\baza\; |Exclusive=No; Collate=Machine;NULL=NO;DELETED=YES;BACKGROUNDFETCH=NO;"; Connect = Новый COMОбъект("ADODB.Connection"); попытка Connect.Open(стрПодключения); исключение сообщить(ОписаниеОшибки()); Отказ=Истина; Возврат; КонецПопытки; RS = Новый COMОбъект("ADODB.RecordSet"); RS.Open("Select * from country where !deleted()",Connect); пока RS.EOF()=0 цикл Если Число(RS.Fields("cntry_code").Value)>0 тогда РезультатПоиска = Справочники.КлассификаторСтранМира.НайтиПоКоду(Число(RS.Fields("cntry_code").Value)); Если РезультатПоиска.Пустая() Тогда НоваяСтрана = Справочники.КлассификаторСтранМира.СоздатьЭлемент(); НоваяСтрана.Код =Число(RS.Fields("cntry_code").Value); НоваяСтрана.Наименование = СокрЛП(RS.Fields("cntry_name").Value); НоваяСтрана.Записать(); Иначе НайденнаяСтрана=РезультатПоиска.ПолучитьОбъект(); НайденнаяСтрана.Наименование=СокрЛП(RS.Fields("cntry_name").Value); НайденнаяСтрана.Записать(); Сообщить("Страна с кодом "+ СокрЛП(RS.Fields("cntry_code").Value)+ "уже существует"); конецесли; КонецЕсли; сообщить("-------------------"); Сообщить(СокрЛП(RS.Fields("cntry_code").Value)+" " + СокрЛП(RS.Fields("cntry_name").Value)); RS.MoveNext(); КонецЦикла; RS.Close(); Connect.Close(); ЗафиксироватьТранзакцию();
Функция ПодключитьCOMОбъект(Путь) Экспорт Отказ = Ложь; COMСоединение = Новый COMОбъект("ADODB.Connection"); COMСоединение.ConnectionString = "....."; COMСоединение.ConnectionTimeOut = 1200; COMСоединение.CursorLocation = 3; Попытка COMСоединение.Open(COMСоединение.ConnectionString); Исключение Отказ = Истина; COMСоединение = ""; Предупреждение("Невозможно установить соединение - " + ОписаниеОшибки()); Возврат НЕ Отказ; КонецПопытки; Возврат НЕ Отказ; КонецФункции Процедура КнопкаВыплонитьНажатие(Кнопка) Если НЕ ПодключитьCOMОбъект(ПутьКФайлуГДБ) Тогда ЗакрытьФормуИндикатора(); Возврат; КонецЕсли; КомандаАДО = Новый COMОбъект("ADODB.Command"); ТекстЗапроса = "S_elect id from nomenclature where ext_1c_id = 1"; Рекордсет = Новый COMОбъект("ADODB.Recordset"); Попытка Рекордсет = КомандаАДО.Execute(); Исключение Предупреждение("Не получилось выполнить запрос!" + " - " + ОписаниеОшибки()); КонецПопытки; Рекордсет.MoveFirst(); Пока Рекордсет.EOF() = 0 Цикл ОбработкаПрерыванияПользователя(); айди = Рекордсет.Fields("id").Value; Сообщить(айди); КонецЦикла; КонецПроцедуры
стрПодключения = "Driver={SQL Server};" стрПодключения = стрПодключения + ИмяСервера + ";"; стрПодключения = стрПодключения +"Uid=" + ИмяПользователя + ";"; стрПодключения = стрПодключения + "Pwd=" + Пароль + ";"; стрПодключения = стрПодключения + "DataBase =" + ИмяБазы + ";"; стрПодключения = стрПодключения + "Pwd=" + Пароль + ";"; Connection = Новый COMОбъект("ADODB.Connection"); Connection.OpenServer = стрПодключения; RS = Новый COMОбъект("ADODB.Recordset"); // Запрос к базе на языке SQL запросов. RS.Open("S_elect * from TradeUnit", Connection); Пока RS.EOF() = 0 Цикл // Можно обращаться и обрабатывать значения полей выборки. ИД = RS.Fields("ID").Value; Код = RS.Fields("Code").Value; // Обработка других полей RS.MoveNext(); КонецЦикла; RS.Close(); Connection.Close();