Переключение на Главную Страницу Страницы: [1]  ОтправитьПечать
Горячая тема (более 10 ответов) Аналог "ПослеЗаписи()" есть в природе? (число прочтений - 9692 )
chicago
Senior Member
****
Отсутствует


1C++, I have nothing to
say more!

Сообщений: 316
Местоположение: Тернополь-Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Аналог "ПослеЗаписи()" есть в природе?
24. Августа 2006 :: 09:36
Печать  
Есть ситуация:
1. У некоторых обектов 1С (справочник, документ) есть, так назывемый "внешний", реквизит (ВР). Реквизит, значение которого хранится не в 1С таблицах, а во внешней по отношению к 1С (SQL) базе. Эти таблици связаны по ID (IDDOC).
2. При штатной записи обекта в 1С значения таких ВР также необходимо установить (обновить). Но как это решить если в предопр. процедуре "ПриЗаписи()" когда обект еще Выбран() = 0 у него нет ID (IDDOC).
3. Вот такую ситуация как мне кажется могла бы решить такая себе предопр. процедура "ПослеЗаписи()".
Жду ваших идей по этому поводу.  Улыбка
Спасибо.

PS.
Просьба соообщения от всяких там "СлафкоФ" не предлагать.
  
Наверх
ICQ  
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Аналог "ПослеЗаписи()" есть в природе?
Ответ #1 - 24. Августа 2006 :: 09:42
Печать  
Такой процедуры пока нет.
Можно делать стандартно - в ПриЗаписи() делать Записать(), а потом уже получать ID и делать с ним что надо.

P.S.
А что за тема со "СлафкоФ"?
  

FormEx developer
Наверх
www  
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Аналог "ПослеЗаписи()" есть в природе?
Ответ #2 - 24. Августа 2006 :: 09:48
Печать  
Цитата:
Такой процедуры пока нет.
Можно делать стандартно - в ПриЗаписи() делать Записать(), а потом уже получать ID и делать с ним что надо.


Черт... а я то мучался... А решение оказывается такое простое Улыбка
  
Наверх
 
IP записан
 
chicago
Senior Member
****
Отсутствует


1C++, I have nothing to
say more!

Сообщений: 316
Местоположение: Тернополь-Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Аналог "ПослеЗаписи()" есть в природе?
Ответ #3 - 24. Августа 2006 :: 09:53
Печать  
Цитата:
Такой процедуры пока нет.
Можно делать стандартно - в ПриЗаписи() делать Записать(), а потом уже получать ID и делать с ним что надо.

P.S.
А что за тема со "СлафкоФ"?


Спасибо, думаю идея реальная.
Термин "соообщения от всяких там "СлафкоФ"" - это "грязный" флуд.
  
Наверх
ICQ  
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Аналог "ПослеЗаписи()" есть в природе?
Ответ #4 - 24. Августа 2006 :: 10:39
Печать  
Буквально вчера вечером думал над этим (мне надо было текущий документ/элемент привязывать к другому элементу справочника) и пришёл-таки к такому коду в процедуре ПриЗаписи():

Код
Выбрать все
Если ПустоеЗначение(ТекущийЭлемент()/ТекущийДокумент())=1 Тогда
	 Записать();
КонецЕсли 



Ну а дальше делаем то, что хотим...
  
Наверх
 
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Аналог "ПослеЗаписи()" есть в природе?
Ответ #5 - 24. Августа 2006 :: 10:59
Печать  
Тогда уж так:
Код
Выбрать все
Если (СтатусВозврата() = 1) и (Выбран() = 0) Тогда
  Записать();
КонецЕсли; 

  

FormEx developer
Наверх
www  
IP записан
 
ADirks
1c++ developer
1c++ moderator
Отсутствует


А нужны ли мы нам?

Сообщений: 692
Местоположение: Новосибирск
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Аналог "ПослеЗаписи()" есть в природе?
Ответ #6 - 24. Августа 2006 :: 12:52
Печать  
Эх, а всё равно событие такое ужжжасно хотелось бы иметь. Например, чтобы оповестить все формы списков, реализованные на ТП, что надо обновиться, и не по таймауту, а прям сейчас. Без события приходится в ПриЗаписи() писать Записать(); ОтправитьСобытие(); Всё бы ничего, но вот 1С потом ещё раз записывает объект, и получается увеличение нагрузки на БД.
  
Наверх
 
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Аналог "ПослеЗаписи()" есть в природе?
Ответ #7 - 24. Августа 2006 :: 12:57
Печать  
Ну, для обновления ТП это только для локала хорошо. А в сети совершенно бесполезно.
  

FormEx developer
Наверх
www  
IP записан
 
chicago
Senior Member
****
Отсутствует


1C++, I have nothing to
say more!

Сообщений: 316
Местоположение: Тернополь-Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Аналог "ПослеЗаписи()" есть в природе?
Ответ #8 - 24. Августа 2006 :: 13:02
Печать  
Цитата:
Тогда уж так:
Код
Выбрать все
Если (СтатусВозврата() = 1) и (Выбран() = 0) Тогда
  Записать();
КонецЕсли; 



Именно так уже и сделал.
  
Наверх
ICQ  
IP записан
 
ADirks
1c++ developer
1c++ moderator
Отсутствует


А нужны ли мы нам?

Сообщений: 692
Местоположение: Новосибирск
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Аналог "ПослеЗаписи()" есть в природе?
Ответ #9 - 24. Августа 2006 :: 13:02
Печать  
Ну да, для того и используем.  Когда из ТП открываешь форму скажем элемента справочника, то при записи нехило бы обновить ТП - иначе пользователь будет слегка удивлён.  А городить огород с передачами контекстов - ох как не хочется. Событие намного прозрачнее.
  
Наверх
 
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Аналог "ПослеЗаписи()" есть в природе?
Ответ #10 - 24. Августа 2006 :: 13:22
Печать  
ADirks писал(а) 24. Августа 2006 :: 13:02:
Ну да, для того и используем.  Когда из ТП открываешь форму скажем элемента справочника, то при записи нехило бы обновить ТП - иначе пользователь будет слегка удивлён.  А городить огород с передачами контекстов - ох как не хочется. Событие намного прозрачнее.

А я сделал проще - повесил кнопку "Обновить" и сказал пользователям что с ней делать и в каких случаях Улыбка
  

FormEx developer
Наверх
www  
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Аналог "ПослеЗаписи()" есть в природе?
Ответ #11 - 24. Августа 2006 :: 13:48
Печать  
Цитата:
А я сделал проще - повесил кнопку "Обновить" и сказал пользователям что с ней делать и в каких случаях Улыбка

На инфостарт можно выложить в раздел "Автоматизация на отлично"  Смех
Шутка, конечно  Подмигивание
  
Наверх
 
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Аналог "ПослеЗаписи()" есть в природе?
Ответ #12 - 24. Августа 2006 :: 14:04
Печать  
Цитата:
А я сделал проще - повесил кнопку "Обновить" и сказал пользователям что с ней делать и в каких случаях Улыбка



Не проще повесить на ПриАктивацииОкна?
Записали справочник, вышли из той формы и все равно переходим на форму с ТП.
  
Наверх
 
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Аналог "ПослеЗаписи()" есть в природе?
Ответ #13 - 24. Августа 2006 :: 14:10
Печать  
Arta писал(а) 24. Августа 2006 :: 14:04:
Цитата:
А я сделал проще - повесил кнопку "Обновить" и сказал пользователям что с ней делать и в каких случаях Улыбка



Не проще повесить на ПриАктивацииОкна?
Записали справочник, вышли из той формы и все равно переходим на форму с ТП.

Проще. Но когда я это делал ПриАктивацииОкна еще не было Улыбка
  

FormEx developer
Наверх
www  
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: Аналог "ПослеЗаписи()" есть в природе?
Ответ #14 - 24. Августа 2006 :: 19:14
Печать  
Не понимаю, какие проблемы?

Код
Выбрать все
Процедура ПриЗаписи()
  фБылаЗапись=1;
КонецПроцедуры

Процедура ПриЗакрытии()
  Если фБылаЗапись=1 Тогда
    ДелаемВсеЧтоУгодно();
  КонецЕсли;
КонецПроцедуры 

  
Наверх
 
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Аналог "ПослеЗаписи()" есть в природе?
Ответ #15 - 24. Августа 2006 :: 19:24
Печать  
sedmin писал(а) 24. Августа 2006 :: 19:14:
Не понимаю, какие проблемы?

Проблема есть... Мне надо на новом документе, не выходя из него, получить его ID.
Например засунуть документ в лог. Да мало ли что может понадобиться...
  
Наверх
 
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: Аналог "ПослеЗаписи()" есть в природе?
Ответ #16 - 24. Августа 2006 :: 19:46
Печать  
Так получай. В ПриЗакрытии() он уже будет. Запись произойдет между ПриЗаписи() и ПриЗакрытии().

А пока не записал - его физически нет, неизвестно какой он будет. Если ты форму не хочешь закрывать, то сделай кнопку "Записать", тогда ИД появится.

Кстати, можешь просто написать

Код
Выбрать все
Процедура ПриЗакрытии()
  Если Выбран()=1 Тогда
    ЧтоНибудьСделать();
  КонецЕсли;
КонецПроцедуры 

  
Наверх
 
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Аналог "ПослеЗаписи()" есть в природе?
Ответ #17 - 25. Августа 2006 :: 09:13
Печать  
Нет. Мне надо иметь ID либо в ПриЗаписи, либо новую процедуру послезаписи.

В ПриЗакрытии у меня сейчас работает, но многого не могу сделать.

  
Наверх
 
IP записан
 
steban
1c++ developer
Отсутствует


#define sizeof(x) rand()

Сообщений: 787
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Аналог "ПослеЗаписи()" есть в природе?
Ответ #18 - 25. Августа 2006 :: 09:19
Печать  
Может это:
Обход блокировок в открытых формах документов и справочников
тебе подойдет?
romix, например для постобработки использует внешние события.
  

int getRandomNumber()&&{&&  return 4; //chosen by fair dice roll&&         //guaranteed to be random&&}
Наверх
 
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Аналог "ПослеЗаписи()" есть в природе?
Ответ #19 - 25. Августа 2006 :: 09:57
Печать  
Да Альф уже предложил решение, просто в ПриЗаписи делать Записать() Улыбка
  
Наверх
 
IP записан
 
КилоГрамм
Senior Member
****
Отсутствует


Таити, Таити...

Сообщений: 434
Зарегистрирован: 14. Июня 2006
Пол: Мужской
Re: Аналог "ПослеЗаписи()" есть в природе?
Ответ #20 - 09. Сентября 2006 :: 08:04
Печать  
Я в таких карявых случаях пишу в проце ПриЗакрытии: Если Выбран() = 1 Тогда ОткрытьФорму(Справочник/Журнал,Параметры). А в Форме спика Справочника/Журннала пишу все остальное в проце ПриПовторномОткрытии(). Конечно форма спика уже открыта
  

Константин
Наверх
 
IP записан
 
trdm
1c++ power user
qt1l developer
1c++ moderator
Отсутствует



Сообщений: 2343
Местоположение: г. Ростов-на-Дону
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Аналог "ПослеЗаписи()" есть в природе?
Ответ #21 - 16. Сентября 2006 :: 08:02
Печать  
Набрел на такой текст в классе:
Код
Выбрать все
Функция ЭмулироватьПослеЗаписи( псЭлемент ) Экспорт
	ЗначВозврата		= 0;
	м_ПерваяЗапись		= 0;
	СтатусВозвратаСтарый= СтатусВозврата();
	Если псЭлемент.Выбран() = 0 Тогда
		СтатусВозврата(0);
		Попытка
			псЭлемент.Записать();
			м_ПерваяЗапись = 1;
			Сообщить("Записан успешно.....");
			ЗначВозврата = 1;
		Исключение
			ЗначВозврата = 0;
			Сообщить(ОписаниеОшибки(),"!!!");
		КонецПопытки;
		СтатусВозврата(СтатусВозвратаСтарый);
	КонецЕсли;
	Возврат ЗначВозврата;
КонецФункции // ЭмулироватьПослеЗаписи()

 

  
Наверх
IP записан
 
Переключение на Главную Страницу Страницы: [1] 
ОтправитьПечать