Запролнить форму документа

1. Tsprogrammist1 85 12.12.08 08:38 Сейчас в теме
Всем привет.
Задача: Есть докумет... в форме док создал кнопочку при ее нажатии открываеться внешняя обработка, в которой заполняються реквизиты "ЦельНаправления" и "ИсточникФинансированиядляСотрудника". При нажатии на кнопку запольнить должна заполняться табличная часть документа (т.е реквизиты таб части док. "Цель" и "ИсточникФинансирования"). При этом форма документа открыта. Строчки создавать не нужно их создает пользователь.

Проблема: Изменения видны только после того как зыкроешь док. и снова его откроешь.

Вопрос: Как сделать так чтоб не приходилось закрывать документ, а изменения видны были сразу?
Процедура ЗаполнитьНажатие(Элемент)
	ОбъектДок = Док.ПолучитьОбъект();

	Для каждого СтрокаТабличнойЧастиДокумента Из ОбъектДок.РаботникиОрганизации Цикл
		     СтрокаТабличнойЧастиДокумента.Цель=ЦельНаправления;
             СтрокаТабличнойЧастиДокумента.ИсточникФинансирования=ИсточникФинансированиядляСотрудника;
	КонецЦикла;
	  ОбъектДок.Записать();
КонецПроцедуры

Показать
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Душелов 4017 12.12.08 09:12 Сейчас в теме
Оповестить (Notify)

Синтаксис:
Оповестить(<Имя события>, <Параметр>, <Источник>)

Параметры:
<Имя события> (необязательный)
Тип: Строка. Имя события. Может быть использовано для идентификации сообщений принимающими их формами.
<Параметр> (необязательный)
Тип: Произвольный. Параметр сообщения. Могут быть переданы любые необходимые данные.
<Источник> (необязательный)
Тип: Произвольный. Источник события. Например, в качестве источника может быть указана другая форма.

Описание:
Посылает оповещение всем созданным формам и всем подключенным через метод ПодключитьОбработчикОповещения процедурам модуля приложения или общего модуля. Если для формы задана процедура-обработчик события ОбработкаОповещения, то она будет запущена, в процедуру будут переданы указанные параметры.
Данный механизм может, например, применяться для организации обмена сообщениями между открытыми формами.

Недоступен на сервере 1С:Предприятие. Не используется в модуле внешнего соединения.
4. Tsprogrammist1 85 12.12.08 10:55 Сейчас в теме
В модуле формы документа создал процедуру -
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
	      Форма=Параметр //Сюда попадает отладчик
	      Форма.Обновить(); // и сюда тоже попадает 
КонецПроцедуры

В свою добавил строчки...(2)
Процедура ЗаполнитьНажатие(Элемент) 
   ОбъектДок = Док.ПолучитьОбъект(); 

   Форма=ОбъектДок.ПолучитьФорму("ФормаДокумента",,);//!!!!!!!!!!!!!!!!!!!   

   Для каждого СтрокаТабличнойЧастиДокумента Из ОбъектДок.РаботникиОрганизации Цикл 
           СтрокаТабличнойЧастиДокумента.Цель=ЦельНаправления; 
             СтрокаТабличнойЧастиДокумента.ИсточникФинансирования=ИсточникФинансированиядляСо­трудника; 
   КонецЦикла; 
 
      Оповестить(,Форма,); //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     ОбъектДок.Записать(); 
КонецПроцедуры 

Показать


Чето не катит :(
3. Душелов 4017 12.12.08 09:13 Сейчас в теме
И в обработке оповещения обновить форму.
5. Душелов 4017 12.12.08 10:56 Сейчас в теме
В ПолучитьФорму передайте контекст текущий формы. См. параметры функции.
6. Tsprogrammist1 85 12.12.08 11:15 Сейчас в теме
Если не трудно привидите пожалуиста пример, а то я не вкуриваю про что вы... :)
7. Душелов 4017 12.12.08 11:23 Сейчас в теме
ПолучитьФорму (GetForm)

Синтаксис:
ПолучитьФорму(<Форма>, <Владелец>, <Ключ уникальности>)

Параметры:
<Форма> (необязательный)
Тип: Строка, ОбъектМетаданных: Форма . Имя формы, как оно задано в конфигураторе, или объект описания метаданного требуемой формы. Если параметр не указан, то используется основная форма, заданная в конфигураторе.

<Владелец> (необязательный)
Тип: Форма, Элемент управления. Объект, который будет являться владельцем открываемой формы.

Код
Форма = ОбъектДок.ПолучитьФорму("ФормаДокумента", ЭтаФорма);
Показать полностью
8. Душелов 4017 12.12.08 11:24 Сейчас в теме
Ну и в процедуре "Оповестить" так же лучше всего указать источник.
9. Tsprogrammist1 85 12.12.08 11:33 Сейчас в теме
Не прет гадина..... ((((((((

 Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
		   Если  ИмяСобытия="Заполнить" Тогда
		  Форма=Параметр;
	      Форма.Обновить();
       КонецЕсли;
КонецПроцедуры



Форма=ОбъектДок.ПолучитьФорму("ФормаДокумента",ЭтаФорма);


Оповестить("Заполнить",Форма,ЭтаФорма);
10. Душелов 4017 12.12.08 11:50 Сейчас в теме
А, я не заметил, что форма-то оповещение получает,
Тогда там в обработчике попробуйте вроде этого:

Код
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) 
         ЭлементыФормы.РаботникиОрганизации.СоздатьКолонки();
КонецПроцедуры
Показать полностью
11. Tsprogrammist1 85 12.12.08 12:27 Сейчас в теме
Все допетрил РАБОТАЕТ... Заполнение таб части документа прописал в модуле формы документа (а до тетого была в модуле формы Внешней обработки)
Душелов Вам Респектище огромное )))) Где тут моно плюсануть за Вас...

Вот она... )))
[

Процедура ЗаполнитьНажатие(Элемент)
	ОбъектДок = Док.ПолучитьОбъект();
	Форма=ОбъектДок.ПолучитьФорму("ФормаДокумента",ЭтаФорма);
	Оповестить("Заполнить",Форма,ЭтаФорма);
	ОбъектДок.Записать();
	КонецПроцедуры



Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
	   Если  ИмяСобытия="Заполнить" Тогда
		  Форма=Параметр;
	   Для каждого СтрокаТабличнойЧастиДокумента Из РаботникиОрганизации Цикл 
           СтрокаТабличнойЧастиДокумента.Цель=ЦельНаправления; 
             СтрокаТабличнойЧастиДокумента.ИсточникФинансирования=ИсточникФинансированиядляСо­­трудника­; 
   КонецЦикла; 	      Форма.Обновить();
	  КонецЕсли;
	   КонецПроцедуры

Показать
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот