Перенос из одной папки в другую

Тема в разделе "1C и всё что с ней связано", создана пользователем lira89, 11 июл 2010.

  1. lira89

    lira89 Well-Known Member

    Регистрация:
    12 мар 2010
    Сообщения:
    159
    Симпатии:
    0
    1с v77. Есть справочник с тремя уровнями. Есть элемент, который записан в папки Факультет-> Группа. Надо с помощью документа перевести запись элемента в другую папку Академический. Есть код:
    Код (Text):
    Процедура ОбработкаПроведения()
    СпрОбучение = СоздатьОбъект("Справочник.Обучение");
    Если СпрОбучение.НайтиЭлемент(Студент)=1 Тогда
    Эл= СпрОбучение.ТекущийЭлемент();
    Группа = Эл.Родитель;                            //это надо чтобы потом восстановить запись
    Группа1 = Эл.Родитель.Родитель;           //там, где она и была
    Если СпрОбучение.НайтиПоНаименованию("Академический")=1 Тогда
    Папка = СпрОбучение.ТекущийЭлемент(); // спозиционировались на нужной папке
    СпрОбучение.Родитель = Папка;             //назначили родителем папку Академический
    СпрОбучение.Записать();
    Сообщить("Студент """+Эл+""" успешно переведен в академический отпуск.", "i");
    Иначе
    Сообщить("Папка с названием Академический не найдена! Студент не может быть отправлен в академический отпуск.","!!");
    СтатусВозврата(0);
    КонецЕсли;
    КонецЕсли;
    КонецПроцедуры
    Проблема возникла в том, что запись не перемещается, а остается там где и была и почему-то ИСЧЕЗАЕТ папка Академический (может поэтому и запись не перемещается). Подскажите, что может такое быть в данном коде неправильное или что нужно исправить, чтобы не исчезала папка?
     
  2. vbs

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    Попробуй так :

    Процедура ОбработкаПроведения()
    СпрОбучение = СоздатьОбъект("Справочник.Обучение");
    СпрОбучение2 = СоздатьОбъект("Справочник.Обучение");
    Если СпрОбучение2.НайтиПоНаименованию("Академический")=1 Тогда
    Папка = СпрОбучение2.ТекущийЭлемент(); // спозиционировались на нужной папке
    КонецЕсли;
    Если СпрОбучение.НайтиЭлемент(Студент)=1 Тогда
    Эл= СпрОбучение.ТекущийЭлемент();
    Группа = Эл.Родитель; //это надо чтобы потом восстановить запись
    Группа1 = Эл.Родитель.Родитель; //там, где она и была
    СпрОбучение.Родитель = Папка; //назначили родителем папку Академический
    СпрОбучение.Записать();
    Сообщить("Студент """+Эл+""" успешно переведен в академический отпуск.", "i");
    Иначе
    Сообщить("Папка с названием Академический не найдена! Студент не может быть отправлен в академический отпуск.","!!");
    СтатусВозврата(0);
    КонецЕсли;
    КонецПроцедуры
     
  3. evgenyatam

    evgenyatam Well-Known Member

    Регистрация:
    7 сен 2007
    Сообщения:
    175
    Симпатии:
    0
    или так:
    Процедура ОбработкаПроведения()
    СпрОбучение = СоздатьОбъект("Справочник.Обучение");
    Если СпрОбучение.НайтиЭлемент(Студент)=1 Тогда
    Эл= СпрОбучение.ТекущийЭлемент();
    Группа = Эл.Родитель; //это надо чтобы потом восстановить запись
    Группа1 = Эл.Родитель.Родитель; //там, где она и была
    Если СпрОбучение.НайтиПоНаименованию("Академический")=1 Тогда
    Папка = СпрОбучение.ТекущийЭлемент(); // спозиционировались на нужной папке
    спрОбучение.НайтиЭлемент(Эл); // поиск портит позицию
    СпрОбучение.Родитель = Папка; //назначили родителем папку Академический
    СпрОбучение.Записать();
    Сообщить("Студент """+Эл+""" успешно переведен в академический отпуск.", "i");
    Иначе
    Сообщить("Папка с названием Академический не найдена! Студент не может быть отправлен в академический отпуск.","!!");
    СтатусВозврата(0);
    КонецЕсли;
    КонецЕсли;
    КонецПроцедуры


    вобщем надо или не портить позицию или ее восстанавливать. через переменную Эл в справочник писать нельзя так как результат функции ТекущийЭлемент() - ссылка, недоступная для записи.
     
  4. lira89

    lira89 Well-Known Member

    Регистрация:
    12 мар 2010
    Сообщения:
    159
    Симпатии:
    0
    спасибо.
     
  5. KiR

    KiR НЕ шибка опытный програмер)
    1C Team

    Регистрация:
    11 сен 2007
    Сообщения:
    1.581
    Симпатии:
    0
    lira89, хоть понял в чем ошибка была-то?
     
Загрузка...

Поделиться этой страницей