|
v7: Открыть форму | ☑ | ||
---|---|---|---|---|
0
AliAksA
10.07.18
✎
08:18
|
Привет всем !
Необходим справочник, в котором все элементы - группы. Задача: при вводе нового элемента открыть форму ввода группы. Не удалась попытка прописать в форме элемента: //****************************************************************** Процедура ВводНового() текРодитель = ПолучитьАтрибут("Родитель"); ОткрытьФорму("Справочник.АдреснаяСистема", , текРодитель, 1); СтатусВозврата(0); КонецПроцедуры // ВводНового() //****************************************************************** Я так понял что из формы элемента форму группы не откроешь. Как перехватить событие ввода нового элемента из формы списка? Ну буду также рад любым соображениям по этому поводу. Заранее благодарю. |
|||
1
uno-group
10.07.18
✎
08:40
|
ПриОткрыти()
Если Выбран()=0 Тогда .... КонецЕсли; СтатусВозврата(0); Возврат; |
|||
2
AliAksA
10.07.18
✎
08:41
|
(1) пробовал - такая же ... - не взлетело
|
|||
3
uno-group
10.07.18
✎
08:46
|
ТекРодитель=родитель.
А что говорит? еще как вариант сделать им одинаковую форму. А в ПриЗаписи() Спр=СоздатьОбъект(); Спр.НоваяГРуппа(); Спр.Родитель=Родитель; Спр.Наименование=Наименование; Спр.Записать(); СтатусВозврата(0) ФормаЗакрыть(0); Возврат; хотя скорее всего в призаписи не даст из-за транзакции. там нужно будет какой то флаг выставлять и писать в ПриЗакрытии(); |
|||
4
SleepyHead
гуру
10.07.18
✎
08:48
|
В форме списка перехватывайте событие "ПриВводеСтроки", а не "ВводНового".
|
|||
5
uno-group
10.07.18
✎
08:50
|
Можно вообще подменять форму на внешний отчет типа такого
И бальше уже из отчета изменять и писать элементы справочника. Процедура ПриОткрытии() Элт=ТекущийЭлемент(); СтатусВозврата(0); спОпц=СоздатьОбъект("СписокЗначений"); спОпц.ДобавитьЗначение("Изменение","Режим"); спОпц.ДобавитьЗначение(Элт,"Элемент"); ФИЛ=СокрЛП(КаталогИБ())+"MyProg\ПросмЭлемСпрКонтр.ert"; ОткрытьФорму("Отчет",спОпц,ФИЛ); возврат; |
|||
6
AliAksA
10.07.18
✎
08:53
|
(4) не катит - много элементов - только диалогом
|
|||
7
AliAksA
10.07.18
✎
08:54
|
(5) слишком геморойно ...
|
|||
8
AliAksA
10.07.18
✎
08:57
|
+(0) подключены клюшки v7plus.dll, 1Cpp.dll, FormEx.dll ... но в них пока ничего не нашел (
|
|||
9
SleepyHead
гуру
10.07.18
✎
09:00
|
(6)
В форме списка перехватываете событие ВводНового() В нем прописываете СтатусВозврата(0), чтобы не происходило стандартного создания элемента или формы и вызываете открытие формы элемента справочника, передавая туда вторым параметром данные для создания группы Примерно так: Процедура ПриВводеСтроки() СтатусВозврата(0); ПараметрыОткрытия = СоздатьОбъект("СписокЗначений"); ПараметрыОткрытия.Установить("ИмяНовойГруппы", ""); // и так далее ОткрытьФорму("Элемент.ХХХ", ПараметрыОткрытия,,1) КонецПроцедуры А в форме элемента того справочника перехватывайте процедуру ПриОткрытии и читайте значения из Форма.Параметр, это и будет список ПараметрыОткрытия. |
|||
10
SleepyHead
гуру
10.07.18
✎
09:01
|
Возможно, ошибся с СтатусВозврата(), давно не программировал на 1с77
Если там не взлетит, поковыряйте ПриВводеНовойСтроки(), должно там сработать. Код тот же. |
|||
11
uno-group
10.07.18
✎
09:05
|
или в
Процедура ВводНового() Предупреждение("Даун нажми кнопку ввод новой групы"); СтатусВозврата(0); КонецПроцедуры |
|||
12
HawkEye
10.07.18
✎
09:05
|
(0) пффф..
в элементе: Процедура ВводНового(признакКопирования) ТекущийРодитель = Родитель; ОткрытьФорму("Обработка.СоздатьГруппу",ТекущийРодитель); СтатусВозврата(0); Возврат; в обработке СоздатьГруппу: Процедура ПриОткрытии() вхРодитель = Форма.Параметр; ОткрытьФорму("Элемент.Контрагенты",,вхРодитель ,1); СтатусВозврата(0); Возврат; КонецПроцедуры |
|||
13
AliAksA
10.07.18
✎
09:10
|
(10) лучше не советуй ... должно и делает - разные весчи
(11) это ты щас извращенцу позу миссионера предложил) (12) а вот это уже интересно ... |
|||
14
SleepyHead
гуру
10.07.18
✎
09:12
|
(13) Ну как скажешь )) все равно тебе разбираться и проверять.
|
|||
15
AliAksA
10.07.18
✎
09:13
|
(14) я уже давно твои предложения проверил - если бы взлетели - сюда бы не писал, но все равно спасибо)
|
|||
16
SleepyHead
гуру
10.07.18
✎
09:16
|
(15) Обращайся, тут всегда рады поддержать беседу, даже если ничего не поняли.
А на 1с77 я где-то с 2016 года не программировал, уже и забыл все. Удачи. |
|||
17
Cthulhu
10.07.18
✎
09:20
|
СП отобрали я так понимаю?.. недорого продам есичо.
Открытие формы нового элемента справочника. ОткрытьФорму(<ОписательОбъекта>, <КонтекстФормы> , <ГруппаРодитель>, <ФлагГруппы>, <ЭлементВладелец>) <ОписательОбъекта> Строковое выражение."Элемент. ХХХХХ", где ХХХХХ — вид справочника; ....... sic! "Элемент." а не "Справочник." - попробуй в своем коде (0) |
|||
18
HawkEye
10.07.18
✎
09:23
|
(14) если стоит признак "редактировать в диалоге" ни вводНового ни ПриВводеСтроки - не отрабатывают, кроме этого форм списка может быть несколько
|
|||
19
Cthulhu
10.07.18
✎
09:26
|
(17)+ только что проверил - в форме элемента:
Процедура ВводНового(ПризнКопирования) ОткрытьФорму("Элемент."+Вид(),,Родитель,1); СтатусВозврата(0); Возврат; ....... - взлетает на раз-два. что я не так делаю? |
|||
20
AliAksA
10.07.18
✎
09:28
|
(12) как ни крутил - не взлететает почему-то, а жаль - идея хорошая была
|
|||
21
AliAksA
10.07.18
✎
09:29
|
(18) пробовал ставить и в списке - все равно не взлетает
|
|||
22
AliAksA
10.07.18
✎
09:32
|
(19) ВАУ!!!! зачет, респект (надо было Элемент а не справочник юзануть)
Всем участникам огромное спасибо! ТЕМА ЗАКРЫТА |
|||
23
Cthulhu
10.07.18
✎
10:21
|
(22): Тут такой ещё момент. Если ты, конечно, как и я - перфекционист. Код (19) - делает пропуск кодов (если у тея автонумерация+автоприсвоение) - потому что в открываемой форме код авто-инкрементируется от текущего элемента. Для того, чтобы эту достадную мелочь исправить - код полностью будет вот такой:
Процедура ВводНового(...) //предопределенная Перем тКонт; ОткрытьФорму("Элемент."+Вид(),тКонт,Родитель,1,Владелец); Если Метаданные.Справочник(Вид()).АвтоНумерация *Метаданные.Справочник(Вид()).ДлинаКода<>1 Тогда Если ТипЗначенияСтр(тКонт)="ГрупповойКонтекст" Тогда тКонт.Код=Код; тКонт.Форма.Обновить(1); КонецЕсли КонецЕсли; СтатусВозврата(0); Возврат; // "тКонт.Форма.Обновить" надо для того чтобы код сразу новый показало - иначе старый с пропуском остается висеть... |
|||
24
Salimbek
10.07.18
✎
10:24
|
+(23) Ну уж если перефкционизмом страдать, то по полной! Надо добавить проверку - не находишься ли ты на максимальном уровне справочника.
|
|||
25
Cthulhu
10.07.18
✎
10:25
|
(23)+ вкралась ошибка - не "<>1 Тогда" а ">1 Тогда"
тогда оно универсальное - копипасти в любую форму любого элемента |
|||
26
Cthulhu
10.07.18
✎
10:25
|
(24): а вот это как раз - пофик абсолютно. для корня будет создано в корне как и положено (с пустым родителем) ;)
|
|||
27
Cthulhu
10.07.18
✎
10:26
|
(24): ой на максимальном. ты прав, извини, я в (26) ошибся
|
|||
28
Cthulhu
10.07.18
✎
10:30
|
(24): да, добавить после Перем
Если Метаданные.Справочник(Вид()).КоличествоУровней=Уровень() Тогда Предупреждение("А, блин, некуда уже добавлять!",11); СтатусВозврата(0); Возврат; КонецЕсли; |
|||
29
HawkEye
10.07.18
✎
16:34
|
(20) если руки выпрямить - отлично взлетит... у меня по крайней мере - летает только так....
|
|||
30
HawkEye
10.07.18
✎
16:42
|
(23) на кой такие сложности, когда код элемента можно передать параметром вместе с родителем, и присвоить его группе....
надо только в форме группы дописать Процедура ВводНового() Если ПустоеЗначение(Форма.Параметр) = 0 Тогда Код = Форма.Параметр; КонецЕсли; КонецПроцедуры |
|||
31
AliAksA
11.07.18
✎
08:31
|
(23) и (30) ещё раз спасибо за внимание, на будущее пригодится.
В данном случае Код в справочнике "АдреснаяСистема" по сути - почтовый индекс - не уникален и не автоопределяем - копируется в новый элемент с родителя. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |