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


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

Метки: 

v7: Открыть форму

Я
   AliAksA
 
10.07.18 - 08:18
Привет всем !

Необходим справочник, в котором все элементы - группы.
Задача: при вводе нового элемента открыть форму ввода группы.
Не удалась попытка прописать в форме элемента:

//******************************************************************

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

//******************************************************************

Я так понял что из формы элемента форму группы не откроешь.
Как перехватить событие ввода нового элемента из формы списка?
Ну буду также рад любым соображениям по этому поводу.
Заранее благодарю.
 
  Рекламное место пустует
   uno-group
 
1 - 10.07.18 - 08:40
ПриОткрыти()
Если Выбран()=0 Тогда
....
КонецЕсли;
СтатусВозврата(0);
Возврат;
   AliAksA
 
2 - 10.07.18 - 08:41
(1) пробовал - такая же ... - не взлетело
   uno-group
 
3 - 10.07.18 - 08:46
ТекРодитель=родитель.
А что говорит?
еще как вариант сделать им одинаковую форму. А в
ПриЗаписи()
Спр=СоздатьОбъект();
Спр.НоваяГРуппа();
Спр.Родитель=Родитель;
Спр.Наименование=Наименование;
Спр.Записать();
СтатусВозврата(0)
ФормаЗакрыть(0);
Возврат;
 хотя скорее всего в призаписи не даст из-за транзакции. там нужно будет какой то флаг выставлять и писать в ПриЗакрытии();
   SleepyHead
 
4 - 10.07.18 - 08:48
В форме списка перехватывайте событие "ПриВводеСтроки", а не "ВводНового".
   uno-group
 
5 - 10.07.18 - 08:50
Можно вообще подменять форму на внешний отчет типа такого
И бальше уже из отчета изменять и писать элементы справочника.
Процедура ПриОткрытии()
Элт=ТекущийЭлемент();
СтатусВозврата(0);
спОпц=СоздатьОбъект("СписокЗначений");
спОпц.ДобавитьЗначение("Изменение","Режим");
спОпц.ДобавитьЗначение(Элт,"Элемент");
ФИЛ=СокрЛП(КаталогИБ())+"MyProg\ПросмЭлемСпрКонтр.ert";
ОткрытьФорму("Отчет",спОпц,ФИЛ);
возврат;
   AliAksA
 
6 - 10.07.18 - 08:53
(4) не катит - много элементов - только диалогом
   AliAksA
 
7 - 10.07.18 - 08:54
(5) слишком геморойно ...
   AliAksA
 
8 - 10.07.18 - 08:57
+(0) подключены клюшки v7plus.dll, 1Cpp.dll, FormEx.dll ... но в них пока ничего не нашел (
   SleepyHead
 
9 - 10.07.18 - 09:00
(6)

В форме списка перехватываете событие ВводНового()
В нем прописываете СтатусВозврата(0), чтобы не происходило стандартного создания элемента или формы

и вызываете открытие формы элемента справочника, передавая туда вторым параметром данные для создания группы

Примерно так:

Процедура ПриВводеСтроки()
   СтатусВозврата(0);

   ПараметрыОткрытия = СоздатьОбъект("СписокЗначений");
   ПараметрыОткрытия.Установить("ИмяНовойГруппы", "");
  // и так далее

   ОткрытьФорму("Элемент.ХХХ", ПараметрыОткрытия,,1)
КонецПроцедуры

А в форме элемента того справочника перехватывайте процедуру ПриОткрытии и читайте значения из Форма.Параметр, это и будет список ПараметрыОткрытия.
   SleepyHead
 
10 - 10.07.18 - 09:01
Возможно, ошибся с СтатусВозврата(), давно не программировал на 1с77

Если там не взлетит, поковыряйте ПриВводеНовойСтроки(), должно там сработать. Код тот же.
 
  Рекламное место пустует
   uno-group
 
11 - 10.07.18 - 09:05
или в 
Процедура ВводНового()
Предупреждение("Даун нажми кнопку ввод новой групы");
СтатусВозврата(0);
КонецПроцедуры
   HawkEye
 
12 - 10.07.18 - 09:05
(0) пффф..
в элементе:
Процедура ВводНового(признакКопирования)
    ТекущийРодитель = Родитель;
    ОткрытьФорму("Обработка.СоздатьГруппу",ТекущийРодитель);
    СтатусВозврата(0);
    Возврат;



в обработке СоздатьГруппу:
Процедура ПриОткрытии() 
    вхРодитель = Форма.Параметр; 
    ОткрытьФорму("Элемент.Контрагенты",,вхРодитель ,1);  
    СтатусВозврата(0);
    Возврат;
КонецПроцедуры
   AliAksA
 
13 - 10.07.18 - 09:10
(10) лучше не советуй ... должно и делает - разные весчи
(11) это ты щас извращенцу позу миссионера предложил)
(12) а вот это уже интересно ...
   SleepyHead
 
14 - 10.07.18 - 09:12
(13)  Ну как скажешь )) все равно тебе разбираться и проверять.
   AliAksA
 
15 - 10.07.18 - 09:13
(14) я уже давно твои предложения проверил - если бы взлетели - сюда бы не писал, но все равно спасибо)
   SleepyHead
 
16 - 10.07.18 - 09:16
(15) Обращайся, тут всегда рады поддержать беседу, даже если ничего не поняли.

А на 1с77 я где-то с 2016 года не программировал, уже и забыл все. Удачи.
   Cthulhu
 
17 - 10.07.18 - 09:20
СП отобрали я так понимаю?.. недорого продам есичо.
Открытие формы нового элемента справочника.
ОткрытьФорму(<ОписательОбъекта>, <КонтекстФормы> , <ГруппаРодитель>, <ФлагГруппы>, <ЭлементВладелец>)
<ОписательОбъекта>    Строковое выражение."Элемент. ХХХХХ", где ХХХХХ — вид справочника;
.......
sic! "Элемент." а не "Справочник." - попробуй в своем коде (0)
   HawkEye
 
18 - 10.07.18 - 09:23
(14) если стоит признак "редактировать в диалоге" ни вводНового ни ПриВводеСтроки - не отрабатывают, кроме этого форм списка может быть несколько
   Cthulhu
 
19 - 10.07.18 - 09:26
(17)+ только что проверил - в форме элемента:
Процедура ВводНового(ПризнКопирования)
    ОткрытьФорму("Элемент."+Вид(),,Родитель,1);
    СтатусВозврата(0); Возврат;
    .......
- взлетает на раз-два. что я не так делаю?
   AliAksA
 
20 - 10.07.18 - 09:28
(12) как ни крутил - не взлететает почему-то, а жаль - идея хорошая была
   AliAksA
 
21 - 10.07.18 - 09:29
(18) пробовал ставить и в списке - все равно не взлетает
   AliAksA
 
22 - 10.07.18 - 09:32
(19) ВАУ!!!! зачет, респект (надо было Элемент а не справочник юзануть)
Всем участникам огромное спасибо! ТЕМА ЗАКРЫТА
   Cthulhu
 
23 - 10.07.18 - 10:21
(22): Тут такой ещё момент. Если ты, конечно, как и я - перфекционист. Код (19) - делает пропуск кодов (если у тея автонумерация+автоприсвоение) - потому что в открываемой форме код авто-инкрементируется от текущего элемента. Для того, чтобы эту достадную мелочь исправить - код полностью будет вот такой:
Процедура ВводНового(...)//предопределенная

Перем тКонт;
ОткрытьФорму("Элемент."+Вид(),тКонт,Родитель,1,Владелец); Если Метаданные.Справочник(Вид()).АвтоНумерация
*Метаданные.Справочник(Вид()).ДлинаКода<>1 Тогда Если ТипЗначенияСтр(тКонт)="ГрупповойКонтекст"
Тогда тКонт.Код=Код; тКонт.Форма.Обновить(1); КонецЕсли КонецЕсли; СтатусВозврата(0); Возврат;
// "тКонт.Форма.Обновить" надо для того чтобы код сразу новый показало - иначе старый с пропуском остается висеть...
   Salimbek
 
24 - 10.07.18 - 10:24
+(23) Ну уж если перефкционизмом страдать, то по полной! Надо добавить проверку - не находишься ли ты на максимальном уровне справочника.
   Cthulhu
 
25 - 10.07.18 - 10:25
(23)+ вкралась ошибка - не "<>1 Тогда" а ">1 Тогда"
тогда оно универсальное - копипасти в любую форму любого элемента
   Cthulhu
 
26 - 10.07.18 - 10:25
(24): а вот это как раз - пофик абсолютно. для корня будет создано в корне как и положено (с пустым родителем) ;)
   Cthulhu
 
27 - 10.07.18 - 10:26
(24): ой на максимальном. ты прав, извини, я в (26) ошибся
   Cthulhu
 
28 - 10.07.18 - 10:30
(24): да, добавить после Перем
Если Метаданные.Справочник(Вид()).КоличествоУровней=Уровень()
Тогда Предупреждение("А, блин, некуда уже добавлять!",11); СтатусВозврата(0); Возврат; КонецЕсли;
   HawkEye
 
29 - 10.07.18 - 16:34
(20) если руки выпрямить - отлично взлетит... у меня по крайней мере - летает только так....
   HawkEye
 
30 - 10.07.18 - 16:42
(23) на кой такие сложности, когда код элемента можно передать параметром вместе с родителем, и присвоить его группе....

надо только в форме группы дописать
Процедура ВводНового()
    Если ПустоеЗначение(Форма.Параметр) = 0 Тогда
        Код = Форма.Параметр;
    КонецЕсли;
КонецПроцедуры
   AliAksA
 
31 - 11.07.18 - 08:31
(23) и (30) ещё раз спасибо за внимание, на будущее пригодится.
В данном случае Код в справочнике "АдреснаяСистема" по сути - почтовый индекс - не уникален и не автоопределяем - копируется в новый элемент с родителя.



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