• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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

  • Автор темы lira89
  • Дата начала
L

lira89

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

vbs

Попробуй так :

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

evgenyatam

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


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

KiR

lira89, хоть понял в чем ошибка была-то?
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!