|
Тормозит обмен УТ <->БП | ☑ | ||
---|---|---|---|---|
0
Альбатрос
23.07.14
✎
12:41
|
Мужики, такая проблем. Две базы, УТ10.3 и БП2.0, обмен через файловый ресурс. С УТ выгрузка данных проходит норм, 2 - 3 мин. С БП же... При выгрузке ~4000 элементов база виснет на 2-2,5 часа. Замер производительности показал узкое место = Выполнить(Конвертация.ПередВыгрузкойДанных);.
Теперь код обработчика: Если НЕ Параметры.ПервыйОбмен Тогда Параметры.Вставить("ДатаНачалаВыгрузкиДокументов",УзелДляОбмена.ДатаНачалаВыгрузкиДокументов); Параметры.Вставить("ИспользоватьФильтрПоОрганизациям",?(УзелДляОбмена.Организации.Количество()>0,Истина,Ложь)); Если Параметры.ИспользоватьФильтрПоОрганизациям Тогда Параметры.Вставить("МассивОрганизаций",УзелДляОбмена.Организации.Выгрузить().ВыгрузитьКолонку("Организация")); КонецЕсли; МассивТиповДокументов = Новый Массив; Для каждого МетаДокумент Из Метаданные.Документы цикл МассивТиповДокументов.Добавить(Тип("ДокументСсылка." + МетаДокумент.Имя)); МассивТиповДокументов.Добавить(Тип("ДокументОбъект." + МетаДокумент.Имя)); КонецЦикла; ОписаниеТиповДокументы = Новый ОписаниеТипов(МассивТиповДокументов); Параметры.Вставить("ОписаниеТиповДокументы",ОписаниеТиповДокументы); МассивТиповДокументов.Очистить(); МассивТиповДокументов.Добавить(Тип("ДокументСсылка.СчетФактураВыданный")); МассивТиповДокументов.Добавить(Тип("ДокументСсылка.СчетФактураПолученный")); МассивТиповДокументов.Добавить(Тип("ДокументОбъект.СчетФактураПолученный")); МассивТиповДокументов.Добавить(Тип("ДокументОбъект.СчетФактураВыданный")); ОписаниеТиповДокументы = Новый ОписаниеТипов(МассивТиповДокументов); Параметры.Вставить("ОписаниеТиповДокументыСФ",ОписаниеТиповДокументы); КонецЕсли; ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Ниже следующий запрос получает документы "Поступление товаров и услуг", "Возврат товаров поставщику" // // и помещает в параметр ДокументыПоступленияТоваровВыгрузкаСсылки // // В конвертации этот параметр анализируется в алгоритме ВыгрузкаДокументовРасчетовПоСсылке, ПКО "ВозвартТоваровПоставщикуНТТ" и ПКО "ПоступлениеТоваровУслугНТТ". // // Документы отбирваются по следующей логике. // // Склад в документе должен быть не оптовый // // В учетной политике организации "способ ведения товаров в рознице" должен быть равен ПоПродажнойСтоимости // // Вид договора контрагента должен быть с поставщиком // // Самый главный отбор, это документ должен быть не "родным", а созданным в базе приемнике (УТ) // // Список этих документов необходим когда происходит выгрузка документов по ссылке и чтобы назад была выгружена только ссылка // // Необходимо для поддержания логических цепочек бизнес процесса, например такого как "Документы расчетов". // ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// Запрос = Новый Запрос(); Запрос.Текст = " |ВЫБРАТЬ | ВозвратТоваровПоставщику.Ссылка КАК ДокументПоступленияВозврата, | ВозвратТоваровПоставщику.Организация КАК Организация, | ВозвратТоваровПоставщику.Дата КАК Дата |ПОМЕСТИТЬ ДокументыПоступленияВозврата |ИЗ | Справочник.Склады КАК Склады |ВНУТРЕННЕЕ СОЕДИНЕНИЕ | Документ.ВозвратТоваровПоставщику КАК ВозвратТоваровПоставщику |ПО | ВозвратТоваровПоставщику.Склад = Склады.Ссылка |ВНУТРЕННЕЕ СОЕДИНЕНИЕ | Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов |ПО | ВозвратТоваровПоставщику.ДоговорКонтрагента = ДоговорыКонтрагентов.Ссылка | |ГДЕ | ДоговорыКонтрагентов.ВидДоговора = ЗНАЧЕНИЕ(Перечисление.ВидыДоговоровКонтрагентов.СПоставщиком) | И ВозвратТоваровПоставщику.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийВозвратТоваровПоставщику.ПокупкаКомиссия) | И (Склады.ВидСклада = ЗНАЧЕНИЕ(Перечисление.ВидыСкладов.НеавтоматизированнаяТорговаяТочка) | ИЛИ Склады.ВидСклада = ЗНАЧЕНИЕ(Перечисление.ВидыСкладов.Розничный)) | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | ПоступлениеТоваровУслуг.Ссылка КАК ДокументПоступленияВозврата, | ПоступлениеТоваровУслуг.Организация КАК Организация, | ПоступлениеТоваровУслуг.Дата КАК Дата |ИЗ | Справочник.Склады КАК Склады |ВНУТРЕННЕЕ СОЕДИНЕНИЕ | Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг |ПО | ПоступлениеТоваровУслуг.Склад = Склады.Ссылка |ВНУТРЕННЕЕ СОЕДИНЕНИЕ | Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов |ПО | ПоступлениеТоваровУслуг.ДоговорКонтрагента = ДоговорыКонтрагентов.Ссылка | |ГДЕ | ДоговорыКонтрагентов.ВидДоговора = ЗНАЧЕНИЕ(Перечисление.ВидыДоговоровКонтрагентов.СПоставщиком) | И ПоступлениеТоваровУслуг.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийПоступлениеТоваровУслуг.ПокупкаКомиссия) | И (Склады.ВидСклада = ЗНАЧЕНИЕ(Перечисление.ВидыСкладов.НеавтоматизированнаяТорговаяТочка) | ИЛИ Склады.ВидСклада = ЗНАЧЕНИЕ(Перечисление.ВидыСкладов.Розничный)) |ИНДЕКСИРОВАТЬ ПО | ДокументПоступленияВозврата |; | | |ВЫБРАТЬ | ДокументыПоступленияВозврата.ДокументПоступленияВозврата КАК ДокументПоступленияВозврата, | ДокументыПоступленияВозврата.Организация КАК Организация, | ДокументыПоступленияВозврата.Дата КАК Дата |ПОМЕСТИТЬ ФильтрПоОбъектыИнформационныхБаз |ИЗ | ДокументыПоступленияВозврата КАК ДокументыПоступленияВозврата |ВНУТРЕННЕЕ СОЕДИНЕНИЕ | РегистрСведений.ОбъектыИнформационныхБаз КАК ОбъектыИнформационныхБаз |ПО | ДокументыПоступленияВозврата.ДокументПоступленияВозврата = ВЫРАЗИТЬ(ОбъектыИнформационныхБаз.Объект КАК Документ.ПоступлениеТоваровУслуг) | ИЛИ ДокументыПоступленияВозврата.ДокументПоступленияВозврата = ВЫРАЗИТЬ(ОбъектыИнформационныхБаз.Объект КАК Документ.ВозвратТоваровПоставщику) |ГДЕ | ОбъектыИнформационныхБаз.УзелОбмена = &УзелОбмена |ИНДЕКСИРОВАТЬ ПО | ДокументыПоступленияВозврата.Дата, ДокументыПоступленияВозврата.Организация |; | |ВЫБРАТЬ | УчетнаяПолитикаОрганизацийМаксимальныйПериод.ДокументПоступленияВозврата КАК ДокументПоступленияВозврата |ИЗ | РегистрСведений.УчетнаяПолитикаОрганизаций КАК УчетнаяПолитикаОрганизаций |ВНУТРЕННЕЕ СОЕДИНЕНИЕ |(ВЫБРАТЬ | МАКСИМУМ(УчетнаяПолитикаОрганизаций.Период) КАК Период, | УчетнаяПолитикаОрганизаций.Организация, | ФильтрПоОбъектыИнформационныхБаз.ДокументПоступленияВозврата КАК ДокументПоступленияВозврата |ИЗ | РегистрСведений.УчетнаяПолитикаОрганизаций КАК УчетнаяПолитикаОрганизаций |ВНУТРЕННЕЕ СОЕДИНЕНИЕ | ФильтрПоОбъектыИнформационныхБаз КАК ФильтрПоОбъектыИнформационныхБаз |ПО | УчетнаяПолитикаОрганизаций.Период <= ФильтрПоОбъектыИнформационныхБаз.Дата | И УчетнаяПолитикаОрганизаций.Организация = ФильтрПоОбъектыИнформационныхБаз.Организация |СГРУППИРОВАТЬ ПО | УчетнаяПолитикаОрганизаций.Организация, | ФильтрПоОбъектыИнформационныхБаз.ДокументПоступленияВозврата |) КАК УчетнаяПолитикаОрганизацийМаксимальныйПериод |ПО | УчетнаяПолитикаОрганизацийМаксимальныйПериод.Организация = УчетнаяПолитикаОрганизаций.Организация | И УчетнаяПолитикаОрганизацийМаксимальныйПериод.Период = УчетнаяПолитикаОрганизаций.Период |ГДЕ | УчетнаяПолитикаОрганизаций.СпособОценкиТоваровВРознице = ЗНАЧЕНИЕ(Перечисление.СпособыОценкиТоваровВРознице.ПоПродажнойСтоимости) |"; Запрос.УстановитьПараметр("УзелОбмена", УзелДляОбмена.Ссылка); ТаблицаДокументыПоступленияВозвратаТоваровВыгрузкаСсылки = Запрос.Выполнить().Выгрузить(); ТаблицаДокументыПоступленияВозвратаТоваровВыгрузкаСсылки.Индексы.Добавить("ДокументПоступленияВозврата"); Параметры.ДокументыПоступленияВозвратаТоваровВыгрузкаСсылки = ТаблицаДокументыПоступленияВозвратаТоваровВыгрузкаСсылки; // Документы расчетов (БП зачет аванса), несовместимые типы документов. // Обмен не поддерживается. СтруктураНевыгружаемыхДокументовРасчетов = Новый Структура(); // СписаниеСРасчетногоСчета Массив = Новый Массив(); Массив.Добавить(Тип("ДокументСсылка.ОтчетКомитентуОПродажах")); Массив.Добавить(Тип("ДокументСсылка.РеализацияТоваровУслуг")); Массив.Добавить(Тип("ДокументСсылка.ОтчетКомиссионераОПродажах")); СтруктураНевыгружаемыхДокументовРасчетов.Вставить("СписаниеСРасчетногоСчета", Массив); // ПоступлениеНаРасчетныйСчет Массив = Новый Массив(); Массив.Добавить(Тип("ДокументСсылка.ПоступлениеДопРасходов")); Массив.Добавить(Тип("ДокументСсылка.ПоступлениеНаРасчетныйСчет")); Массив.Добавить(Тип("ДокументСсылка.ПоступлениеТоваровУслуг")); СтруктураНевыгружаемыхДокументовРасчетов.Вставить("ПоступлениеНаРасчетныйСчет", Массив); // ПоступлениеТоваровУслуг Массив = Новый Массив(); Массив.Добавить(Тип("ДокументСсылка.ПриходныйКассовыйОрдер")); Массив.Добавить(Тип("ДокументСсылка.ПоступлениеДопРасходов")); Массив.Добавить(Тип("ДокументСсылка.ОтчетКомитентуОПродажах")); Массив.Добавить(Тип("ДокументСсылка.ПоступлениеНаРасчетныйСчет")); Массив.Добавить(Тип("ДокументСсылка.ОтчетКомиссионераОПродажах")); Массив.Добавить(Тип("ДокументСсылка.РеализацияТоваровУслуг")); Массив.Добавить(Тип("ДокументСсылка.ПередачаОС")); Массив.Добавить(Тип("ДокументСсылка.АктОбОказанииПроизводственныхУслуг")); СтруктураНевыгружаемыхДокументовРасчетов.Вставить("ПоступлениеТоваровУслуг", Массив); // ПриходныйКассовыйОрдер Массив = Новый Массив(); Массив.Добавить(Тип("ДокументСсылка.ВозвратТоваровОтПокупателя")); Массив.Добавить(Тип("ДокументСсылка.ПриходныйКассовыйОрдер")); Массив.Добавить(Тип("ДокументСсылка.ПоступлениеДопРасходов")); Массив.Добавить(Тип("ДокументСсылка.ПоступлениеНаРасчетныйСчет")); Массив.Добавить(Тип("ДокументСсылка.ОтчетКомитентуОПродажах")); Массив.Добавить(Тип("ДокументСсылка.ВыдачаДенежныхДокументов")); Массив.Добавить(Тип("ДокументСсылка.ПоступлениеДенежныхДокументов")); Массив.Добавить(Тип("ДокументСсылка.ПоступлениеИзПереработки")); Массив.Добавить(Тип("ДокументСсылка.РеализацияУслугПоПереработке")); Массив.Добавить(Тип("ДокументСсылка.ОтражениеНачисленияНДС")); Массив.Добавить(Тип("ДокументСсылка.ОтражениеНДСКВычету")); СтруктураНевыгружаемыхДокументовРасчетов.Вставить("ПриходныйКассовыйОрдер", Массив); // РасходныйКассовыйОрдер Массив = Новый Массив(); Массив.Добавить(Тип("ДокументСсылка.ВозвратТоваровПоставщику")); Массив.Добавить(Тип("ДокументСсылка.СписаниеСРасчетногоСчета")); Массив.Добавить(Тип("ДокументСсылка.РасходныйКассовыйОрдер")); Массив.Добавить(Тип("ДокументСсылка.ВыдачаДенежныхДокументов")); Массив.Добавить(Тип("ДокументСсылка.ПоступлениеДенежныхДокументов")); Массив.Добавить(Тип("ДокументСсылка.ПоступлениеИзПереработки")); Массив.Добавить(Тип("ДокументСсылка.РеализацияУслугПоПереработке")); Массив.Добавить(Тип("ДокументСсылка.ОтражениеНачисленияНДС")); Массив.Добавить(Тип("ДокументСсылка.ОтражениеНДСКВычету")); СтруктураНевыгружаемыхДокументовРасчетов.Вставить("РасходныйКассовыйОрдер", Массив); // РеализацияТоваровУслуг Массив = Новый Массив(); Массив.Добавить(Тип("ДокументСсылка.СписаниеСРасчетногоСчета")); Массив.Добавить(Тип("ДокументСсылка.ПоступлениеДопРасходов")); Массив.Добавить(Тип("ДокументСсылка.РасходныйКассовыйОрдер")); Массив.Добавить(Тип("ДокументСсылка.ОтчетКомитентуОПродажах")); Массив.Добавить(Тип("ДокументСсылка.ПоступлениеТоваровУслуг")); Массив.Добавить(Тип("ДокументСсылка.ОтчетКомиссионераОПродажах")); Массив.Добавить(Тип("ДокументСсылка.АвансовыйОтчет")); СтруктураНевыгружаемыхДокументовРасчетов.Вставить("РеализацияТоваровУслуг", Массив); // ПоступлениеДопРасходов Массив = Новый Массив(); Массив.Добавить(Тип("ДокументСсылка.ПриходныйКассовыйОрдер")); Массив.Добавить(Тип("ДокументСсылка.ПоступлениеДопРасходов")); Массив.Добавить(Тип("ДокументСсылка.ПоступлениеНаРасчетныйСчет")); Массив.Добавить(Тип("ДокументСсылка.ОтчетКомитентуОПродажах")); Массив.Добавить(Тип("ДокументСсылка.ОтчетКомиссионераОПродажах")); Массив.Добавить(Тип("ДокументСсылка.РеализацияТоваровУслуг")); Массив.Добавить(Тип("ДокументСсылка.АктОбОказанииПроизводственныхУслуг")); Массив.Добавить(Тип("ДокументСсылка.ПередачаОС")); Массив.Добавить(Тип("ДокументСсылка.АктОбОказанииПроизводственныхУслуг")); СтруктураНевыгружаемыхДокументовРасчетов.Вставить("ПоступлениеДопРасходов", Массив); // ОтчетКомиссионераОПродажах Массив = Новый Массив(); Массив.Добавить(Тип("ДокументСсылка.СписаниеСРасчетногоСчета")); Массив.Добавить(Тип("ДокументСсылка.ПоступлениеДопРасходов")); Массив.Добавить(Тип("ДокументСсылка.РасходныйКассовыйОрдер")); Массив.Добавить(Тип("ДокументСсылка.ПоступлениеТоваровУслуг")); Массив.Добавить(Тип("ДокументСсылка.ОтчетКомитентуОПродажах")); Массив.Добавить(Тип("ДокументСсылка.ОтчетКомиссионераОПродажах")); Массив.Добавить(Тип("ДокументСсылка.АвансовыйОтчет")); СтруктураНевыгружаемыхДокументовРасчетов.Вставить("ОтчетКомиссионераОПродажах", Массив); // КорректировкаДолга Массив = Новый Массив(); Массив.Добавить(Тип("ДокументСсылка.ГТДИмпорт")); Массив.Добавить(Тип("ДокументСсылка.ВыдачаДенежныхДокументов")); Массив.Добавить(Тип("ДокументСсылка.ПоступлениеДенежныхДокументов")); Массив.Добавить(Тип("ДокументСсылка.ПоступлениеИзПереработки")); Массив.Добавить(Тип("ДокументСсылка.РеализацияУслугПоПереработке")); Массив.Добавить(Тип("ДокументСсылка.ОтражениеНачисленияНДС")); Массив.Добавить(Тип("ДокументСсылка.ОтражениеНДСКВычету")); СтруктураНевыгружаемыхДокументовРасчетов.Вставить("КорректировкаДолга", Массив); /////////////// Параметры.СтруктураНевыгружаемыхДокументовРасчетов = СтруктураНевыгружаемыхДокументовРасчетов; Собссна, посоветуйте, что можно изменить без потерь в данных? |
|||
1
Альбатрос
23.07.14
✎
12:53
|
Что мне грозит, если я обнулю программный текст обработчика?
|
|||
2
Альбатрос
23.07.14
✎
12:54
|
Смысл его мне не ясен
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |