Есть ли возможно ограничить количество выгружаемых элементов в КД?

1. D_e_X_T_e_R 575 11.10.18 07:57 Сейчас в теме
Доброго времени суток.

Тестирую правила обмена номенклатуры.

И приходится ждать где то по два часа пока они выгрузятся, в связи с этим возникает вопрос, а можно ли как то ограничить количество выгружаемых элементов в КД? Чтобы грузил не 400000 объектов, а скажем пару сотен, для проверки ошибок вполне достаточно будет.
По теме из базы знаний
Найденные решения
4. DmitriyPopow 33 11.10.18 08:37 Сейчас в теме
делали не давно. когда делаешь правила выгрузки. делаешь произвольный алгоритм и выбираешь запросом ПЕРВЫЕ 100. а при переборе результата запроса вызываешь что-то типа "ВыгрузитьПоПравилу(Выборка.Ссылка, "ПравилоНоменклатура")". точнее посмотреть можно в описание, справки в КД.
D_e_X_T_e_R; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Dream_kz 129 11.10.18 08:18 Сейчас в теме
(1) Отборы поставить при выгрузке
3. D_e_X_T_e_R 575 11.10.18 08:27 Сейчас в теме
(2)Типа если не соответствует отбору то отказ?
А разве при этом он не будет все равно перебирать все элементы, чтобы проверить условие отбора?
6. Dream_kz 129 11.10.18 08:39 Сейчас в теме
(3) Проблемы с выгрузкой или загрузкой?
Львиная доля времени связана с записью в файл, а количество объектов в выборке - ну как уже субд отработает. Можно и в ПВД написать свой запрос с условием ПЕРВЫЕ 200, но это надо правила менять. Если используете УниверсальныйОбменXML, там проще отборы поставить
D_e_X_T_e_R; +1 Ответить
4. DmitriyPopow 33 11.10.18 08:37 Сейчас в теме
делали не давно. когда делаешь правила выгрузки. делаешь произвольный алгоритм и выбираешь запросом ПЕРВЫЕ 100. а при переборе результата запроса вызываешь что-то типа "ВыгрузитьПоПравилу(Выборка.Ссылка, "ПравилоНоменклатура")". точнее посмотреть можно в описание, справки в КД.
D_e_X_T_e_R; +1 Ответить
5. DmitriyPopow 33 11.10.18 08:39 Сейчас в теме
а потом как отладите, убрать Первые 100
7. maks_20 169 11.10.18 09:03 Сейчас в теме
Вот пример выборки произвольным алгоритмом (с помощью запроса)

  Отказ = Истина;

  Запрос = Новый Запрос;
  Запрос.Текст = 
  "ВЫБРАТЬ
|    ЗаказКлиента.Ссылка
|ИЗ
|    Документ.ЗаказКлиента КАК ЗаказКлиента
|ГДЕ
|    ЗаказКлиента.Организация.ИНН = &ИНН
|    И ЗаказКлиента.Проведен = Истина
|    И ЗаказКлиента.Дата МЕЖДУ &ДатаНач И &ДатаКон";
  
  Запрос.УстановитьПараметр("ДатаКон", Параметры.ДатаОкончания);
  Запрос.УстановитьПараметр("ДатаНач", Параметры.ДатаНачала);
  Запрос.УстановитьПараметр("ИНН", Параметры.ОснОрганизация);
  Результат = Запрос.Выполнить().Выгрузить();
  Для Каждого ТекСтрока ИЗ Результат Цикл
      Сообщить( "Обрабатываем строку результата запроса № " + Результат.Индекс(ТекСтрока) );
      пУзелСсылки    = Неопределено;
      ИмяПКО        = "СчетНаОплатуПокупателю";
      ПКО = Неопределено;
      ВыгрузитьПоПравилу(ТекСтрока.Ссылка, , , , ИмяПКО, пУзелСсылки, , ПКО);
  КонецЦикла;
Показать


По аналогии можете сделать любой запрос, в ИмяПКО передать нужное правило конвертации
D_e_X_T_e_R; +1 Ответить 4
8. scanner1980 265 23.09.24 17:17 Сейчас в теме
(7) Делаем на закладке Правила выгрузки данных в ПВО? Перед обработкой?
9. maks_20 169 25.09.24 15:27 Сейчас в теме
(8) Да, все верно: вкладка Правила выгрузки данных, Перед обработкой. Способ выборки - произвольный алгоритм.
10. scanner1980 265 25.09.24 16:36 Сейчас в теме
(9) а можно ли туда параметры передать при программном вызове? Никак не видит, в ПКО нормально видит

// Выполним выгрузку по правилам обмена
    Обработка = Обработки.УниверсальныйОбменДаннымиXML.Создать();
     Обработка.РежимОбмена = "Выгрузка";
     Обработка.ВыводВОкноСообщенийИнформационныхСообщений = Ложь;
    ИмяФайлаПравил = ПолучитьИмяВременногоФайла("xml");
    
    Макет = Об.ПолучитьМакет("ПравилаВыгрузки");
    Макет.Записать(ИмяФайлаПравил);
    
    Обработка.ИмяФайлаПравилОбмена = ИмяФайлаПравил;
    
    ИмяФайлаОбмена = ПолучитьИмяВременногоФайла("xml");
     Обработка.ИмяФайлаОбмена = ИмяФайлаОбмена;
    
    <u>Обработка.Параметры.Вставить("СписокДокументов", СписокДокументовВыгрузки);</u>

     Обработка.ЗагрузитьПравилаОбмена(); 
    
    Обработка.ВыполнитьВыгрузку();
Показать
11. maks_20 169 26.09.24 10:38 Сейчас в теме
(10) Да,можно. Вот для примера:

ДатаВыгрузки = ТекущаяДата(); 
        
        Запрос = Новый Запрос;
        МенеджерВТ = Новый МенеджерВременныхТаблиц;
        Запрос.МенеджерВременныхТаблиц = МенеджерВТ;
        Запрос.Текст = "ВЫБРАТЬ
                       |    Строки.СсылкаНаДокумент КАК СсылкаНаДокумент,
                       |    Строки.КонтрагентДокумента КАК КонтрагентДокумента
                       |ПОМЕСТИТЬ ВтСтроки
                       |ИЗ
                       |    &Строки КАК Строки
                       | Где Строки.Выгружать = Истина
                       |;
                       |
                       |////////////////////////////////////////////////////////////­////////////////////
                       |ВЫБРАТЬ
                       |    ВтСтроки.СсылкаНаДокумент КАК СсылкаНаДокумент,
                       |    ВтСтроки.КонтрагентДокумента
                       |ИЗ
                       |    ВтСтроки КАК ВтСтроки
                       |ИТОГИ ПО
                       |    ВтСтроки.КонтрагентДокумента";
        Запрос.УстановитьПараметр("Строки", тч);
        ВыборкаКонтрагенты = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
        
    
        Пока ВыборкаКонтрагенты.Следующий() Цикл
            пКонтрагент = ВыборкаКонтрагенты.КонтрагентДокумента;
            ОбработкаОбмена = Обработки.УниверсальныйОбменДаннымиXML.Создать();
            ОбработкаОбмена.РежимОбмена = "Выгрузка";
            ИмяБезКаталога = СформироватьИмяФайлаВыгрузки(пКонтрагент, ДатаВыгрузки);
            ИмяФайлаОбмена = КаталогВременныхФайлов() +  ИмяБезКаталога;
            ОбработкаОбмена.ИмяФайлаОбмена  = ИмяФайлаОбмена;
            ОбработкаОбмена.ИмяФайлаПравилОбмена  = ИмяФайлаПравилОбмена;
            ОбработкаОбмена.ЗагрузитьПравилаОбмена();

            Сообщить("Контрагент "+ пКонтрагент+ ", Файл обмена " + ИмяФайлаОбмена);
            ВыборкаСсылки = ВыборкаКонтрагенты.Выбрать();        
            СписокДокументов = Новый Массив;
            Пока ВыборкаСсылки.Следующий() Цикл
                СписокДокументов.Добавить(ВыборкаСсылки.СсылкаНаДокумент);
                Сообщить("документ " + ВыборкаСсылки.СсылкаНаДокумент);
            КонецЦикла;
            
            ТаблицаНастройкиПараметров = ОбработкаОбмена.ТаблицаНастройкиПараметров.Добавить();
            ТаблицаНастройкиПараметров.Имя = "МассивДокументов";
            ТаблицаНастройкиПараметров.Наименование = "МассивДокументов";
            ТаблицаНастройкиПараметров.Значение = СписокДокументов;
            
            ОбработкаОбмена.ВыполнитьВыгрузку();
            Сообщить("имя файла " +  ИмяФайлаОбмена);
            СкопироватьНаФтп(ftp, ИмяФайлаОбмена, ИмяБезКаталога);
        КонецЦикла;
Показать


Далее в самом ПВД

// Сообщить("тип "+ ТипЗнч(Параметры.МассивДокументов));
 ПКО = Неопределено;
 пУзелСсылки    = Неопределено;
 Для Каждого Док ИЗ Параметры.МассивДокументов Цикл     
    Сообщить("Выгружается объект " + Док); 
    Если ТипЗнч(Док) = Тип("ДокументСсылка.ПередачаТоваров") Тогда 
        тзТовары = Док.Товары.Выгрузить();
        тзТовары.Свернуть("Номенклатура", "Количество");    
        пВходящиеДанные = Новый Структура;
        пВходящиеДанные.Вставить("Товары", тзТовары);
        ВыгрузитьПоПравилу(Док, ,пВходящиеДанные , , "ПередачаТоваровВПоступлениеВПереработку", пУзелСсылки, , ПКО);
    ИначеЕсли ТипЗнч(Док) = Тип("ДокументСсылка.ПоступлениеИзПереработки") Тогда
        Если Док.ВозвращенныеМатериалы.Количество()>0 Тогда
            ВыгрузитьПоПравилу(Док, , , , "ПоступлениеИзПереработкиВВозвратПоставщику", пУзелСсылки, , ПКО);
        ИначеЕсли Док.ИспользованныеМатериалы.Количество()>0 Тогда
            ВыгрузитьПоПравилу(Док, , , , "ПоступлениеИзПереработкиВТребованиеНакладная", пУзелСсылки, , ПКО);
            ВыгрузитьПоПравилу(Док, , , , "ПоступлениеПереработкаВРеализацияПоПереработке", пУзелСсылки, , ПКО); 
        КонецЕсли;
    КонецЕсли;
//ПоступлениеИзПереработки  ПоступлениеИзПереработкиВВозвратПоставщику
КонецЦикла;
Показать
Прикрепленные файлы:
scanner1980; +1 Ответить
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот