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