Медленная запись в регистр расчета

1. 18.09.14 12:04 Сейчас в теме
Добрый день! Столкнулись с проблемой - в документе "Начисление зарплаты сотрудникам организаций", когда выбираешь сотрудника подбором, заполняешь автоматически или делаешь расчет зарплаты, в коде создается проверочный набор записей для регистра расчета "Основные начисления сотрудников организаций", который записывается в него, а потом удаляется. Так вот когда происходит запись - платформа висит буквально минут по 5, а то и больше. И не важно по одному человеку делается расчет или по 100. Не ужели это баг платформы? Может кто сталкивался и посоветует решение?

Платформа 8.3.5 1088 Конфигурация УПП 1.3.54.2, клиент-серверный варинт. Сервер базы на Postgres.

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

			
			ЗапросПроверки.УстановитьПараметр("парамСсылка", СcылкаОбъекта);
			ЗапросПроверки.УстановитьПараметр("парамНачисления", Начисления.Выгрузить());
			СтрокиКУдалению = ЗапросПроверки.Выполнить().Выгрузить();
			// удалим проверочный набор записей
			НаборЗаписейДляПроверки.Очистить();
// !!! ТУТ ДЛИТЕЛЬНОЕ ЗАВИСАНИЕ !!!
			НаборЗаписейДляПроверки.Записать(Истина, Ложь, Истина, Ложь);
			
			ЗафиксироватьТранзакцию();
			
			Для Каждого СтрокаТЗ Из СтрокиКУдалению Цикл
				Начисления.Удалить(СтрокаТЗ.НомерСтроки - 1);
			КонецЦикла;
			
		КонецЕсли;
Показать
Ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. Xershi 1140 18.09.14 12:46 Сейчас в теме
(1) sidsukana, если платформа виснет есть простое решение. Перед тем как нажать кнопку по которой все виснет в конфигураторе нажми замер производительности. А теперь жми кнопку зависания 1С и когда надоесть ждать в конфигураторе отожми кнопку замер производительности. Там будет ясно почему 1С зависает, удачи.
3. sidsukana 18.09.14 12:56 Сейчас в теме
4. Xershi 1140 18.09.14 13:24 Сейчас в теме
(3) sidsukana, теперь лезь в отладчик и смотри что не так с этой строкой.
5. sidsukana 18.09.14 13:28 Сейчас в теме
Что значит заходи в отладчик? Это функция платформы. Я в нее провалиться не могу. Может я чего-то не знаю о том как просмотреть что происходит внутри системных функций?
6. Xershi 1140 18.09.14 13:33 Сейчас в теме
(5) sidsukana, возможно это баг, возможно это глюк ПО на котором стоит. Отладчик это такая штука как ставить точку останова и когда происходит эжто событие включается особый режим Отладка. В котором проверяются функции, процедуры и прочее. Если это баг проверь баг трекер 1С.
7. sidsukana 18.09.14 13:51 Сейчас в теме
Ну так я и скинул скриншот с режима отладки :) В том то и дело что ничего нет, единственый пост от 2004 года нашел.
8. Xershi 1140 18.09.14 13:53 Сейчас в теме
(7) sidsukana, так это понятно, вопрос теперь что на входе, так что если гугл ничего не дал а баг трекер 1С пуст копать конфу на ошибку через анализ данных.
9. sidsukana 18.09.14 13:56 Сейчас в теме
Посоветовали Postgre обновить. Отпишусь если поможет.
10. Evilgrym 173 09.12.15 22:25 Сейчас в теме
не отписался...

Имею ту же проблему и отсутствие решения...
11. WellMaster 104 04.08.16 09:25 Сейчас в теме
Была такая проблема с postgre на линуксе + сервер 1с на линуксе. Версия платформы была 8.3.6.

Поставили 8.3.8, стало работать быстрее.

Проблема проявлялась при подборе сотрудника в документ начисление зарплаты. При этом был пересчет начислений и долго висело именно на той строчке, что озвучена в этой теме.
Оставьте свое сообщение
Вопросы с вознаграждением