Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 1
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Выгрузка в yml          
Murano Подменю пользователя
сообщение 25.09.17, 1:46
Сообщение #1

Общительный
**
Группа: Пользователи
Сообщений: 32
Спасибо сказали: 0 раз
Рейтинг: 0

Доброго времени суток. Столкнулся с такой задачей: нужно сделать обработку для выгрузки каталога номенклатуры в формат yml. Нахожу только платные решения, может быть у кого то есть пример или какой-то аналог, который помог бы новичку? Буду очень благодарен

salton Подменю пользователя
сообщение 25.09.17, 8:18
Сообщение #2

Говорящий
***
Группа: Пользователи
Сообщений: 92
Из: Полтава
Спасибо сказали: 24 раз
Рейтинг: 0

А в чем собственно проблема? Если я не ошибаюсь, yml - тот же xml с незначительными изменениями. Пишите выгрузку обычного XML, по правилам yml и согласно нужного вам формата прайса.

[необходимо зарегистрироваться для просмотра ссылки]

а вот пример написания самого файла

ЗаписьXML=Новый ЗаписьXML();
ЗаписьXML.УстановитьСтроку();
  
ЗаписьXML.ЗаписатьНачалоЭлемента("yml_catalog");
  ЗаписьXML.ЗаписатьАтрибут("date", Формат(ТекущаяДата(),"ДФ='yyyy-MM-dd HH:mm:ss'"));
      
  ЗаписьXML.ЗаписатьНачалоЭлемента("shop");
    ЗаписьXML.ЗаписатьАтрибут("name", НашеНаименованиеМагазина));
    ЗаписьXML.ЗаписатьАтрибут("company", НашеНаименованиеФирмы));
        итд....
  ЗаписьXML.ЗаписатьКонецЭлемента();
ЗаписьXML.ЗаписатьКонецЭлемента();
  
СтрокаXML=ЗаписьXML.Закрыть();



ps. по сути пишеште самый обычный xml. но есть куча мелочей - важен порядок тегов - именно как в примере, их присутствие - они помоему там на 80% обязательны, отсутствие дублей товара.... и куча других мелочей... вобщем дерзайте - по ходу разберетесь!

Сообщение отредактировал Vofka - 25.09.17, 8:19

Murano Подменю пользователя
сообщение 25.09.17, 10:29
Сообщение #3

Общительный
**
Группа: Пользователи
Сообщений: 32
Спасибо сказали: 0 раз
Рейтинг: 0

salton @ Сегодня, 9:18 * ,
Да у меня ошибка какая-то выдает из-за циклов, я уже по всякому пробовал, но ничего не получается..поэтому думаю, мб тут помогут

salton @ Сегодня, 9:18 * ,
Может вы как-то на глаз найдете в чем проблема, а то я уже день не могу найти ошибку
Процедура СохранитьВКаталог(ВыборкаТоваров) Экспорт

    // Проверим существование папки для записи изображений
    Если ЛокальнаяВыгрузка = Ложь Тогда
    Каталог = "C:\1C";
    КонецЕсли;  
    ПутьКИзображениям =Каталог + "\Picture\";
    КоличествоВыгруженныхТоваров = 0;
    ПапкаКатолога = Новый Файл(Каталог);
    Если Не ПапкаКатолога.Существует() Тогда
        СоздатьКаталог(ПутьКИзображениям);
    КонецЕсли;
    ПапкаХранилища = Новый Файл(ПутьКИзображениям);
    // Очищаем каталог перд загрзузкой новых файлов
    Если Не ПапкаХранилища.Существует() Тогда
        СоздатьКаталог(ПутьКИзображениям);
    Иначе
        Попытка
            УдалитьФайлы(ПутьКИзображениям,"*.*");
        Исключение
            Сообщить(ОписаниеОшибки());
        КонецПопытки;
    КонецЕсли;

            
    ЗаписьХМL = Новый ЗаписьXML;

    ЗаписьХМL.ОткрытьФайл(Каталог + "\" + Организация + ".xml");

    // Записать директиву
    ЗаписьХМL.ЗаписатьОбъявлениеXML();
    //ЗаписьХМL.ЗаписатьНачалоЭлемента(Строка("OCTYPE xml_catalog SYSTEM" +" " + "hops.dtd"));
    ЗаписьХМL.ЗаписатьНачалоЭлемента("yml_catalog");
    ЗаписьХМL.ЗаписатьАтрибут("date",Строка(Формат(КонецДня(ТекущаяДата()) - 3539, "ДФ=yyyy-MM-dd")+" "+Формат(КонецДня(ТекущаяДата()) - 3539, "ДФ=ЧЧ")+":"+Формат(КонецДня(ТекущаяДата()) - 3539, "ДФ=мм")));
    ЗаписьХМL.ЗаписатьНачалоЭлемента("shop");
    // начинаем обход результата запроса
    ОбходПоГруппирокам = ОбходРезультатаЗапроса.ПоГруппировкам;
    ВыборкаНоменклатураРодитель = ВыборкаТоваров.Выбрать(ОбходПоГруппирокам, "НоменклатураРодитель");
    //Пока ВыборкаНоменклатураРодитель.Следующий() Цикл    
      
        ЗаписьХМL.ЗаписатьНачалоЭлемента("name");
        //Operation name;
        ЗаписьХМL.ЗаписатьКонецЭлемента();
        
        ЗаписьХМL.ЗаписатьНачалоЭлемента("company");
        ЗаписьХМL.ЗаписатьТекст    (Организация);
        //company name;
        ЗаписьХМL.ЗаписатьКонецЭлемента();
        
        ЗаписьХМL.ЗаписатьНачалоЭлемента("url");
        //url;
        ЗаписьХМL.ЗаписатьКонецЭлемента();
        
        ЗаписьХМL.ЗаписатьНачалоЭлемента("currencies");
        ЗаписьХМL.ЗаписатьТекст (Строка("UAH"));
        ЗаписьХМL.ЗаписатьКонецЭлемента();
        
        ЗаписьХМL.ЗаписатьНачалоЭлемента("categories");
    Пока ВыборкаНоменклатураРодитель.Следующий() Цикл
        ЗаписьХМL.ЗаписатьНачалоЭлемента("category");
        ЗаписьХМL.ЗаписатьТекст(ВыборкаНоменклатура.Наименование);
        ЗаписьХМL.ЗаписатьАтрибут("id",Прав(ВыборкаНоменклатура.Код,7 ));
        ЗаписьХМL.ЗаписатьКонецЭлемента();
     КонецЦикла;
        ЗаписьХМL.ЗаписатьКонецЭлемента();
    
        ЗаписьХМL.ЗаписатьНачалоЭлемента("offers");    
          
     Пока ВыборкаНоменклатураРодитель.Следующий() Цикл
          ЗаписьХМL.ЗаписатьНачалоЭлемента("offer");      
          
     Если ЗначениеЗаполнено(ВыборкаНоменклатура.Код) Тогда
              КоличествоВыгруженныхТоваров = КоличествоВыгруженныхТоваров + 1;
                                               
            ЗаписьХМL.ЗаписатьАтрибут("id",Прав(ВыборкаНоменклатура.Код,7 ));
              Если ВыборкаНоменклатура.Остаток > 0 И НЕ ВыборкаНоменклатура.НоменклатураСсылка.шЗаказная Тогда
            ЗаписьХМL.ЗаписатьАтрибут("available",Строка("в наличии"));
            ИначеЕсли ВыборкаНоменклатура.Остаток >= 0 И ВыборкаНоменклатура.НоменклатураСсылка.шЗаказная Тогда
            ЗаписьХМL.ЗаписатьАтрибут("available",Строка("под заказ"));    
            Иначе
               ЗаписьХМL.ЗаписатьАтрибут("available",Строка("наличие уточняйте"));
            КонецЕсли;
                    
          ЗаписьХМL.ЗаписатьНачалоЭлемента("url");
          ///
          ЗаписьХМL.ЗаписатьКонецЭлемента();
                
          ЗаписьХМL.ЗаписатьНачалоЭлемента("price");
     Если ЗначениеЗаполнено(ВыборкаНоменклатура.Цена) Тогда
          ЗаписьХМL.ЗаписатьТекст(Строка(ВыборкаНоменклатура.Цена));
     КонецЕсли;
          ЗаписьХМL.ЗаписатьКонецЭлемента();
                    
          ЗаписьХМL.ЗаписатьНачалоЭлемента("currencyId");
          ЗаписьХМL.ЗаписатьТекст (Строка("UAH"));
          ЗаписьХМL.ЗаписатьКонецЭлемента();
                    
          ЗаписьХМL.ЗаписатьНачалоЭлемента("measure");
          ЗаписьХМL.ЗаписатьТекст (Строка(ВыборкаНоменклатура.ЕдиницаИзмерения));
          ЗаписьХМL.ЗаписатьКонецЭлемента();

          ЗаписьХМL.ЗаписатьНачалоЭлемента("categoryId");
          ЗаписьХМL.ЗаписатьТекст("id",Прав(ВыборкаНоменклатура.Код,7 ));
          ЗаписьХМL.ЗаписатьКонецЭлемента();
                    
          ЗаписьХМL.ЗаписатьНачалоЭлемента("picture");
          //ЗаписьХМL.ЗаписатьТекст (ВыборкаНоменклатура.НаименованиеПолное);
          ЗаписьХМL.ЗаписатьКонецЭлемента();
                    
          //  ЗДЕСЬ ДОЛЖЕН БЫТЬ   <vendor>Польша</vendor>
          //                      <vendorCode></vendorCode>
                    
          ЗаписьХМL.ЗаписатьНачалоЭлемента("model");
          ЗаписьХМL.ЗаписатьТекст(ВыборкаНоменклатура.Наименование);
          ЗаписьХМL.ЗаписатьКонецЭлемента();
                    
          ЗаписьХМL.ЗаписатьНачалоЭлемента("description");
          ЗаписьХМL.ЗаписатьТекст (ВыборкаНоменклатура.Описание);
          ЗаписьХМL.ЗаписатьКонецЭлемента();
    
      КонецЦикла;
          ЗаписьХМL. ЗаписатьКонецЭлемента(); //Относится к "offer"

     КонецЦикла;            
    
    ЗаписьХМL.ЗаписатьКонецЭлемента(); //Относится к "offers"
    ЗаписьХМL.ЗаписатьКонецЭлемента(); //Относится к элементу "shop"
    ЗаписьХМL.ЗаписатьКонецЭлемента(); //Относится к элементу "yml_catalog"
    ЗаписьХМL.Закрыть();
    Если ЛокальнаяВыгрузка = Ложь Тогда
    ОтправитьФайлНаСервер(КоличествоВыгруженныхТоваров);
    Иначе
    Сообщить("Выгрузка успешно завершилась. Выгружено " + КоличествоВыгруженныхТоваров + " товаров");
    КонецЕсли;

КонецПроцедуры

salton Подменю пользователя
сообщение 25.09.17, 11:32
Сообщение #4

Говорящий
***
Группа: Пользователи
Сообщений: 92
Из: Полтава
Спасибо сказали: 24 раз
Рейтинг: 0

На глаз - не скажу. Пишите конкретно какая ошибка...

Единственное, что могу сказать сразу - файл вы в итоге получите, но вот формат его не будет соответствовать требуемому... ИМХО.. Но давайте сначала определимся где у вас ошибка и что конкретно пишет!

Murano Подменю пользователя
сообщение 25.09.17, 12:02
Сообщение #5

Общительный
**
Группа: Пользователи
Сообщений: 32
Спасибо сказали: 0 раз
Рейтинг: 0

salton @ Сегодня, 12:32 * ,
{ВнешняяОбработка.ВыгрузкаДанныхПоНоменклатуре.МодульОбъекта(159,4)}: Ожидается ключевое слово 'КонецЕсли' ('EndIf')
<<?>>КонецЦикла; (Проверка: Толстый клиент (обычное приложение))
{ВнешняяОбработка.ВыгрузкаДанныхПоНоменклатуре.МодульОбъекта(162,3)}: Ожидается ключевое слово 'КонецПроцедуры' ('EndProcedure')
<<?>>КонецЦикла; (Проверка: Толстый клиент (обычное приложение))

salton Подменю пользователя
сообщение 25.09.17, 12:08
Сообщение #6

Говорящий
***
Группа: Пользователи
Сообщений: 92
Из: Полтава
Спасибо сказали: 24 раз
Рейтинг: 0

вот так не будет, проверяй

Код
Процедура СохранитьВКаталог(ВыборкаТоваров) Экспорт
    
    // Проверим существование папки для записи изображений
    Если ЛокальнаяВыгрузка = Ложь Тогда
        Каталог = "C:\1C";
    КонецЕсли;  
    ПутьКИзображениям =Каталог + "\Picture\";
    КоличествоВыгруженныхТоваров = 0;
    ПапкаКатолога = Новый Файл(Каталог);
    Если Не ПапкаКатолога.Существует() Тогда
        СоздатьКаталог(ПутьКИзображениям);
    КонецЕсли;
    ПапкаХранилища = Новый Файл(ПутьКИзображениям);
    // Очищаем каталог перд загрзузкой новых файлов
    Если Не ПапкаХранилища.Существует() Тогда
        СоздатьКаталог(ПутьКИзображениям);
    Иначе
        Попытка
            УдалитьФайлы(ПутьКИзображениям,"*.*");
        Исключение
            Сообщить(ОписаниеОшибки());
        КонецПопытки;
    КонецЕсли;
    
    
    ЗаписьХМL = Новый ЗаписьXML;
    
    ЗаписьХМL.ОткрытьФайл(Каталог + "\" + Организация + ".xml");
    
    // Записать директиву
    ЗаписьХМL.ЗаписатьОбъявлениеXML();
    //ЗаписьХМL.ЗаписатьНачалоЭлемента(Строка("OCTYPE xml_catalog SYSTEM" +" " + "hops.dtd"));
    ЗаписьХМL.ЗаписатьНачалоЭлемента("yml_catalog");
    ЗаписьХМL.ЗаписатьАтрибут("date",Строка(Формат(КонецДня(ТекущаяДата()) - 3539, "ДФ=yyyy-MM-dd")+" "+Формат(КонецДня(ТекущаяДата()) - 3539, "ДФ=ЧЧ")+":"+Формат(КонецДня(ТекущаяДата()) - 3539, "ДФ=мм")));
    ЗаписьХМL.ЗаписатьНачалоЭлемента("shop");
    // начинаем обход результата запроса
    ОбходПоГруппирокам = ОбходРезультатаЗапроса.ПоГруппировкам;
    ВыборкаНоменклатураРодитель = ВыборкаТоваров.Выбрать(ОбходПоГруппирокам, "НоменклатураРодитель");
    //Пока ВыборкаНоменклатураРодитель.Следующий() Цикл    
    
    ЗаписьХМL.ЗаписатьНачалоЭлемента("name");
    //Operation name;
    ЗаписьХМL.ЗаписатьКонецЭлемента();
    
    ЗаписьХМL.ЗаписатьНачалоЭлемента("company");
    ЗаписьХМL.ЗаписатьТекст    (Организация);
    //company name;
    ЗаписьХМL.ЗаписатьКонецЭлемента();
    
    ЗаписьХМL.ЗаписатьНачалоЭлемента("url");
    //url;
    ЗаписьХМL.ЗаписатьКонецЭлемента();
    
    ЗаписьХМL.ЗаписатьНачалоЭлемента("currencies");
    ЗаписьХМL.ЗаписатьТекст (Строка("UAH"));
    ЗаписьХМL.ЗаписатьКонецЭлемента();
    
    ЗаписьХМL.ЗаписатьНачалоЭлемента("categories");
    Пока ВыборкаНоменклатураРодитель.Следующий() Цикл
        ЗаписьХМL.ЗаписатьНачалоЭлемента("category");
        ЗаписьХМL.ЗаписатьТекст(ВыборкаНоменклатура.Наименование);
        ЗаписьХМL.ЗаписатьАтрибут("id",Прав(ВыборкаНоменклатура.Код,7 ));
        ЗаписьХМL.ЗаписатьКонецЭлемента();
    КонецЦикла;
    ЗаписьХМL.ЗаписатьКонецЭлемента();
    
    ЗаписьХМL.ЗаписатьНачалоЭлемента("offers");    
    
    Пока ВыборкаНоменклатураРодитель.Следующий() Цикл
        ЗаписьХМL.ЗаписатьНачалоЭлемента("offer");      
        
        Если ЗначениеЗаполнено(ВыборкаНоменклатура.Код) Тогда
            КоличествоВыгруженныхТоваров = КоличествоВыгруженныхТоваров + 1;
            
            ЗаписьХМL.ЗаписатьАтрибут("id",Прав(ВыборкаНоменклатура.Код,7 ));
            Если ВыборкаНоменклатура.Остаток > 0 И НЕ ВыборкаНоменклатура.НоменклатураСсылка.шЗаказная Тогда
                ЗаписьХМL.ЗаписатьАтрибут("available",Строка("в наличии"));
            ИначеЕсли ВыборкаНоменклатура.Остаток >= 0 И ВыборкаНоменклатура.НоменклатураСсылка.шЗаказная Тогда
                ЗаписьХМL.ЗаписатьАтрибут("available",Строка("под заказ"));    
            Иначе
                ЗаписьХМL.ЗаписатьАтрибут("available",Строка("наличие уточняйте"));
            КонецЕсли;
            
            ЗаписьХМL.ЗаписатьНачалоЭлемента("url");
            ///
            ЗаписьХМL.ЗаписатьКонецЭлемента();
            
            ЗаписьХМL.ЗаписатьНачалоЭлемента("price");
            Если ЗначениеЗаполнено(ВыборкаНоменклатура.Цена) Тогда
                ЗаписьХМL.ЗаписатьТекст(Строка(ВыборкаНоменклатура.Цена));
            КонецЕсли;
            ЗаписьХМL.ЗаписатьКонецЭлемента();
            
            ЗаписьХМL.ЗаписатьНачалоЭлемента("currencyId");
            ЗаписьХМL.ЗаписатьТекст (Строка("UAH"));
            ЗаписьХМL.ЗаписатьКонецЭлемента();
            
            ЗаписьХМL.ЗаписатьНачалоЭлемента("measure");
            ЗаписьХМL.ЗаписатьТекст (Строка(ВыборкаНоменклатура.ЕдиницаИзмерения));
            ЗаписьХМL.ЗаписатьКонецЭлемента();
            
            ЗаписьХМL.ЗаписатьНачалоЭлемента("categoryId");
            ЗаписьХМL.ЗаписатьТекст("id",Прав(ВыборкаНоменклатура.Код,7 ));
            ЗаписьХМL.ЗаписатьКонецЭлемента();
            
            ЗаписьХМL.ЗаписатьНачалоЭлемента("picture");
            //ЗаписьХМL.ЗаписатьТекст (ВыборкаНоменклатура.НаименованиеПолное);
            ЗаписьХМL.ЗаписатьКонецЭлемента();
            
            //  ЗДЕСЬ ДОЛЖЕН БЫТЬ   <vendor>Польша</vendor>
            //                      <vendorCode></vendorCode>
            
            ЗаписьХМL.ЗаписатьНачалоЭлемента("model");
            ЗаписьХМL.ЗаписатьТекст(ВыборкаНоменклатура.Наименование);
            ЗаписьХМL.ЗаписатьКонецЭлемента();
            
            ЗаписьХМL.ЗаписатьНачалоЭлемента("description");
            ЗаписьХМL.ЗаписатьТекст (ВыборкаНоменклатура.Описание);
            ЗаписьХМL.ЗаписатьКонецЭлемента();
        КонецЕСли;
        ЗаписьХМL. ЗаписатьКонецЭлемента(); //Относится к "offer"
    КонецЦикла;
    
    
ЗаписьХМL.ЗаписатьКонецЭлемента(); //Относится к "offers"
ЗаписьХМL.ЗаписатьКонецЭлемента(); //Относится к элементу "shop"
ЗаписьХМL.ЗаписатьКонецЭлемента(); //Относится к элементу "yml_catalog"
ЗаписьХМL.Закрыть();
Если ЛокальнаяВыгрузка = Ложь Тогда
    ОтправитьФайлНаСервер(КоличествоВыгруженныхТоваров);
Иначе
    Сообщить("Выгрузка успешно завершилась. Выгружено " + КоличествоВыгруженныхТоваров + " товаров");
КонецЕсли;

КонецПроцедуры


Сообщение отредактировал Vofka - 25.09.17, 12:32

Murano Подменю пользователя
сообщение 25.09.17, 12:11
Сообщение #7

Общительный
**
Группа: Пользователи
Сообщений: 32
Спасибо сказали: 0 раз
Рейтинг: 0

salton @ Сегодня, 13:08 * , что-то пошло не так




 ! 

Правила: 8
 


Сообщение отредактировал Vofka - 25.09.17, 12:32

salton Подменю пользователя
сообщение 25.09.17, 12:28
Сообщение #8

Говорящий
***
Группа: Пользователи
Сообщений: 92
Из: Полтава
Спасибо сказали: 24 раз
Рейтинг: 0

Murano @ Сегодня, 13:11 * ,
Все пошло не так)))
Где процедура формирующая выборку номенклатуры????


зы. Если ВЫборкуНоменклатуры заменить на ТекущуюДату()
Организация заменить на "YML" + исправить мелкие ошибки в процедуре записи - то получиться вот такой файл:

<yml_catalog date="2017-09-25 23:01">
  <shop>
    <name/>
    <company>YML</company>
    <url/>
    <currencies>UAH</currencies>
    <categories>
      <category id="3:24:43">25.09.2017 13:24:43</category>
    </categories>
    <offers>
     <offer id="3:24:43" available="в наличии">
     <url/>
     <price>25.09.2017 13:24:43</price>
     <currencyId>UAH</currencyId>
     <measure>25.09.2017 13:24:43</measure>
     <categoryId>id25.09.2017 13:24:43</categoryId>
     <picture/>
     <model>25.09.2017 13:24:43</model>
     <description>25.09.2017 13:24:43</description>
     </offer>
     </offers>
   </shop>
</yml_catalog>


я пошел обедать...

Спасибо сказали: Murano,

Murano Подменю пользователя
сообщение 25.09.17, 12:50
Сообщение #9

Общительный
**
Группа: Пользователи
Сообщений: 32
Спасибо сказали: 0 раз
Рейтинг: 0

salton @ Сегодня, 13:28 * ,
приятного аппетита
как таковой процедуры нету, выборка совершается в построителе отчета. Тупые вопросы и ошибки из-за нехватки опыта у меня, т.к. с 1С знаком всего 2мес. За это прошу простить меня

salton Подменю пользователя
сообщение 25.09.17, 13:05
Сообщение #10

Говорящий
***
Группа: Пользователи
Сообщений: 92
Из: Полтава
Спасибо сказали: 24 раз
Рейтинг: 0

Цитата(Murano @ 25.09.17, 13:50) *
salton @ Сегодня, 13:28 ,
приятного аппетита

спасибо


Цитата(Murano @ 25.09.17, 13:50) *
как таковой процедуры нету, выборка совершается в построителе отчета. Тупые вопросы и ошибки из-за нехватки опыта у меня, т.к. с 1С знаком всего 2мес. За это прошу простить меня


Не совсем понятно, что вы имеете ввиду, что выборка совершается в построителе отчета....
Но! Где-то в отчете есть код запроса который выбирает номенклатуру.
Если нет - его нужно сделать (запрос или прямую выборку по справочнику).

Запрос = Новый Запрос;
Запрос.Текст =

"ВЫБРАТЬ
|    ЦеныНоменклатурыКонтрагентов.Номенклатура,
|    ЦеныНоменклатурыКонтрагентов.Валюта,
|    ЦеныНоменклатурыКонтрагентов.Цена
|ИЗ
|    РегистрСведений.ЦеныНоменклатурыКонтрагентов КАК ЦеныНоменклатурыКонтрагентов";

РезультатЗапроса = Запрос.Выполнить();
ВыборкаНоменклатура = РезультатЗапроса.Выбрать();

Пока ВыборкаНоменклатура.Следующий() Цикл


или же

Номеклатура = Справочники.Номенклатура.
ВыборкаВыборкаНоменклатура = Номенклатура.Выбрать(Родитель,,Отбор, "Наименование Убыв");


но во втором случае вы не получите цену товара

Спасибо сказали: Murano,

Murano Подменю пользователя
сообщение 25.09.17, 13:08
Сообщение #11

Общительный
**
Группа: Пользователи
Сообщений: 32
Спасибо сказали: 0 раз
Рейтинг: 0

salton @ Сегодня, 14:05 * ,
мой построитель отчета выглядит так:
Процедура ИнициализацияПостроителяОтчета() Экспорт
            
    ТекстЗапроса =
        "ВЫБРАТЬ
        |    Номенклатура.Ссылка КАК Номенклатура
        |ПОМЕСТИТЬ ВТНоменклатура
        |{ВЫБРАТЬ
        |    Номенклатура.* КАК Номенклатура}
        |ИЗ
        |    Справочник.Номенклатура КАК Номенклатура
        |;
        |
        |////////////////////////////////////////////////////////////////////////////////
        |ВЫБРАТЬ
        |    ВТНоменклатура.Номенклатура.Код КАК Код,
        |    ВТНоменклатура.Номенклатура.Наименование КАК Наименование,
        |    ВТНоменклатура.Номенклатура.Артикул КАК Артикул,
        |    ВТНоменклатура.Номенклатура.БазоваяЕдиницаИзмерения КАК ЕдиницаИзмерения,
        |    ВТНоменклатура.Номенклатура.Комментарий КАК Комментарий,
        |    ВТНоменклатура.Номенклатура.НаименованиеПолное КАК НаименованиеПолное,
        |    ВТНоменклатура.Номенклатура.ДополнительноеОписаниеНоменклатуры КАК Описание,
        |    ЦеныНоменклатурыСрезПоследних.Цена,
        |    ВТНоменклатура.Номенклатура.Родитель КАК НоменклатураРодитель,
        |    ВТНоменклатура.Номенклатура.ЭтоГруппа КАК ЭтоГруппа,
        |    ТоварыНаСкладахОстатки.Склад,
        |    ЦеныНоменклатурыСрезПоследних.ТипЦен,
        |    ТоварыНаСкладахОстатки.КоличествоОстаток КАК Остаток,
        |    ВТНоменклатура.Номенклатура.ОсновноеИзображение.Хранилище КАК Хранилище,
        |    ВТНоменклатура.Номенклатура.ОсновноеИзображение.Объект.Код КАК КодИзображения,
        |    ВТНоменклатура.Номенклатура.Ссылка КАК НоменклатураСсылка
        |{ВЫБРАТЬ
        |    НоменклатураСсылка.* КАК Номенклатура,
        |    ТипЦен.* КАК ТипЦен,
        |    Склад.* КАК Склад}
        |ИЗ
        |    ВТНоменклатура КАК ВТНоменклатура
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(, {(Номенклатура).* КАК Номенклатура, (Склад).* КАК Склад}) КАК ТоварыНаСкладахОстатки
        |        ПО ВТНоменклатура.Номенклатура.Ссылка = ТоварыНаСкладахОстатки.Номенклатура
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, {(Номенклатура).* КАК Номенклатура, (ТипЦен).* КАК ТипЦен}) КАК ЦеныНоменклатурыСрезПоследних
        |        ПО ВТНоменклатура.Номенклатура.Ссылка = ЦеныНоменклатурыСрезПоследних.Номенклатура
        |ГДЕ
        |    ТоварыНаСкладахОстатки.Склад.ТипЦенРозничнойТорговли = ЦеныНоменклатурыСрезПоследних.ТипЦен
        |{ГДЕ
        |    ВТНоменклатура.Номенклатура.Ссылка.* КАК Номенклатура,
        |    ЦеныНоменклатурыСрезПоследних.ТипЦен.* КАК ТипЦен,
        |    ТоварыНаСкладахОстатки.Склад.* КАК Склад}
        |
        |УПОРЯДОЧИТЬ ПО
        |    НоменклатураСсылка
        |ИТОГИ ПО
        |    НоменклатураРодитель
        |;
        |
        |////////////////////////////////////////////////////////////////////////////////
        |УНИЧТОЖИТЬ ВТНоменклатура";
    
    
    ПостроительОтчета.Текст = ТекстЗапроса;

    ПараметрыПостроителя = ПостроительОтчета.Параметры;
    //ПараметрыПостроителя.Вставить("ТипЦен", ТипЦен);
    ПараметрыПостроителя.Вставить("ВидДанных", Перечисления.ВидыДополнительнойИнформацииОбъектов.Изображение);
        
КонецПроцедуры

Я не правильно сделал?

salton Подменю пользователя
сообщение 25.09.17, 13:14
Сообщение #12

Говорящий
***
Группа: Пользователи
Сообщений: 92
Из: Полтава
Спасибо сказали: 24 раз
Рейтинг: 0

Цитата(Murano @ 25.09.17, 14:08) *
Я не правильно сделал?

ну почему же... правильно... но, задача не вывести отчет на экран... задача в другом

Цитата(Murano @ 25.09.17, 13:50) *
Тупые вопросы и ошибки из-за нехватки опыта у меня, т.к. с 1С знаком всего 2мес.

возьмите за правило прежде чем что-то делать нужно сесть и расписать полностью весь план действий.
Берешь задачу - в твоем случае - это выгрузка прайса в яндекс маркет.
Разбиваешь задачу на части:
1. Написать процедуру или функцию для получения самого прайса.
2. Написать процедуру по созданию YML файла и записи/выгрузке его в указанное место
3. Написать процедуру/функцию по заполнению YML.

И начинай выполнять по очереди.
Создал процедуру получения прайса - загони временно в ТЗ - посмотри в отладчике нужные данные получаешь или нет.
Процедура по созданию YML у Вас уже есть. Вот в эту процедуру и передай данные из первой процедуры с прайсом (для этого сделайте ее функцией и возвращай ТЗ, Массив, или Структуру).
В конце напишешь функцию по выгрузке файла куда надо - ОтправитьФайлНаСервер(файлYML) - скорее всего это будет по ФТП куда-то...
И все это сделайте внешней обработкой!

Спасибо сказали: Murano,

Murano Подменю пользователя
сообщение 25.09.17, 13:26
Сообщение #13

Общительный
**
Группа: Пользователи
Сообщений: 32
Спасибо сказали: 0 раз
Рейтинг: 0

salton @ Сегодня, 14:14 * ,
1. Она есть, но мне нужно в ней с запроса данные во вложенный запрос вставить только, да?
2. Тоже есть, и выгрузка есть
3. По сути, то в чем была изначально проблема.

во внешней обработке и делаю

salton Подменю пользователя
сообщение 25.09.17, 13:32
Сообщение #14

Говорящий
***
Группа: Пользователи
Сообщений: 92
Из: Полтава
Спасибо сказали: 24 раз
Рейтинг: 0

Цитата(Murano @ 25.09.17, 14:26) *
1. Она есть, но мне нужно в ней с запроса данные во вложенный запрос вставить только, да?

Вы суслика видишь? Я нет, а он есть))))
Скинь файл обработки я гляну

зы. А сам отчет что-то на экран выводит? какие-то данные?

Спасибо сказали: Murano,

Murano Подменю пользователя
сообщение 25.09.17, 13:38
Сообщение #15

Общительный
**
Группа: Пользователи
Сообщений: 32
Спасибо сказали: 0 раз
Рейтинг: 0

salton @ Сегодня, 14:32 * ,
09000000.gif
Чувствую себя как в первый раз на высшей математике

Murano Подменю пользователя
сообщение 27.09.17, 11:55
Сообщение #16

Общительный
**
Группа: Пользователи
Сообщений: 32
Спасибо сказали: 0 раз
Рейтинг: 0

Доброго времени суток. Имеется обработка для выгрузки прайс-листа в yml файл, а как сделать чтобы вторым рядком в нем было
<!DOCTYPE yml_catalog SYSTEM "shops.dtd">
как по стандарту?

logist Подменю пользователя
сообщение 27.09.17, 12:10
Сообщение #17

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

    ЗаписьXML = Новый ЗаписьXML;
    ЗаписьXML.УстановитьСтроку("Чего-то там в первой строке");  
    ЗаписьXML.УстановитьСтроку("<!DOCTYPE yml_catalog SYSTEM ""shops.dtd"">");


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 01.11.24, 1:56
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!