Имя: Пароль:
1C
1С v8
Выгрузка статуса товара на сайт
0 sergqwert
 
03.07.19
14:50
Была добавлена в заказе в табчасти товары колонка статус товара. Изменили схему выгрузки на сайт. Как брать статус товара из строки а не  рассчитывать при выгрузке?

Функция ЭкспортироватьСтатусыЗаказов() Экспорт
    СтатусТовараВРаботе         = Справочники.СтатусыЗаказовСайта.НайтиПоКоду("00000000002");
    СтатусТовараОтменен         = Справочники.СтатусыЗаказовСайта.НайтиПоКоду("00000000004");
    СтатусТовараОтказПоставщика = Справочники.СтатусыЗаказовСайта.НайтиПоКоду("00000000009");
    СтатусТовараГотовКОтгрузке    = Справочники.СтатусыЗаказовСайта.НайтиПоКоду("00000000008");
    СтатусТовараОтгружен         = Справочники.СтатусыЗаказовСайта.НайтиПоКоду("00000000005");
    СтатусТовараВПути             = Справочники.СтатусыЗаказовСайта.НайтиПоКоду("00000000007");
    
    ИмяВременногоФайла = КаталогВременныхФайлов() + "statysuzakazov.xml";
    Запись = Новый ЗаписьXML();
    Запись.ОткрытьФайл(ИмяВременногоФайла,"windows-1251");
    Запись.ЗаписатьОбъявлениеXML();
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    тЗаказКлиента.Ссылка КАК Ссылка,
                   |    тЗаказКлиента.СтатусДляСайта,
                   |    ПосылкаЗаказыКлиента.Ссылка.ТТН КАК ТТН
                   |ИЗ
                   |    Документ.ЗаказКлиента КАК тЗаказКлиента
                   |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.Посылка.ЗаказыКлиента КАК ПосылкаЗаказыКлиента
                   |        ПО (ПосылкаЗаказыКлиента.ЗаказКлиента = тЗаказКлиента.Ссылка)
                   |            И (НЕ ПосылкаЗаказыКлиента.Ссылка.ПометкаУдаления)
                   |ГДЕ
                   |    тЗаказКлиента.ЕстьИзменения
                   |    И тЗаказКлиента.НомерССайта <> """"
                   |
                   |УПОРЯДОЧИТЬ ПО
                   |    тЗаказКлиента.Дата";
    
    СписокЗаказов = Новый СписокЗначений;
    Выборка = Запрос.Выполнить().Выбрать();
    Запись.ЗаписатьНачалоЭлемента("КоммерческаяИнформация");
    Запись.ЗаписатьАтрибут("ВерсияСхемы","2.04");
    Запись.ЗаписатьАтрибут("ДатаФормирования",Формат(ТекущаяДата(),"ДФ=yyyy-MM-dd"));
    
    Запись.ЗаписатьНачалоЭлемента("Статусы");
    Пока Выборка.Следующий() Цикл
        СписокЗаказов.Добавить(Выборка.Ссылка);
        Запись.ЗаписатьНачалоЭлемента("Заказ");
        Запись.ЗаписатьАтрибут("НомерЗаказа",Выборка.Ссылка.НомерССайта);
        Запись.ЗаписатьАтрибут("СтатусЗаказа",Выборка.СтатусДляСайта.КодСтатуса);        
        Запись.ЗаписатьАтрибут("ТТН",Выборка.ТТН);        
                
        Запись.ЗаписатьНачалоЭлемента("Товары");
        Для Каждого СтрокаТоваров Из Выборка.Ссылка.Товары Цикл
            Запись.ЗаписатьНачалоЭлемента("Товар");
            Запись.ЗаписатьАтрибут("Ид",СтрокаТоваров.Номенклатура.Артикул);
            Если СтрокаТоваров.ВариантОбеспечения = Перечисления.ВариантыОбеспечения.СоСклада Тогда
                СтатусТовара = СтатусТовараГотовКОтгрузке;
            ИначеЕсли СтрокаТоваров.ВариантОбеспечения = Перечисления.ВариантыОбеспечения.Отгрузить Тогда
                СтатусТовара = СтатусТовараГотовКОтгрузке;
            ИначеЕсли СтрокаТоваров.ВариантОбеспечения = Перечисления.ВариантыОбеспечения.НеТребуется Тогда
                СтатусТовара = СтатусТовараОтменен;
            ИначеЕсли СтрокаТоваров.ВариантОбеспечения = Перечисления.ВариантыОбеспечения.Требуется Тогда
                СтатусТовара = СтатусТовараВРаботе;
            КонецЕсли;
            
            Запись.ЗаписатьАтрибут("СтатусТовара",СтатусТовара.КодСтатуса);        
            Запись.ЗаписатьКонецЭлемента(); //Запись.ЗаписатьНачалоЭлемента("Товар");
        КонецЦикла;
        Запись.ЗаписатьКонецЭлемента(); //Запись.ЗаписатьНачалоЭлемента("Товары");
        Запись.ЗаписатьКонецЭлемента(); //Заказ
    КонецЦикла;
    Запись.ЗаписатьКонецЭлемента(); //Статусы
    Запись.ЗаписатьКонецЭлемента(); //КоммерческаяИнформация
    Запись.Закрыть();
    ОтветСервера = "";
    ВыполнитьАвторизацию(ОтветСервера);
    КукиИмя            = СтрПолучитьСтроку(ОтветСервера, 2);
    КукиЗначение       = СтрПолучитьСтроку(ОтветСервера, 3);
    ЗаголовкиЗапросов = "Cookie: " + КукиИмя + "=" + КукиЗначение;
    Соединение = ПолучитьСоединение();
    Успешно = HTTPВыгрузитьНаСервер("exchange.php?type=catalog&mode=file&filename=statysuzakazov.xml",ИмяВременногоФайла);
    ОтветСервера = HTTPПолучитьДанныеССервера(Соединение,"exchange.php?type=catalog&mode=import&filename=statysuzakazov.xml" ,ЗаголовкиЗапросов);
    Если ОтветСервера = Неопределено Тогда
        //СообщитьОбОшибкеОбмена("Не удалось получить параметры обмена с сервера.", Истина);
        Возврат Ложь;
    Иначе
        Для Каждого СтрокаСписка Из СписокЗаказов Цикл
            ДоработкиПривилегированный.УстановитьРеквизитДокумента(СтрокаСписка.Значение,"ЕстьИзменения",Ложь);
        КонецЦикла;
    КонецЕсли;
    Возврат Истина;    
КонецФункции
1 ia
 
03.07.19
14:51
без фото не взлетит
2 sergqwert
 
03.07.19
17:01
Как выгружать статус товара из колонки ТЧ а не  рассчитывать при выгрузке?
3 Greeen
 
03.07.19
17:27
Вариант 1 (по быстрому):
Запись.ЗаписатьАтрибут("СтатусТовара",СтатусТовара.КодСтатуса);         заменить на  Запись.ЗаписатьАтрибут("СтатусТовара",СтрокаТоваров<РеквизитКакОнТамНазываетсяУВасКоторыйНовый>.КодСтатуса);  
и закоментить нафиг расчет

Вариант 2 (более кошерный):
Переписать запрос с участием табличной Части товары и из неё уже грузить