Есть ли возможно ограничить количество выгружаемых элементов в КД?
Доброго времени суток.
Тестирую правила обмена номенклатуры.
И приходится ждать где то по два часа пока они выгрузятся, в связи с этим возникает вопрос, а можно ли как то ограничить количество выгружаемых элементов в КД? Чтобы грузил не 400000 объектов, а скажем пару сотен, для проверки ошибок вполне достаточно будет.
Тестирую правила обмена номенклатуры.
И приходится ждать где то по два часа пока они выгрузятся, в связи с этим возникает вопрос, а можно ли как то ограничить количество выгружаемых элементов в КД? Чтобы грузил не 400000 объектов, а скажем пару сотен, для проверки ошибок вполне достаточно будет.
По теме из базы знаний
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(3) Проблемы с выгрузкой или загрузкой?
Львиная доля времени связана с записью в файл, а количество объектов в выборке - ну как уже субд отработает. Можно и в ПВД написать свой запрос с условием ПЕРВЫЕ 200, но это надо правила менять. Если используете УниверсальныйОбменXML, там проще отборы поставить
Львиная доля времени связана с записью в файл, а количество объектов в выборке - ну как уже субд отработает. Можно и в ПВД написать свой запрос с условием ПЕРВЫЕ 200, но это надо правила менять. Если используете УниверсальныйОбменXML, там проще отборы поставить
делали не давно. когда делаешь правила выгрузки. делаешь произвольный алгоритм и выбираешь запросом ПЕРВЫЕ 100. а при переборе результата запроса вызываешь что-то типа "ВыгрузитьПоПравилу(Выборка.Ссылка, "ПравилоНоменклатура")". точнее посмотреть можно в описание, справки в КД.
Вот пример выборки произвольным алгоритмом (с помощью запроса)
По аналогии можете сделать любой запрос, в ИмяПКО передать нужное правило конвертации
Отказ = Истина;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЗаказКлиента.Ссылка
|ИЗ
| Документ.ЗаказКлиента КАК ЗаказКлиента
|ГДЕ
| ЗаказКлиента.Организация.ИНН = &ИНН
| И ЗаказКлиента.Проведен = Истина
| И ЗаказКлиента.Дата МЕЖДУ &ДатаНач И &ДатаКон";
Запрос.УстановитьПараметр("ДатаКон", Параметры.ДатаОкончания);
Запрос.УстановитьПараметр("ДатаНач", Параметры.ДатаНачала);
Запрос.УстановитьПараметр("ИНН", Параметры.ОснОрганизация);
Результат = Запрос.Выполнить().Выгрузить();
Для Каждого ТекСтрока ИЗ Результат Цикл
Сообщить( "Обрабатываем строку результата запроса № " + Результат.Индекс(ТекСтрока) );
пУзелСсылки = Неопределено;
ИмяПКО = "СчетНаОплатуПокупателю";
ПКО = Неопределено;
ВыгрузитьПоПравилу(ТекСтрока.Ссылка, , , , ИмяПКО, пУзелСсылки, , ПКО);
КонецЦикла;
ПоказатьПо аналогии можете сделать любой запрос, в ИмяПКО передать нужное правило конвертации
(9) а можно ли туда параметры передать при программном вызове? Никак не видит, в ПКО нормально видит
// Выполним выгрузку по правилам обмена
Обработка = Обработки.УниверсальныйОбменДаннымиXML.Создать();
Обработка.РежимОбмена = "Выгрузка";
Обработка.ВыводВОкноСообщенийИнформационныхСообщений = Ложь;
ИмяФайлаПравил = ПолучитьИмяВременногоФайла("xml");
Макет = Об.ПолучитьМакет("ПравилаВыгрузки");
Макет.Записать(ИмяФайлаПравил);
Обработка.ИмяФайлаПравилОбмена = ИмяФайлаПравил;
ИмяФайлаОбмена = ПолучитьИмяВременногоФайла("xml");
Обработка.ИмяФайлаОбмена = ИмяФайлаОбмена;
<u>Обработка.Параметры.Вставить("СписокДокументов", СписокДокументовВыгрузки);</u>
Обработка.ЗагрузитьПравилаОбмена();
Обработка.ВыполнитьВыгрузку();
Показать
(10) Да,можно. Вот для примера:
Далее в самом ПВД
ДатаВыгрузки = ТекущаяДата();
Запрос = Новый Запрос;
МенеджерВТ = Новый МенеджерВременныхТаблиц;
Запрос.МенеджерВременныхТаблиц = МенеджерВТ;
Запрос.Текст = "ВЫБРАТЬ
| Строки.СсылкаНаДокумент КАК СсылкаНаДокумент,
| Строки.КонтрагентДокумента КАК КонтрагентДокумента
|ПОМЕСТИТЬ ВтСтроки
|ИЗ
| &Строки КАК Строки
| Где Строки.Выгружать = Истина
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ВтСтроки.СсылкаНаДокумент КАК СсылкаНаДокумент,
| ВтСтроки.КонтрагентДокумента
|ИЗ
| ВтСтроки КАК ВтСтроки
|ИТОГИ ПО
| ВтСтроки.КонтрагентДокумента";
Запрос.УстановитьПараметр("Строки", тч);
ВыборкаКонтрагенты = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаКонтрагенты.Следующий() Цикл
пКонтрагент = ВыборкаКонтрагенты.КонтрагентДокумента;
ОбработкаОбмена = Обработки.УниверсальныйОбменДаннымиXML.Создать();
ОбработкаОбмена.РежимОбмена = "Выгрузка";
ИмяБезКаталога = СформироватьИмяФайлаВыгрузки(пКонтрагент, ДатаВыгрузки);
ИмяФайлаОбмена = КаталогВременныхФайлов() + ИмяБезКаталога;
ОбработкаОбмена.ИмяФайлаОбмена = ИмяФайлаОбмена;
ОбработкаОбмена.ИмяФайлаПравилОбмена = ИмяФайлаПравилОбмена;
ОбработкаОбмена.ЗагрузитьПравилаОбмена();
Сообщить("Контрагент "+ пКонтрагент+ ", Файл обмена " + ИмяФайлаОбмена);
ВыборкаСсылки = ВыборкаКонтрагенты.Выбрать();
СписокДокументов = Новый Массив;
Пока ВыборкаСсылки.Следующий() Цикл
СписокДокументов.Добавить(ВыборкаСсылки.СсылкаНаДокумент);
Сообщить("документ " + ВыборкаСсылки.СсылкаНаДокумент);
КонецЦикла;
ТаблицаНастройкиПараметров = ОбработкаОбмена.ТаблицаНастройкиПараметров.Добавить();
ТаблицаНастройкиПараметров.Имя = "МассивДокументов";
ТаблицаНастройкиПараметров.Наименование = "МассивДокументов";
ТаблицаНастройкиПараметров.Значение = СписокДокументов;
ОбработкаОбмена.ВыполнитьВыгрузку();
Сообщить("имя файла " + ИмяФайлаОбмена);
СкопироватьНаФтп(ftp, ИмяФайлаОбмена, ИмяБезКаталога);
КонецЦикла;
ПоказатьДалее в самом ПВД
// Сообщить("тип "+ ТипЗнч(Параметры.МассивДокументов));
ПКО = Неопределено;
пУзелСсылки = Неопределено;
Для Каждого Док ИЗ Параметры.МассивДокументов Цикл
Сообщить("Выгружается объект " + Док);
Если ТипЗнч(Док) = Тип("ДокументСсылка.ПередачаТоваров") Тогда
тзТовары = Док.Товары.Выгрузить();
тзТовары.Свернуть("Номенклатура", "Количество");
пВходящиеДанные = Новый Структура;
пВходящиеДанные.Вставить("Товары", тзТовары);
ВыгрузитьПоПравилу(Док, ,пВходящиеДанные , , "ПередачаТоваровВПоступлениеВПереработку", пУзелСсылки, , ПКО);
ИначеЕсли ТипЗнч(Док) = Тип("ДокументСсылка.ПоступлениеИзПереработки") Тогда
Если Док.ВозвращенныеМатериалы.Количество()>0 Тогда
ВыгрузитьПоПравилу(Док, , , , "ПоступлениеИзПереработкиВВозвратПоставщику", пУзелСсылки, , ПКО);
ИначеЕсли Док.ИспользованныеМатериалы.Количество()>0 Тогда
ВыгрузитьПоПравилу(Док, , , , "ПоступлениеИзПереработкиВТребованиеНакладная", пУзелСсылки, , ПКО);
ВыгрузитьПоПравилу(Док, , , , "ПоступлениеПереработкаВРеализацияПоПереработке", пУзелСсылки, , ПКО);
КонецЕсли;
КонецЕсли;
//ПоступлениеИзПереработки ПоступлениеИзПереработкиВВозвратПоставщику
КонецЦикла;
ПоказатьПрикрепленные файлы:

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