Платформа 7.70.027, конфа допиленная ТиС 032.
Нужно некоторые элементы справочника имеющие признак Архив перенести из корня справочника в папку Архив, специально для этого заведенную. Выборка работает, но в момент замены Родителя возникает ошибка перепозиционирования. Помогите найти косяк.
Пробовал делать эту же операцию через ВыбратьЭлементы(), она работет, но только до момента когда перенесен первый найденный элемент справочника. Далее выборка сбивается и ее нужно инить заново. Так как-то криво. поэтому решил через запрос.
Процедура ВыполнитьАрхивациюЗапросом()
Перем Архив;
Архив = "";
Спр = СоздатьОбъект("Справочник.Пациенты");
Если Спр.НайтиПоНаименованию("Архив") = 1 Тогда // проверяем наличие папки Архив, куда будем переносить архивные карточки
Если Спр.ЭтоГруппа() = 1 Тогда
Архив = Спр.ТекущийЭлемент(); // получаем родителя (назначаем папку архивирования)
Сообщить("Папка для архивирована выбрана - " + Архив);
КонецЕсли;
Иначе
Предупреждение("Папка Архив в текущем справочнике не найдена");
Возврат;
КонецЕсли;
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать)
//|Период с ВыбНачПериода по ВыбКонПериода;
|Обрабатывать НеПомеченныеНаУдаление;
|Пациенты = Справочник.Пациенты.ТекущийЭлемент;
|Группировка Пациенты без групп;
|Условие(Пациенты.ВАрхиве.Получить(РабочаяДата()) = Перечисление.ДаНет.Да);
|Условие(Пациенты.ПометкаУдаления()=0);
|"//}}ЗАПРОС
;
// Если ошибка в запросе, то выход из процедуры
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
Возврат;
КонецЕсли;
//Если Запрос.Пациенты.НайтиПоНаименованию("Архив") = 1 Тогда
// Если Запрос.Пациенты.ЭтоГруппа() = 1 Тогда
// Архив = Запрос.Пациенты.ТекущийЭлемент(); // получаем родителя (назначаем папку архивирования)
// Сообщить("Папка для архивирована выбрана - " + Архив);
// КонецЕсли;
//Иначе
// Предупреждение("Папка Архив в текущем справочнике не найдена");
// Возврат;
//КонецЕсли;
Пока Запрос.Группировка(1) = 1 Цикл
Если Запрос.Пациенты.ЭтоГруппа()=1 Тогда
Продолжить;
КонецЕсли;
Если (Запрос.Пациенты.ПринадлежитГруппе(Архив) = 0) И (Запрос.Пациенты.ВАрхиве.Получить(РабочаяДата()) = Перечисление.ДаНет.Да ) Тогда
Запрос.Пациенты.Родитель = Архив; // ???? здесь ошибка - Объект не может быть перепозиционирован!
Запрос.Пациенты.Записать();
Сообщить(" Карточка клиента " + Запрос.Пациенты.Наименование + " имеет пометку для Архив. Берем и переносим....");
КонецЕсли;
Состояние("Идет поиск карточек клиента для Архива...");
КонецЦикла;
КонецПроцедуры