Имя: Пароль:
1C
1С v8
Программно вызвать "ПередНачаломДобавления" с открытием формы нового элемента.
,
0 Zhuravlik
 
08.04.13
23:52
В форме выбора создаю новый элемент справочника, и заполняю его реквизиты в предопр. процедуре СправочникСписокПередНачаломДобавления().
Хочу, чтобы в ПриОТкрытии() формы выбора открывался на создание новый элемент с вызовом этого события. Форма выбора и новый элемент открываются модально. Сейчас делаю через шел:
В ПриОткрытии():
       Shell = Новый COMОбъект("WScript.Shell");
       Shell.sendKeys("{INSERT}");
Только вот не всегда это срабатывает, иногда почему-то конфа сворачивается и просто включает инсерт.
Если я в ПриОткрытии открываю модально форму нового элемента, то форма выбора не появляется до тех пор, пока модальное окно не будет закрыто.
Если в ПриОткрытии форму нового открывать не модально, то она просто  уходит на задний план модально открытой формы выбора.
С шелом работает как нужно. Но не всегда(
Пробую программно нажать на кнопку - тоже не выходит, дошел до Действие = Панель.ПолучитьДействие("Добавить"), как это использовать не пойму.
1 zladenuw
 
08.04.13
23:53
(0) ты под чем ? колись. что ты хочешь сделать ?
2 zladenuw
 
08.04.13
23:54
что тебе мешает
Справочники.Мой.СоздатьЭлемент() ?
3 Zhuravlik
 
08.04.13
23:58
(1) :)
Я хочу, чтобы открылась форма выбора, и открылся новый элемент. Не записанный. И на фоне формы выбора. Чтобы пользователь мог отказаться от создания, и выбрать существующий.
Дело еще в том, что элемент справочника при создании заполняется по спец. реквизиту (строка 300 симв.), который я при создании нового элемента разбиваю на реквизиты. Уж не знаю как сказать( Посмотрите модуль?



Процедура ВводКонтрагента()
   спрКонтрагенты = Справочники.Контрагенты.СоздатьЭлемент();
   спрКонтрагенты.СтрокаВыгрузки = СтрокаВыгрузки;
   спрКонтрагенты.ПечРеквизиты_ФЛ = ПечРеквизиты_ФЛ;
   спрКонтрагенты.ПолучитьФорму("ФормаЭлемента").Открыть();
КонецПроцедуры

Процедура СправочникСписокПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, ЭтоГруппа)
   // Вставить содержимое обработчика.
   //Элемент.СтрокаВыгрузки = СтрокаВыгрузки;
   Если НЕ ЭтоГруппа И ЗначениеЗаполнено(СтрокаВыгрузки) Тогда
       Отказ = Истина;
       ВводКонтрагента();
   КонецЕсли;
КонецПроцедуры

Процедура ПриОткрытии()    
   РежимВыбора = Истина;
   ЗакрыватьПриВыборе = Истина;
   
   Если ЗначениеЗаполнено(СтрокаВыгрузки) Тогда
       //Shell = Новый COMОбъект("WScript.Shell");
       //Shell.sendKeys("{INSERT}");
       //ВводКонтрагента();
       //Действие = Панель.ПолучитьДействие("Добавить");
   КонецЕсли;
   
КонецПроцедуры


Процедура СправочникСписокВыбор(Элемент, ВыбраннаяСтрока, Колонка, СтандартнаяОбработка)
   // Вставить содержимое обработчика.
   Если ТипЗнч(ВыбраннаяСтрока) = Тип("СправочникСсылка.Контрагенты") Тогда
       Если ВыбраннаяСтрока.СтрокаВыгрузки <> СтрокаВыгрузки Тогда
           Объект = ВыбраннаяСтрока.ПолучитьОбъект();
           Объект.СтрокаВыгрузки = СтрокаВыгрузки;
           Объект.Записать();
       КонецЕсли;
   КонецЕсли;
КонецПроцедуры
4 zladenuw
 
09.04.13
00:01
(3) так после открытие цепляй обработчик ожидание.
с условием если

Процедура Моя ()
Если ЗначениеЗаполнено(СтрокаВыгрузки) Тогда
ВводКонтрагента()
 КонецЕсли;
Конецпроцедуры

а уже
Процедура ПриОткрытии()
  ПодключитьОбработчикОжидания("Моя ",5,)
Конецпроцедуры

Хотя зачем.
5 Zhuravlik
 
09.04.13
00:03
(4) Приходила в голову такая мысль, но как-то отбросил, думал что в 8 все гораздо интереснее.
6 Zhuravlik
 
09.04.13
00:04
(4) Спасибо за совет) По-ходу так и сделаю.
7 alexei366
 
09.04.13
00:11
А в модуле ПриОткрытии формы выбора не варик воспользоваться функцией ПолучтьФорму() или процедурой ОткрытьФорму() ?
8 Zhuravlik
 
09.04.13
00:19
(7)
Если я в ПриОткрытии открываю модально форму нового элемента, то форма выбора не появляется до тех пор, пока модальное окно не будет закрыто.
Если в ПриОткрытии форму нового открывать не модально, то она просто  уходит на задний план модально открытой формы выбора.
9 alexei366
 
09.04.13
00:54
(8) Б л я т ь
ПараметрыФормы = Новый Структура("РежимОткрытияОкна",РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
ОткрытьФорму("Справочник.Мой.ФормаОбъекта", ПараметрыФормы, Список, , , );

Список - эт как у тя назван элемент списка формы.
10 Dionis Sergeevich
 
09.04.13
00:59
Создаешь объект. получаешь его форму. Объект не запишется пока ты не запишешь его программно либо через форму. всё
11 alexei366
 
09.04.13
01:09
(10) чо ты гонишь, какой создаш объект?
12 Dionis Sergeevich
 
09.04.13
01:17
(11) создаешь программно объект. Он не записан. Открываешь форму. И либо ты ее запишешь - записав объект, либо ты не запишешь. и созданный но не записанный объект пропадет
13 alexei366
 
09.04.13
01:24
(12) код примерный покажи
Основная теорема систематики: Новые системы плодят новые проблемы.