Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Выполнение процедуры из другого документа
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 7.7
ZhenyaYa
Здравствуйте еще раз)
Подскажите как можно выполнить процедуру с документа1, которая находится в модуле документа2. Смотрю у формекс есть

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


но здесь контекст передается через открыть форму...можно ли как то без открытия формы?
MATEVI
Вызов процедур/функций документов/справочников/обработок/отчетов извне
// Вызов процедуры на примере документа.
// модуль формы документа
Процедура ПриОткрытии()
     Если ТипЗначенияСтр(Форма.Параметр)="СписокЗначений" тогда
          СЗ=Форма.Параметр;                        
          Команда=СЗ.Получить("Команда");
          Если "Печать"=Команда тогда  
               Печать();  
               СтатусВозврата(0);
               Возврат;
          КонецЕсли;    
     КонецЕсли;    
КонецПроцедуры
// Сам вызов (из любого места конфигурации):
СЗ=СоздатьОбъект("СписокЗначений");
СЗ.ДобавитьЗначение("Печать","Команда");
ОткрытьФормуМодально(Док.ТекущийДокумент(),СЗ);


По материалам интернета
ZhenyaYa
а без открытия формы?
просто делал вчера через открыть форму, думал открыть форму, выполнить процедуру с открытого документа ( которая вызывается "приОткрытии"), закрыть форму, открыть следующую...и так порядка 500 раз. вот только они закрываться не успевают...в результате открывается некоторое количество доков и зависает...
Kutuzov
Цитата(ZhenyaYa @ 19.11.12, 16:50) необходимо зарегистрироваться для просмотра ссылки
а без открытия формы?
просто делал вчера через открыть форму, думал открыть форму, выполнить процедуру с открытого документа ( которая вызывается "приОткрытии"), закрыть форму, открыть следующую...и так порядка 500 раз. вот только они закрываться не успевают...в результате открывается некоторое количество доков и зависает...


Я делал заход в форму документа в процедуру через "ПриОткрытии". От туда вызывал нужную мне процедуру и потом сбрасывал продолжение открытия, тем самым форма даже не появляеться и сама закрываеться.

Процедура Печать2011(Парам=0,ТекПринтер="", Количество=1,  ТолькоСвою = 0, ТолькоКлиента =0 ) Далее
//============================
Процедура ПриОткрытии()  
    
    Параметры = Форма.Параметр;
    Если ПустоеЗначение(Параметры)=0 Тогда
        Печать = Параметры.ПолучитьЗначение(1,Печать);
        ТекПринтер = Параметры.ПолучитьЗначение(2,ТекПринтер);  
        Количество = Параметры.ПолучитьЗначение(3,Количество);
        ТолькоСвою = Параметры.ПолучитьЗначение(4,ТолькоСвою);
        ТолькоКлиента = Параметры.ПолучитьЗначение(5,ТолькоКлиента);
        Если Печать = 1 Тогда                                        
            Печать2011(Печать,ТекПринтер,Количество,ТолькоСвою,ТолькоКлиента);
            СтатусВозврата(0); // Соответственно вот и отмена открытия
        Конецесли;                
    КонецЕсли;
ZhenyaYa
спасибо, чьот я сразу не подумал про статус возврата...спасибо, попробую)
matevi, сорри
mister-x
необходимо зарегистрироваться для просмотра ссылки
див. тестову базу (пост 13), можна і без передачі параметрів обійтись
ZhenyaYa
Спасибо все работает:) я вам уже должен как земля колгоспу smile.gif

и еще вопрос на будущее, можно как то с одного док получать контекст формы другого, не открывая его?
Vofka
Цитата(ZhenyaYa @ 19.11.12, 18:11) необходимо зарегистрироваться для просмотра ссылки
и еще вопрос на будущее

Правила, пункт 6! 05040.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.