Имя: Пароль:
1C
1C 7.7
v7: Можно ли выполнить процедуру ПриЗаписи() элемента справочника из обработки?
,
0 2scrdoc
 
21.09.11
02:20
Есть справочник. У него есть текстовый реквизит большой длины, который зависит от множества комбинаций нескольких реквизитов. Проще говоря, это как бы типизированное полное наименование. Когда происходит запись элемента происходит всяческие анализы и проверки и вообщем-то этот реквизит заполняется.
Есть обработка, которая создает элементы этого справочника. Но чтобы этот текстовый реквизит заполнился необходимо зайти в форму элемента и нажать кнопку ОК. Для объода этой ситуации обработка просто открывает форму вновь созданного элемента справочника, а там уже нажимается кнопка ОК.
Вопрос такой, можно ли каким-нибудь образом выполнить процедура ПриЗаписи() записанного элемента справочника из обработки?
1 sapphire
 
21.09.11
02:25
Можно, но не нужно.
2 2scrdoc
 
21.09.11
02:29
(1) А как можно.
3 NS
 
21.09.11
02:30
ОткрытьФорму() с параметром. По параметру -
ПриЗаписи();
Записать();
СтатусВозврата(0);
Возврат;
4 NS
 
21.09.11
02:31
Но если у кого-то элемент справочника открыт - то не взлетит.
Проще переписать проверку в обработке, а вообще еще лучше вынести в глобальный модуль.
5 sapphire
 
21.09.11
02:38
(2)(3)(4) Так делать не стОит по-логике, ИМХО.
Необходимо код, формирующий этот реквизит тупо перенести в глобальный модуль и всё. Хошь функцией, хощь процедурой, абы с экспортом было. А ли я не прав?
6 NS
 
21.09.11
02:41
(5) А что написано в (4)???
7 sapphire
 
21.09.11
02:44
(6) Извини, я уже почти на автомате пишу - фоном сакля данные неудобоваримые лопатит и будет еще лопатить  дня два :)))
8 2scrdoc
 
21.09.11
03:27
(3) Не получается
Записать();
{Справочник.Модели.Форма.Модуль(910)}: Данная команда не может выполняться в формуле элемента диалога!
9 sapphire
 
21.09.11
03:31
(8) недума
10 NS
 
21.09.11
11:04
(8) Ты же говорил что из обработки это запускаешь...
Или обработку ты запускаешь из самого элемента?!
11 2scrdoc
 
21.09.11
18:48
(10) Обработка создала новый элемент справочника, заполнила его реквизиты, записала.
После этого делаю ОткрытьФорму(Спр,"СразуЗаписать")
Вот после этого и вылазит эта ошибка.
12 Semargl
 
21.09.11
18:52
Нужно в глобальнике обрабатывать ссылку - найти с ее помощью и спозиционироваться на конкретном элементе записи, а потом уже его проверять/записывать
13 NS
 
21.09.11
19:26
(11) И что написано в ПриОткрытии()?
Такой ошибки быть не должно, такая ошибка если из функции на форме вызывается метод.
14 Cthulhu
 
21.09.11
19:36
ОткрытьФорму(тЭлемент,тКонтекст);
тКонтекст.Форма.ОбработкаОжидания("ПриЗаписи",1);
15 2scrdoc
 
22.09.11
01:42
Вообщем ничего не получалось.
Потом загрузил Formex и сделал вызов Записать() в процедуре ПослеОткрытия(). Все сразу заработало.
Получается, что ПриОткрытии() еще нет формы и Записать() нельзя скорее всего потому, что нет еще реквизитов на форме?
Я правильно понимаю что без Formex и использования процедуры в глобальном модуле этого сделать было невозможно?
16 NS
 
22.09.11
02:56
(15) открывать форму нужно записанного элемента справочника.
17 NS
 
22.09.11
02:57
спр.новый();
спр.Записать();
конт="ПриЗаписи";
Открытьформумодально(спр.текущийэлемент,конт);
18 NS
 
22.09.11
02:58
(15) ну и открывать, если создаешь в цикле - естественно модально.
19 NS
 
22.09.11
03:03
спр.новый();
спр.установитьновыйкод("");
спр.наименование="блабла";
спр.Записать();
конт="ПриЗаписи";
Открытьформумодально(спр.Текущийэлемент(),конт);
//
//В справочнике,
Процедура приоткрытии()
Если пустоеЗначение(Форма.параметр)=0 тогда
  Если типЗначениястр(форма.параметр)="Строка" тогда
   Если форма.параметр="ПриЗаписи" тогда
     ПриЗаписи();
     Записать();
     статусвозврата(0);
     возврат;
   КонецЕсли;
  КонецЕсли;
КонецЕсли;
....
20 2scrdoc
 
23.09.11
01:08
(19)
Не идет в модуле ПриОткрытии()
Записать();
Данная команда не может выполняться в формуле элемента диалога!
21 NS
 
23.09.11
10:39
(20) Странно...
22 Ёпрст
 
23.09.11
10:41
(15) всё можно и формекс для этого не нужен.
23 2scrdoc
 
23.09.11
18:36
(15) как можно без Formex? У меня без него никак не получается.
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс