Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Горячая тема (более 10 ответов) ВыполнитьПроцедуру, ВыполнитьФункцию (число прочтений - 4274 )
MaxPiter
Full Member
***
Отсутствует


I Love 1C++

Сообщений: 187
Местоположение: Санкт-Петербург
Зарегистрирован: 20. Ноября 2008
Пол: Мужской
ВыполнитьПроцедуру, ВыполнитьФункцию
12. Августа 2010 :: 07:54
Печать  
Добрый день.

Код
Выбрать все
Процедура Сформировать()
	Перем Конт;
	Перем НРез;

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

	Сервис.ВыполнитьПроцедуру(Конт, "ВводНаОсновании", Список);
	Конт.Форма.Обновить();

	Сообщить(Сервис.ВыполнитьФункцию(Конт, "Записать", , Нрез));
	Сообщить(Сервис.ВыполнитьФункцию(Конт, "Провести", , Нрез));
КонецПроцедуры 



На последние 2 строки Сообщает 0, что функция не выполнена.
Подскажите пожаолуйста, как записать и провести таким способом?

если делаю
Сервис.ВыполнитьПроцедуру(Конт, "ПоКнопкеОк", Список);
то ругается:
Записать();
{Документ.Реализация.Форма.Модуль(2513)}: Данная команда не может выполняться в формуле элемента диалога!

Поможите побороть пожалуйста Улыбка
-----
Formex 2.0.5.99 beta
1C++ 3.0.1.28+trad mod #12
  
Наверх
www  
IP записан
 
MaxPiter
Full Member
***
Отсутствует


I Love 1C++

Сообщений: 187
Местоположение: Санкт-Петербург
Зарегистрирован: 20. Ноября 2008
Пол: Мужской
Re: ВыполнитьПроцедуру, ВыполнитьФункцию
Ответ #1 - 12. Августа 2010 :: 08:15
Печать  
я что-то не то спросил? Гуру зашли, потоптались и вышли Печаль
  
Наверх
www  
IP записан
 
MaxPiter
Full Member
***
Отсутствует


I Love 1C++

Сообщений: 187
Местоположение: Санкт-Петербург
Зарегистрирован: 20. Ноября 2008
Пол: Мужской
Re: ВыполнитьПроцедуру, ВыполнитьФункцию
Ответ #2 - 12. Августа 2010 :: 08:57
Печать  
Пока извращаюсь народными методами:

Код
Выбрать все
Процедура Сформировать()
	Перем Конт;

	Сервис = СоздатьОбъект("Сервис");
	Список = СоздатьОбъект("СписокЗначений");
	wsh=СоздатьОбъект("WScript.Shell");
	Список.ДобавитьЗначение(ТекДок);

	ОткрытьФорму("Документ.Реализация", Конт);
	Конт.АвтоВремяТекущее();

	Сервис.ВыполнитьПроцедуру(Конт, "ВводНаОсновании", Список);
	Конт.Форма.Обновить();

	Конт.Активизировать("кнОК",1);
    wsh.SendKeys("{ENTER}");
КонецПроцедуры 



но хочется без WScript
  
Наверх
www  
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: ВыполнитьПроцедуру, ВыполнитьФункцию
Ответ #3 - 12. Августа 2010 :: 09:23
Печать  
MaxPiter писал(а) 12. Августа 2010 :: 08:15:
я что-то не то спросил? Гуру зашли, потоптались и вышли Печаль


Как бэ... любое открытие документа, чтоб вызвать процедуру в нём, это всё способ через одно место, вот и советовать никто не хочет.
  
Наверх
 
IP записан
 
MaxPiter
Full Member
***
Отсутствует


I Love 1C++

Сообщений: 187
Местоположение: Санкт-Петербург
Зарегистрирован: 20. Ноября 2008
Пол: Мужской
Re: ВыполнитьПроцедуру, ВыполнитьФункцию
Ответ #4 - 12. Августа 2010 :: 09:29
Печать  
Eprst писал(а) 12. Августа 2010 :: 09:23:
Как бэ... любое открытие документа, чтоб вызвать процедуру в нём, это всё способ через одно место, вот и советовать никто не хочет.


Если делаю без открытия
Код
Выбрать все
Процедура Сформировать()
	Перем Конт;

	Сервис = СоздатьОбъект("Сервис");
	Список = СоздатьОбъект("СписокЗначений");
	Список.ДобавитьЗначение(ТекДок);

	НДок = СоздатьОбъект("Документ.Реализация");
	НДок.Новый();
	НДок.АвтоВремяТекущее();
	Сервис.ВыполнитьПроцедуру(НДок, "ВводНаОсновании", Список);
	НДок.Записать();

КонецПроцедуры 



то не вызывается Процедура ВводНаОсновании, как тогда ее вызвать?
  
Наверх
www  
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: ВыполнитьПроцедуру, ВыполнитьФункцию
Ответ #5 - 12. Августа 2010 :: 09:32
Печать  
Типа того:

Код
Выбрать все
	Д = СоздатьОбъект("Документ.СчетФактураВыданный");
	Д.Новый();
	Д.ДатаДок = Докум.ДатаДок;
	Д.АвтоКнигаПродаж 	= 1;
	глЗаполнитьШапкуНаОсн(Д,Докум.ТекущийДокумент());
	Д.АвтоВремяКонецДня();
	Д.Записать();
	Д.Провести(); 


  
Наверх
 
IP записан
 
MaxPiter
Full Member
***
Отсутствует


I Love 1C++

Сообщений: 187
Местоположение: Санкт-Петербург
Зарегистрирован: 20. Ноября 2008
Пол: Мужской
Re: ВыполнитьПроцедуру, ВыполнитьФункцию
Ответ #6 - 12. Августа 2010 :: 09:40
Печать  
ВводНаОсновании - это просто как пример.

Eprst писал(а) 12. Августа 2010 :: 09:32:
Типа того:


хммм, похоже это правильно решение. Дальше надо будет цеплять:
Есть оператор у которого есть документ Заявка, нужно одной кнопкой, создать подчиненнные Комплектация, ЗаявкаНаСклад, Реализация, распечатать у всех документов соответствующие формы.

Че-то пользуясь ВК начинаешь забывать про стандартный функционал 1С
Спасибо, буду разбираться.
  
Наверх
www  
IP записан
 
MaxPiter
Full Member
***
Отсутствует


I Love 1C++

Сообщений: 187
Местоположение: Санкт-Петербург
Зарегистрирован: 20. Ноября 2008
Пол: Мужской
Re: ВыполнитьПроцедуру, ВыполнитьФункцию
Ответ #7 - 12. Августа 2010 :: 09:54
Печать  
и все же

Код
Выбрать все
Процедура Сформировать()
	Перем Конт;

	Сервис = СоздатьОбъект("Сервис");
	Список = СоздатьОбъект("СписокЗначений");
	Список.ДобавитьЗначение(ТекДок);

	НДок = СоздатьОбъект("Документ.Реализация");
	НДок.Новый();
	НДок.АвтоВремяТекущее();
	НДок.Фирма = ТекДок.Фирма;
	глЗаполнитьШапкуНаОсн(НДок,ТекДок.ТекущийДокумент());
	Сервис.ВыполнитьПроцедуру(НДок, "ВводНаОсновании", Список);
	НДок.Записать();

КонецПроцедуры 



ВыполнитьПроцедуру не срабатывает, потому как НДок - документ а не ГрупповойКонтекст, можно как-то ВыполнитьПроцедуру у неоткрытого докумета имея сам документ?

upd:
что-то типа Конт = ПолучитьКонтекст(НДок)
  
Наверх
www  
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: ВыполнитьПроцедуру, ВыполнитьФункцию
Ответ #8 - 12. Августа 2010 :: 10:02
Печать  
Блин, понаберут по объявлению..
Улыбка

Контекст формы есть только у открытой формы, так понятней ?
Для твоей задачи, открывать форму не надо, достаточно прописать код в самой обработке. Это в разы быстрее, чем открывать форму документа  и через контекст открытой формы пытаться запустить процедуру там.

  
Наверх
 
IP записан
 
MaxPiter
Full Member
***
Отсутствует


I Love 1C++

Сообщений: 187
Местоположение: Санкт-Петербург
Зарегистрирован: 20. Ноября 2008
Пол: Мужской
Re: ВыполнитьПроцедуру, ВыполнитьФункцию
Ответ #9 - 12. Августа 2010 :: 10:03
Печать  
с 700тым тебя постом!
... (пытаюсь не язвить)
  
Наверх
www  
IP записан
 
MaxPiter
Full Member
***
Отсутствует


I Love 1C++

Сообщений: 187
Местоположение: Санкт-Петербург
Зарегистрирован: 20. Ноября 2008
Пол: Мужской
Re: ВыполнитьПроцедуру, ВыполнитьФункцию
Ответ #10 - 12. Августа 2010 :: 10:13
Печать  
т.е. вариант, у неоткрытого документа ВыполнитьПроцедуру() невозможно?
  
Наверх
www  
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: ВыполнитьПроцедуру, ВыполнитьФункцию
Ответ #11 - 12. Августа 2010 :: 10:21
Печать  
конечно нет.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать