Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
29 июн 2024, 07:20

Позиционирование в списке.

Автор boobzx, 07 мар 2013, 20:50

0 Пользователей и 1 гость просматривают эту тему.

boobzx

Добрый день. Подскажите пожалуйста как с позиционироваться в списке УФ? Пример: завел справочник иерархический "Номенкалтура" там завел две группы, "Группа1" и "Группа2", далее в каждой группе сделал по 5 элементов: "Элемент1"  и т.д. Также сделал собственную кнопку "Сохранить". Принцип её работы также как и кнопка Записать и закрыть в управляемой форме при заведении нового элемента. Т.е. Если я изменил группу, То после закрытия карточки товара, товар сам перенесется в другую группу + еще с позиционируется динамический список на этой строке.  Что пробовал сделать я, создал форму элемента, далее написал код по событию этой кнопки своей "Сохранить"

&НаКлиенте
Процедура СохранитьРуками (Команда)

ЗаменимТекущегоРодителяНаСервере();
ОповеститьОбИзменении(Объект.Ссылка);
Закрыть();

КонецПроцедуры

&НаСервере
Функция ЗаменимТекущегоРодителяНаСервере()

Объект.Родитель = КудаПереместить;
Записать();

КонецФункции // ЗаменимТекущегоРодителяНаСервере()



Что нужно написать такое, что бы теперь в форме списка была спозиционирована строчка этого измененного элемента? Я хочу получить такой же результат что делает кнопка записать и закрыть.

sadovod

>> как с позиционироваться в списке УФ?
Элементы.Список.ТекущаяСтрока = Справочники.Номенклатура.НайтиПоНаименованию("НаименованиеТовара");
Вместо конструкции "Справочники.Номенклатура.НайтиПоНаименованию("НаименованиеТовара")" можете вставить любую ссылку на элемент справочника "Номенклатура".

boobzx

Цитироватьsadovod
Спасибо! Код преобразился теперь вот так,

&НаКлиенте
Процедура СохранитьРуками (Команда)
   
    ЗаменимТекущегоРодителяНаСервере();
    ОповеститьОбИзменении(Объект.Ссылка);
    ФормаСпискаНомен = ОткрытьФорму("Справочник.НОМЕНКЛАТУРА.ФормаСписка");
    ФормаСпискаНомен.Элементы.Список.ТекущаяСтрока = Объект.Ссылка;

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

&НаСервере
Функция ЗаменимТекущегоРодителяНаСервере()

    Объект.Родитель = КудаПереместить;
    Записать();
   
КонецФункции // ЗаменимТекущегоРодителяНаСервере()


Теперь, у меня при нажатии на кнопку открывается новое окно, и там уже позиционируется. А как сделать что бы открывалось в текущем окне? А то приходится новое окно закрывать и в старом снова править. Пробую добавлять параметр владельца

ФормаСпискаНомен = ОткрытьФорму("Справочник.НОМЕНКЛАТУРА.ФормаСписка",,ЭтаФОрма);
И все равно в новом окне. Почитал про Активизировать и активное окно... что-от не то..

sadovod

А зачем второй раз открывать форму списка? Кстати, а как вы открываете вашу форму, где меняете родителя? По идее можно использовать всего одну строчку кода Обновить(), но нужно знать, где и как вы открываете форму элемента.
Ну а если всё же использовать вашу логику, то для получения заданного результата можно применить пару методов
  Оповестить("Перемещено", Объект.Ссылка);
пишете её после метода Закрыть(). А в форме списка нужно использовать стандартный обработчик события формы ОбработкаОповещения(ИмяСобытия, Параметр, Источник) таким образоом:
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
Если ИмяСобытия = "Перемещено" Тогда
Элементы.Список.ТекущаяСтрока = Параметр;
КонецЕсли;
КонецПроцедуры

boobzx

Спасибо за код! в 8.3 не работает.... возможно баг... перенес все на 8.2.. все как положено запустилось:) как раз так как я и хотел:) спасибо еще раз за код! Воспользовался воторым вариантом. Я им пробовал тоже пользоваться... но ума не хватила еще добавить событие оповещения на форму списка..:ooifh::ooifh::ooifh::ooifh::ooifh:

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск