|
v7: "АктивизироватьОбъект" в Списке справочника после программного копирования | ☑ | ||
---|---|---|---|---|
0
Dolly_EV
15.09.14
✎
08:33
|
Справочник.Номенклатура
в процедуре "ВводНового()" если Скопирован=1 - идет перенаправление в обработку, которая копирует по желанию подчиненные справочники (Единицы, Цены и т.д.) В итоге имеет открытую форму нового (скопированного, уже записанного) элемента. Так вот, клиент хочет по закрытию этой формы оказаться в списке справочника на ЭТОМ элементе (а не на том, с которого копировали). Собственно сабж: как? (с минимальными затратами). |
|||
1
kupec
15.09.14
✎
09:31
|
Создать глобальную переменную типа КодНовгоЭлемента, после записи скопированного элемента, записывать в эту переменную новый код, собсно дальше искать по коду товар и активировать его на форме, первое что пришло в голову
|
|||
2
Dolly_EV
15.09.14
✎
10:09
|
(1) "дальше искать по коду товар и активировать его на форме" и для этого ОбработкуОжидания отдельную организовать в форме списка?)) не, это не "минимальные затраты"
|
|||
3
kupec
15.09.14
✎
10:45
|
а если на форму списка повесить функцию проверяющую значение КодНовогоЭлемента и при значении отличном от нуля активизировать элемент, после активизации переменную в 0
|
|||
4
Ёпрст
15.09.14
✎
10:48
|
(0) вообще -то это штатное поведение платформы. Как ты его сломал - хз
|
|||
5
Ёпрст
15.09.14
✎
10:49
|
при нажатии на F9 будет открыта форма нового "скопрированного" элемента, при его закрытии, в форме списка будет активным именно этот элемент
|
|||
6
kupec
15.09.14
✎
10:50
|
(4) действительно так и есть
|
|||
7
FN
15.09.14
✎
11:22
|
(0) Сделай перенаправление в свою обработку из формы нового элемента из процедуры ПриЗаписи при условии Выбран(0) и ПустоеЗначение(ОбъектКопирования)=0
только не забудь принудительно записать элемент перед вызовом обработки. |
|||
8
Dolly_EV
15.09.14
✎
11:56
|
(4) - "программное" копирование. В форме элемента справочника:
Процедура ВводНового(Копирование,Элем) Если Копирование = 1 Тогда СтатусВозврата(0); //** Копирование с подчиненными СписПарам=СоздатьОбъект("СписокЗначений"); СписПарам.ДобавитьЗначение(Элем,"ИсхЭлемент"); лСтрокаПодчСпр="Единицы,СвойстваНоменклатуры,Цены*,ШтрихКодСпр*"; СписПарам.ДобавитьЗначение(лСтрокаПодчСпр,"ФильтрПодчСпр"); лСтрокаИсклРекв="Автор,БазоваяЕдиница,ОсновнаяЕдиница,Алкоголь,РеквШтрихкодБазовой,РеквШтрихкодОсновной"; СписПарам.ДобавитьЗначение(лСтрокаИсклРекв,"ИсключитьРеквивиты"); ОткрытьФорму("Обработка.ОбработкаКопирования",СписПарам); Возврат; //** Копирование с подчиненными КонецЕсли; КонецПроцедуры // ВводНового() Т.е. СтатусВозврата(0), т.е. для 1С - "НЕ копируем", а создание и запись скопированного происходит в "Обработка.ОбработкаКопирования" (7) так оно бы помогло, да (если записывать новый скопированный в родной форме), но там при копировании есть куча условий, когда оно может не состояться. + сделано "универсально" для нескольких справочников. В общем, задачка усложнена тем, что СтатусВозврата(0) при "штатном" срабатывании "ВводНового()" |
|||
9
Ёпрст
15.09.14
✎
11:58
|
(8)
в свою поделку передавай контекст формы открытой формы списка, в приЗакрытии в поделке делай Конт.АктивизироватьОбъект.. усё. |
|||
10
Dolly_EV
15.09.14
✎
11:59
|
(9) как этот контекст отловить в "ВводНового" элемента??
|
|||
11
Dolly_EV
15.09.14
✎
12:03
|
(9) + нет "ПриЗакрытии()" в поделке - там СтатусВозврата(0) в "ПриОткрытии"
|
|||
12
Ёпрст
15.09.14
✎
12:03
|
(10) храни его где -нибудь, например
|
|||
13
Ёпрст
15.09.14
✎
12:04
|
хоть, в глоб. переменной
|
|||
14
Dolly_EV
15.09.14
✎
13:06
|
(12)(13) Угу, получилось. Но нехороший эффект присутствует:
Иногда нормально отрабатывает, иногда активизируется группа-родитель вместо элемента. Т.е. курсор "выпрыгивает" на верхний уровень (такое ощущение, что просто не успевает дооткрыться на новом элементе). 50/50 |
|||
15
Dolly_EV
15.09.14
✎
13:08
|
+(14) Активизировать пытаюсь в ОбработкеКопирования:
СписДляФормыСпр = СоздатьОбъект("СписокЗначений"); СписДляФормыСпр.ДобавитьЗначение(1,"Скопирован"); ОткрытьФорму(Спр.ТекущийЭлемент(),СписДляФормыСпр); Если лВидСпр="Номенклатура" Тогда Попытка глСпрНоменклатураФормаСписка.АктивизироватьОбъект(Спр.ТекущийЭлемент()); Исключение КонецПопытки; КонецЕсли; |
|||
16
lavalit
15.09.14
✎
14:49
|
А если установлен формекс, то можно еще покуролесить в "ПослеЗакрытия(Контекст)" в Глобальном модуле... оно срабатывает при закрытии любой формы... так в ней можнопроверить что закрываетсяф и ежели вдруг это та самая форма - сделать какие то действия... уж точно "нехороший эффект" в (14) будет убит
|
|||
17
Dolly_EV
16.09.14
✎
03:41
|
(16) в "ПослеЗакрытия" (локально и глобально) сразу и пробовал "куролесить" - валится 1С-ина
|
|||
18
Злопчинский
16.09.14
✎
03:52
|
(8) это нифига не программное копирование. это обычное интерактивное копирование.
|
|||
19
Злопчинский
16.09.14
✎
03:53
|
916) блин! ij; вы раншье молчали что в формексе есть такая фигня! мне бы на порядок проще было программить!!!
|
|||
20
Dolly_EV
16.09.14
✎
05:57
|
(18) вначале оно интерактивное, но потом СтатусВозврата(0) (т.е. отмена действия) и далее - программное
|
|||
21
Dolly_EV
16.09.14
✎
05:57
|
(19) :-))
|
|||
22
Dolly_EV
16.09.14
✎
06:06
|
Вобщем, в "ПослеЗакрытия" если делать быстро - падает 1С-исна. Если "вдумчиво" (подвигать форму, закрыть не Esc, а "крестиком") - нормально отрабатывает.
|
|||
23
Dolly_EV
16.09.14
✎
06:14
|
+(22) Уточнение: падает ,только если закрываем кнопкой "Закрыть" (с единственной формулой "#Закрыть") или по Esc. Если закрываем "крестиком" - все Ок отрабатывает и не падает.
в "ПриЗакрытии()" элемента ничего криминального |
|||
24
Ёпрст
16.09.14
✎
09:42
|
можно еще в СписокВсехОткрытыхОкон найти нужный контекст и активизировать там что угодно
|
|||
25
Dolly_EV
16.09.14
✎
11:31
|
(24) попробовал через "Список.." - эффект тот же - "выпрыгивает" на родительский уровень
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |