7.7 По результатам запроса: Ошибка - Объект не может быть перепозиционирован!

Тема в разделе "Отчеты и обработки для "1С:Предприятие 7.7"", создана пользователем leonid_gun, 4 янв 2019.

  1. TopicStarter Overlay
    leonid_gun
    Offline

    leonid_gun

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

    Нужно некоторые элементы справочника имеющие признак Архив перенести из корня справочника в папку Архив, специально для этого заведенную. Выборка работает, но в момент замены Родителя возникет ошибка перепозиционирования. Помогите найти косяк.

    Пробовал делать эту же операцию через ВыбратьЭлементы(), она работет, но только до момента когда перенесен первый найденный элемент справочника. Далее выборка сбивается и ее нужно инить заново. Так както криво. поэтому решил через запрос.
  2. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    22.628
    Симпатии:
    542
    Баллы:
    204
    Нужно так

    Спр=СоздатьОбъект("Справочник.ВашСправочник");
    Если Спр.НайтиЭлемент(Запрос.Пациенты)=1 Тогда
    Спр.Родитель=Архив;
    Спр.ВАрхиве.Установить(ТекущаяДата(),Перечисление.ДаНет.Да);
    Спр.Записать();
    КонецЕсли;
    leonid_gun нравится это.
  3. TopicStarter Overlay
    leonid_gun
    Offline

    leonid_gun

    Регистрация:
    13 июл 2016
    Сообщения:
    7
    Симпатии:
    0
    Баллы:
    1
    Не нашел кнопки "Спасибо", поэтому благодарю ответным постом. Все заработало. Только строка
    Код:
    Спр.ВАрхиве.Установить(ТекущаяДата(),Перечисление.ДаНет.Да);
    для меня лишняя будет, так как я переношу элементы помеченные ВАрхив вручную или другой обработкой )))) Всего доброго.
  4. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    22.628
    Симпатии:
    542
    Баллы:
    204
    Я написал общий пример кода, основываясь на вашем примере. Как использовать - ваше дело. Кнопка "спасибо" справа от сообщения и называется "Мне нравится"
Похожие темы
  1. neo_rasul
    Ответов:
    7
    Просмотров:
    1.094
  2. burbon
    Ответов:
    4
    Просмотров:
    6.288
  3. julia_fire
    Ответов:
    12
    Просмотров:
    5.237
  4. chehonte
    Ответов:
    7
    Просмотров:
    1.455
  5. SleepingGirl
    Ответов:
    1
    Просмотров:
    1.148
Загрузка...