Имя: Пароль:
1C
 
Вызов процедуры при записи элемента в списке справочника
0 Tanya
 
28.10.04
14:11
Здравствуйте! Помогите кто знает, в форме списка справочника, при записи элемента надо в другую процедуру передать ссылку на записанный элемент, при записи сущ. элемента все хорошо работает, при создании нового никак не хочет передавать ссылку, что у меня не так и как сделать так, чтобы заработало :)

Процедура ПриЗаписи()      
   Если ПустоеЗначение(ТекущийЭлемент())=1  Тогда
       Записать();        
   КонецЕсли;
   ТекЭл = ТекущийЭлемент();
   МояПроцедура(ТекЭл);
КонецПроцедуры // ПриЗаписи()
1 NS
 
28.10.04
14:13
Процедура ПриЗаписи()      
  Если Выбран()=0  Тогда
      Записать();        
  КонецЕсли;
  ТекЭл = ТекущийЭлемент();
  МояПроцедура(ТекЭл);
КонецПроцедуры // ПриЗаписи()
2 bsg
 
28.10.04
14:13
Элемент создается в форме или в списке?
3 Tanya
 
28.10.04
14:21
(NS) Я так тоже пробовала, все равно как будто не записывает. В "Если" в любом случае заходить, но потом...:-(
4 Tanya
 
28.10.04
14:22
Элемент создается в списке, справочник простейщий, одно наименование и код
5 bsg
 
28.10.04
14:28
Собственно, причина понятна - пока ПриЗаписи() не закончилась объекта еще нет.
6 Rovan
 
гуру
28.10.04
14:29
(4) И чего ? (1) Не работает разве ?
7 NS
 
28.10.04
14:29
(bsg) А что-же тогда делает метод записать()?
8 Tanya
 
28.10.04
14:31
(5) Однако, если аналогично все сделать в форме справочника, то все отлично работает, записывает и возвращает готовую ссылку
9 NS
 
28.10.04
14:32
Только в форме элемента работает при записи...
Можно сделать по аналогии с этим
http://www.sinor.ru/~my1c/knowhow/nogrspr.html
10 bsg
 
28.10.04
14:32
+(5) Как вариант: редактировать в форме, в кнопку записи после Записать добавить вызов процедуры.
11 NS
 
28.10.04
14:33
(+9) В смысле Записать()
12 Tanya
 
28.10.04
14:34
(10) Увы, ползователям удобно редактировать именно в списке
13 SKrin
 
28.10.04
14:34
Перем ТекЭл,НеЗакр;
Процедура ПриЗаписи()      
   ТекЭл=ТекущийЭлемент();
   НеЗакр=1;
   Форма.Закрыть()
КонецПроцедуры // ПриЗаписи()

Процедура ПриЗакрыти()
  Если НеЗакр=1 Тогда
      СтатусВозврата(0);
      МояПоц(ТекЭл);
      НеЗакр=0;
      Возврат()
 КонецЕсли;
КонецПроцедуры;
14 bsg
 
28.10.04
14:38
(12) Тогда, надо порыться в других предопределенных процедурах формы списка.
15 bsg
 
28.10.04
14:43
(7) Я думаю, что в ваших вариантах оба условия не выполняются и до Записать() не доходит. А, если условия убрать - зациклится.
16 bsg
 
28.10.04
14:45
+(14) Или что-нибудь с извратом чудить.
17 NS
 
28.10.04
14:47
(15) см. 9,11.
Записать() не работает в форме списка.
18 NS
 
28.10.04
14:48
(+15) Что зациклится??? Метод записать() не вызывает процедуру ПриЗаписи!!!
19 GrayT
 
28.10.04
14:48
13 - не работает
Работает
Перем флПередать;
//_____________________________________________________________________________
Функция Проба()
   Если флПередать=1 Тогда
       Если Выбран()=1  Тогда
           Предупреждение(ТекущийЭлемент());
       КонецЕсли;
       флПередать=0;
   КонецЕсли;
КонецФункции //Проба
//_____________________________________________________________________________
Процедура ПриЗаписи()
   флПередать=1;
КонецПроцедуры //ПриЗаписи
флПередать=0;
20 Tanya
 
28.10.04
14:50
(13) Работает однако... :-) Спасибо.
(14) Если исп. другие пред. проц, то из них может быть выход и без записи...
21 Оборотень
 
28.10.04
14:51
Люди, а почему
...
  ТекЭл = ТекущийЭлемент();
  МояПроцедура(ТекЭл);
...
может лучше
..
МояПроцедура(ТекущийЭлемент());
..

мне кажется в присваивании что-то не так происходит.
1С справочник, т.е. елемент нужный нам не позиционирует...
22 GrayT
 
28.10.04
14:51
+19 На форме невидимый текст с Проба()
23 NS
 
28.10.04
14:54
(21.1) В третий раз - не работает метод записать() в форме списка.
24 Оборотень
 
28.10.04
14:56
+ (21)
или объект инициализировать нужно
ТекЭл=СоздатьОбъект("Справочник.хххх");
ТекЭл.НайтиЭлемент(ТекущийЭлемент());
...
25 NS
 
28.10.04
14:57
(24) Классный ганджубас...
Тебе еще раз повторить, что записать() не работает?
26 bsg
 
28.10.04
14:57
При записи отправляться немодально в обработку, там дождаться окончания записи и выполнить нужную процедуру.
27 NS
 
28.10.04
14:58
(26) Где сегодня траву такую раздают???
Ты хоть ветку прочитать в состоянии?
28 Tanya
 
28.10.04
15:00
(GrayT) Спасибо. Но у меня таких справочников штук 15, и тут в друх местах копировать придется и в модуле и в форме, что-нибудь да пропущу... Так что мне чем меньше, тем лучше
29 Guk
 
28.10.04
15:01
Классно Танья всех развела...
30 Оборотень
 
28.10.04
15:04
(25) да понял я что не работает!!!
Ну было у меня временное умопомешательство ... ну извиняюсь :) :) :)
31 GrayT
 
28.10.04
15:05
(28)Я где то накосячил а где не вижу - у меня 13 не работает :(((
32 bsg
 
28.10.04
15:07
(27) Всегда с запасом беру.
33 Оборотень
 
28.10.04
15:15
(31)
Похоже что пока ПриЗаписи() не отработает до элемента не дотянешься :(
34 Tanya
 
28.10.04
15:19
13 вот в таком виде у меня работает:
Перем ТекЭл, НеЗакр;

Процедура ПриЗаписи()      
    Если Выбран() = 0 Тогда
       НеЗакр = 1;      
       Форма.Закрыть();
    Иначе
       НеЗакр = 0;
       МояПроцедура(ТекущийЭлемент());
    КонецЕсли;
КонецПроцедуры // ПриЗаписи()

Процедура ПриЗакрытии()
   
   Если НеЗакр = 1 Тогда
       МояПроцедура(ТекущийЭлемент());
       НеЗакр = 0;
       СтатусВозврата(0);
       Возврат;
   КонецЕсли;
   
КонецПроцедуры // ПриЗакрытии()
35 GrayT
 
28.10.04
15:20
Но 20 сказано что заработало - ни фига не понимаю
36 GrayT
 
28.10.04
15:28
34 - так работает. Потом еще посмотрю, что за прикол с 13
37 bsg
 
28.10.04
15:30
+ (27) Сама, то, читала?
В справочнике:
Процедура ПриЗаписи()
   ОткрытьФорму("Обработка.ВыгрузкаПриЗаписи",Контекст);
КонецПроцедуры // ПриЗаписи()

В обработке ВыгрузкаПриЗаписи:
Перем Что;
Процедура ПриОткрытии()
   Что=Форма.Параметр;
   Форма.Закрыть();
КонецПроцедуры // ПриОткрытии()
Процедура ПриЗакрытии()
// К этому моменту ПриЗаписи() в справочнике уже закончится    
// и Что.Выбран() станет 1
   ТанинаВыгрузка(Что);
КонецПроцедуры // ПриЗакрытии()
38 SKrin
 
28.10.04
15:47
(36) а ты после процедур добавил НеЗакр=0; ?
39 GrayT
 
28.10.04
15:54
38 - Добавил. Проблема в другом была. Before не есть After. Код в 34 существенно отличается
40 Tanya
 
28.10.04
16:09
(39)Главное же не код, главное чтобы идея была! :-) А идея верная, так же как и 19 и 37, в принципе то же самое, только разные реализации.
Программист всегда исправляет последнюю ошибку.