sidsukana
Newbie | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Добрый день! Столкнулись с проблемой - в документе "Начисление зарплаты сотрудникам организаций", когда выбираешь сотрудника подбором, заполняешь автоматически или делаешь расчет зарплаты, в коде создается проверочный набор записей для регистра расчета "Основные начисления сотрудников организаций", который записывается в него, а потом удаляется. Так вот когда происходит запись - платформа висит буквально минут по 5, а то и больше. И не важно по одному человеку делается расчет или по 100. Не ужели это баг платформы? Может кто сталкивался и посоветует решение? Платформа 8.3.5 1088 Конфигурация УПП 1.3.54.2, клиент-серверный варинт. Сервер базы на Postgres. Пример кода на участке которого платформа зависает на несколько минут: Код: Если ВидОперации <> Перечисления.ВидыОперацийНачислениеЗарплатыРаботникамОрганизаций.РасчетНДФЛ Тогда НачатьТранзакцию(); НаборЗаписейДляПроверки.ОбменДанными.Загрузка = Истина; // !!! ТУТ НЕ ОЧЕНЬ ДЛИТЕЛЬНОЕ ЗАВИСАНИЕ !!! НаборЗаписейДляПроверки.Записать(Истина, Ложь, Истина, Ложь); ЗапросПроверки = Новый Запрос( "ВЫБРАТЬ | Начисления.Сотрудник, | Начисления.ВидРасчета, | Начисления.ДатаНачала, | Начисления.ДатаОкончания, | Начисления.НомерСтроки |ПОМЕСТИТЬ ВТНачисления |ИЗ &парамНачисления КАК Начисления |ИНДЕКСИРОВАТЬ ПО Сотрудник, ВидРасчета; | |ВЫБРАТЬ РАЗЛИЧНЫЕ | Начисления.НомерСтроки КАК НомерСтроки |ИЗ | РегистрРасчета.ОсновныеНачисленияРаботниковОрганизаций КАК ОсновныеНачисленияРаботниковОрганизации | ЛЕВОЕ СОЕДИНЕНИЕ РегистрРасчета.ОсновныеНачисленияРаботниковОрганизаций.ФактическийПериодДействия(Регистратор = &парамСсылка) КАК ОсновныеНачисленияРаботниковОрганизацииФактическийПериодДействия | ПО ОсновныеНачисленияРаботниковОрганизации.НомерСтроки = ОсновныеНачисленияРаботниковОрганизацииФактическийПериодДействия.НомерСтроки | И ОсновныеНачисленияРаботниковОрганизации.Регистратор = ОсновныеНачисленияРаботниковОрганизацииФактическийПериодДействия.Регистратор | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТНачисления КАК Начисления | ПО (Начисления.Сотрудник = ОсновныеНачисленияРаботниковОрганизации.Сотрудник) | И (Начисления.ВидРасчета = ОсновныеНачисленияРаботниковОрганизации.ВидРасчета) | И (Начисления.ДатаНачала = ОсновныеНачисленияРаботниковОрганизации.ПериодДействияНачало) | И (КОНЕЦПЕРИОДА(Начисления.ДатаОкончания, День) = КОНЕЦПЕРИОДА(ОсновныеНачисленияРаботниковОрганизации.ПериодДействияКонец, День)) |ГДЕ | ОсновныеНачисленияРаботниковОрганизации.Регистратор = &парамСсылка | И ОсновныеНачисленияРаботниковОрганизацииФактическийПериодДействия.Регистратор ЕСТЬ NULL | |УПОРЯДОЧИТЬ ПО | НомерСтроки УБЫВ"); ЗапросПроверки.УстановитьПараметр("парамСсылка", СcылкаОбъекта); ЗапросПроверки.УстановитьПараметр("парамНачисления", Начисления.Выгрузить()); СтрокиКУдалению = ЗапросПроверки.Выполнить().Выгрузить(); // удалим проверочный набор записей НаборЗаписейДляПроверки.Очистить(); // !!! ТУТ ДЛИТЕЛЬНОЕ ЗАВИСАНИЕ !!! НаборЗаписейДляПроверки.Записать(Истина, Ложь, Истина, Ложь); ЗафиксироватьТранзакцию(); Для Каждого СтрокаТЗ Из СтрокиКУдалению Цикл Начисления.Удалить(СтрокаТЗ.НомерСтроки - 1); КонецЦикла; КонецЕсли; |
|