Вход | Регистрация

1С:Предприятие ::

Метки:

как программно перенести элемент справочника в другую группу

Я
   econom
 
10.03.04 - 15:57
элемент справочника редактируется в диалоге (или новый). по реквизитам алгоритм модуля формы диалога "принимает решение" перенести его в другую группу. однако пока диалог не закрыт... ничего не получается.
Вопрос как бы какой нибудь процедурой (или кнопкой) закрыть форму и глобальной процедурой перекинуть ентот элемент в другую группу.
Пробовал вызывать глобальную процедуру, передавая в нее контекст и текущий элемент() со всеми его делами, там Форма.Закрыть(). потом пытаюсь поменять родителя, но... Понял что пока работает процедура, вызванная из кнопки формы, эта форма - не закрывается и:
ВыбрЗаказ.Родитель=НовыйРодитель;
{Глобальный модуль(24)}: Объект не может быть перепозиционирован!
как бы сначала закрыть а потом запустить глПроцедуру?
 
  Рекламное место пустует
   Рупор абсурда
 
1 - 10.03.04 - 16:07
1. Обработкой
2. Через глобольную ОбработкуОжидания()
3. ?
   a_aladdin
 
2 - 10.03.04 - 16:21
Когда обсуждался вопрос об изменении времени проведенного док-та, всплыло решение как раз твоей проблемы (а конкретно, GrayT - мне прислал посмотреть)
Вод код в форме элемента справочника

Перем ПараметрыФормы;
Перем Вид;
//_____________________________________________________


Процедура КопироватьЭлемент(Источник,Приемник)
    Для нр=1 по Метаданные.Справочник(Вид).Реквизит() Цикл     
        ИД=Метаданные.Справочник(Вид).Реквизит(нр).Идентификатор;
        Приемник.УстановитьАтрибут(ИД,Источник.ПолучитьАтрибут(ИД));
    КонецЦикла;                                  
    Если Метаданные.Справочник(Вид).ДлинаКода>0 тогда
        Приемник.Код=Источник.Код;
    КонецЕсли;    
    Если Метаданные.Справочник(Вид).ДлинаНаименования>0 тогда
        Приемник.Наименование=Источник.Наименование;
    КонецЕсли;    
КонецПроцедуры//КопироватьЭлемент

//_____________________________________________________

Процедура ПриЗаписи()
    С=СоздатьОбъект("Справочник."+Вид);
    Если ПустоеЗначение(ПараметрыФормы)=1 Тогда
        Если Родитель<>ВыбРодитель Тогда
            С.Новый();   
            НеЗаписывать=1;
        КонецЕсли;
    Иначе
        С.НайтиЭлемент(ПараметрыФормы);
        НеЗаписывать=1;
    КонецЕсли;    
    Если 1=НеЗаписывать Тогда
        С.Родитель=ВыбРодитель;
        КопироватьЭлемент(Контекст,С);
        С.Записать();
        СтатусВозврата(0);    
        Форма.Закрыть(0);
        Возврат;
    КонецЕсли;
КонецПроцедуры//ПриЗаписи



Процедура ПриЗакрытии()                    
КонецПроцедуры//ПриЗакрытии



Процедура ПриОткрытии()     
    ПараметрыФормы=Форма.Параметр;
    Если Выбран()=1 Тогда
        Если ПустоеЗначение(ПараметрыФормы)=1 Тогда
            ОткрытьФорму("Элемент."+Вид,ТекущийЭлемент(),Родитель,,ИспользоватьВладельца());
            СтатусВозврата(0);    Возврат;
        КонецЕсли;
    ИначеЕсли ПустоеЗначение(ПараметрыФормы)=0 Тогда    
        КопироватьЭлемент(ПараметрыФормы,Контекст);
        Форма.Заголовок(Наименование,0);
    Иначе
        Форма.Заголовок("(Новый)",0);
    КонецЕсли;
    ВыбРодитель=Родитель;
КонецПроцедуры//ПриОткрытии

Вид=Вид();


Попробуй...
   Рупор абсурда
 
3 - 10.03.04 - 16:27
(0) Лучше не пробуй!
(2) А если элемент не новый?
   a_aladdin
 
4 - 10.03.04 - 16:28
(3) если не новый тоже сработает
   Рупор абсурда
 
5 - 10.03.04 - 16:29
(4) А если на него ссылки в базе есть?
   a_aladdin
 
6 - 10.03.04 - 16:31
(5) - а именно?
   Рупор абсурда
 
7 - 10.03.04 - 16:34
(6) Что "а именно?"? А именно, сидит он в куче доков и других справочниках, например ...
К тому же у справочника этого могут быть подчиненные, у элемента этого могут быть периодические реквизиты и т.п. ...

(0) Не пробуй!
   a_aladdin
 
8 - 10.03.04 - 16:49
значит - пускай для нового хотя бы использует.
изначально-то конечно задача стояла саму идею реализовать - изменение группы в форме, в глобальном-то смысле особо не думали...
   Рупор абсурда
 
9 - 10.03.04 - 16:52
(8) Всё уже украдено до нас! (с)
   Кое-кто@где-то.там
10 - 10.03.04 - 18:08
Хех, мой код ходит ...
(7) С подчиненными пофиг, с периодическими решаемо.
 
 
   skunk
 
11 - 10.03.04 - 18:38
(11)не согласен с доводами Рупора, но вывод правильный...
там и еще кое-что есть...
   romix
 
12 - 10.03.04 - 18:47
(0) Можно при закрытии запускать внешнюю компоненту или программу, которая изменит все как надо. Хотя овчинка имхо не стоит выделки - ну кому это нужно - в папку перекидывать... Сами же юзера и взвоют, что они создали, а элемент куда-то делся. Они еще раз создали - он опять уехал... Некоторые юзера отличаются завидным упорством...
   Фокс
13 - 10.03.04 - 19:44
(10) Хитрые вы, собаки легавые, с подходцами вашими...
Ну ничего, ножички то у нас на всех найдутся ... Нахлебаетесь, как давеча на бульваре ...
   skunk
 
14 - 10.03.04 - 19:49
ой... ни как у нас уголовный криминалитеты позавились... Львенок, что ли крышует...


Список тем форума
  Рекламное место пустует
Ошибка? Это не ошибка, это системная функция.
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Ветка сдана в архив. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует