Имя: Пароль:
1C
1С v8
Выгрузка товара
,
0 selestos
 
01.11.13
17:37
у меня есть форма списка товаров которые выгружаются на сайт по нажатий на кнопку,в форме элемента самого товара есть реквизит- номенклатура и Id
Предположим я создал два товара с одинаковой номенклатурой и с разными ID, как запретить выгрузку номенклатуры с разными Id  и вывести сообщение?
1 selestos
 
01.11.13
17:47
....никто не знает
2 selestos
 
01.11.13
17:47
ладно спс
3 Beduin
 
01.11.13
17:57
(0) Тебе весь запрограммированный участок?
4 selestos
 
01.11.13
18:01
Функция СоздатьТоварНаСайте()
        
        
            
    
    Попытка
        
        
        Command  =  Новый COMОбъект("ADODB.Command");
        Command.ActiveConnection = Соединение;
        Command.CommandText = "Begin;";//Будем писать в транзакциях если таблица поддерживает
        Command.Execute();
        
        Command.CommandText = "INSERT INTO `"+PrefixTable+"_virtuemart_products`( product_sku, product_available_date, published) VALUES ('"+СокрЛП(Спр.Код)+"','" + Формат(НачалоГода(ТекущаяДата()),"ДФ=yyyy-MM-dd")+"','1');";
        
        Command.Execute();
        
        Command.CommandText = "SELECT LAST_INSERT_ID() AS NewID;";
        
        RecordSet = Command.Execute();
        
        ID = Формат(RecordSet.Fields.Item(0).Value,"ЧЦ=10; ЧГ=0");
        
        
        Родитель_ИД = "";
        Если ЗначениеЗаполнено(Спр.Родитель) Тогда
            Если ЗначениеЗаполнено(Спр.Родитель.VM_ID) Тогда
                Родитель_ИД = Формат(Спр.Родитель.VM_ID,"ЧЦ=10; ЧГ=0");
            Иначе
                Сообщить("Не указан VirtueMart ID для родительского элемента "+Спр.Родитель+" ("+Спр.Родитель.ПолныйКод()+")");
            КонецЕсли;
        КонецЕсли;
        Сообщить("Попытка привязки элемента "+СокрЛП(ID)+" к  категории "++СокрЛП(Родитель_ИД)+"");
        
        Command.CommandText = "INSERT INTO `"+PrefixTable+"_virtuemart_product_categories`( virtuemart_category_id, virtuemart_product_id) VALUES ('"+СокрЛП(Родитель_ИД)+"','"+СокрЛП(ID)+"');";
        
        RecordSet = Command.Execute();
        Если ЗначениеНеЗаполнено(Спр.RU) Тогда
            Спр_РУ = Спр.Наименование;
        Иначе
            Спр_РУ = Спр.RU;
        КонецЕсли;
        
        Если ЗначениеНеЗаполнено(Спр.EN) Тогда
            Спр_EN = Спр.Наименование;
        Иначе
            Спр_EN = Спр.EN;
        КонецЕсли;
        Command.CommandText = "INSERT INTO `"+PrefixTable+"_virtuemart_products_en_gb`( virtuemart_product_id, product_name, slug) VALUES ('"+СокрЛП(ID)+"','"+СокрЛП(Спр_EN)+"','"+СтрЗаменить(Спр.ПолныйКод(),"/","-")+"');";
        
        RecordSet = Command.Execute();
        
        Command.CommandText = "INSERT INTO `"+PrefixTable+"_virtuemart_products_ru_ru`( virtuemart_product_id, product_name, slug) VALUES ('"+СокрЛП(ID)+"','"+СокрЛП(Спр_РУ)+"','"+СтрЗаменить(Спр.ПолныйКод(),"/","-")+"');";
        
        RecordSet = Command.Execute();
        
        Command.CommandText = "INSERT INTO `"+PrefixTable+"_virtuemart_products_ro_ro`( virtuemart_product_id, product_name, slug) VALUES ('"+СокрЛП(ID)+"','"+СокрЛП(Спр.Наименование)+"','"+СтрЗаменить(Спр.ПолныйКод(),"/","-")+"');";
        
        RecordSet = Command.Execute();
        
        
        Command.CommandText = "commit;";//Фиксируем транзакцию
        Command.Execute();
        Сообщить("Создан товар ("+ID+") на сайте : "+СокрЛП(Спр.Наименование)+"("+Спр.ПолныйКод()+")");
        
        //Connection.Close();
        
    Исключение
        Сообщить(ОписаниеОшибки());
        Сообщить("CHECK "+Спр.ПолныйКод());
        Command.CommandText = "rollback;";//хз - какая-то ошибка. Отказываемся от записи.
        Command.Execute();
        Соединение.Close();
        Возврат Ложь;
    КонецПопытки;

    Возврат ID;
    
    
    

КонецФункции
5 selestos
 
01.11.13
18:01
Вот и участок какой запрос построить?, как хотябы подсказку? (3)
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.