Помогите разобраться с перепроведением подчиненого документа! Плиззз!!!
22.06.2006
15:33
#1
Такая ситуация: Существует документ "Расходная_Накладная" , и введенный на её основании док. "Счет_Фактура". Хочу в случае внесения изменений в Накладную, Автоматически изменять и проводить СЧФ с измененной табличной частью. Помогите с методом "ОткрытьФорму" , у меня в модуле СЧФ есть процедура "Переввести()" заполняющая Док.СЧФ по строкам документа основания.
Хочу обратиться к ней из модуля расходной накладной!
Хочу обратиться к ней из модуля расходной накладной!
22.06.2006
15:48
#2
"ОткрытьФорму(<Документ>,<КонтекстФормы>,<РежимПросмотра>)
...
<КонтекстФормы> - имя переменной, куда можно задать значение любого типа для передачи в открываемую форму. Данное значение будет доступно в открытой форме как атрибут Форма.Параметр. После исполнения данного метода система вернет в данную переменную контекст открытой формы (необязателен);
В Сч/Ф, в процедуре ПриОткрытии() можно мониторить Форма.Параметр и если он равен к примеру "Перепровести" то и вызвать уже в самой Сч/ф процедуру "Переввести()".
"
...
<КонтекстФормы> - имя переменной, куда можно задать значение любого типа для передачи в открываемую форму. Данное значение будет доступно в открытой форме как атрибут Форма.Параметр. После исполнения данного метода система вернет в данную переменную контекст открытой формы (необязателен);
В Сч/Ф, в процедуре ПриОткрытии() можно мониторить Форма.Параметр и если он равен к примеру "Перепровести" то и вызвать уже в самой Сч/ф процедуру "Переввести()".
"
22.06.2006
16:18
#3
"Спасибо IceBeerg !
Все это описанно в помощнике . Мне бы ссылочку на пример использования. Иль кусок кода. Слабо представляю как реализовать твой совет. Как вызвать из одного модуля, процедуру модуля подчиненного документа , Пробывал так:
Док=СоздатьОбъект("Документ");
Если Док.ВыбратьПодчиненныеДокументы(,ДатаДок,ТекущийДокумент())=1 Тогда
//Сообщить("Есть Подчиненные");
Док.Вид();
Если Вопрос("Существует подчиненый документ."+Док.ПредставлениеВида() +" "+Док.НомерДок+" на сумму= "+Док.Итог("Сумма")+ " Исправить?",4)=6 Тогда
Если Док.Выбран()=1 Тогда;
Парам = СоздатьОбъект("СписокЗначений");
Парам.ДобавитьЗначение( ЗДЕСЬ должно БЫТЬ Значение типа Документ, вопрос какое? );
ОткрытьФорму(Парам,, 0);
Док.Переввести(****); - а здесь
Сообщить(Док.ПредставлениеВида()+" "+Док.НомерДок+" на сумму= "+Док.Итог("Сумма")+" Проведен");
Док.Провести();
КонецЕсли;
Иначе
Провести();
КонецЕсли;
КонецЕсли;
КонецЕсли;
Да и вообще нужно ли это? В принципе ведь можно сделать автоматически ВводНаОсновании(), но вот тоже вопрос как вызвать?"
Все это описанно в помощнике . Мне бы ссылочку на пример использования. Иль кусок кода. Слабо представляю как реализовать твой совет. Как вызвать из одного модуля, процедуру модуля подчиненного документа , Пробывал так:
Док=СоздатьОбъект("Документ");
Если Док.ВыбратьПодчиненныеДокументы(,ДатаДок,ТекущийДокумент())=1 Тогда
//Сообщить("Есть Подчиненные");
Док.Вид();
Если Вопрос("Существует подчиненый документ."+Док.ПредставлениеВида() +" "+Док.НомерДок+" на сумму= "+Док.Итог("Сумма")+ " Исправить?",4)=6 Тогда
Если Док.Выбран()=1 Тогда;
Парам = СоздатьОбъект("СписокЗначений");
Парам.ДобавитьЗначение( ЗДЕСЬ должно БЫТЬ Значение типа Документ, вопрос какое? );
ОткрытьФорму(Парам,, 0);
Док.Переввести(****); - а здесь
Сообщить(Док.ПредставлениеВида()+" "+Док.НомерДок+" на сумму= "+Док.Итог("Сумма")+" Проведен");
Док.Провести();
КонецЕсли;
Иначе
Провести();
КонецЕсли;
КонецЕсли;
КонецЕсли;
Да и вообще нужно ли это? В принципе ведь можно сделать автоматически ВводНаОсновании(), но вот тоже вопрос как вызвать?"
22.06.2006
17:01
#4
"Вариант 1. Примерно так:
Документ "Накладная"
----------------------
Парам = СоздатьОбъект("СписокЗначений");
Парам.ДобавитьЗначение("ЗаполнитьНаОсновании", "Команда");
// !!! по идее нужно проверить на заблокированность документа
ОткрытьФормуМодально(Док.ТекущийДокумент(), Парам);
// можно получить из параметра результат
Док.Провести();
Документ "СчетФактура"
-----------------------
Процедура ПриОткрытии()
// !!! вставить проверку на список
Команда = Форма.Параметр.Получить("Команда");
Если Команда = "ЗаполнитьНаОсновании" Тогда
ЗаполнитьНаОсновании(ДокОснование);
СтатусВозврата(0);
// можно передать в параметр результат
Возврат;
КонецЕсли
Если открывать не модально, то неизвестно когда форма закончит выполнять обработку!
P.S. ДокОснование можно передавать через СЗ
Вариант 2: Использовать внешнюю компоненту (например 1С++) - и вызывать функции через контекст
"
Документ "Накладная"
----------------------
Парам = СоздатьОбъект("СписокЗначений");
Парам.ДобавитьЗначение("ЗаполнитьНаОсновании", "Команда");
// !!! по идее нужно проверить на заблокированность документа
ОткрытьФормуМодально(Док.ТекущийДокумент(), Парам);
// можно получить из параметра результат
Док.Провести();
Документ "СчетФактура"
-----------------------
Процедура ПриОткрытии()
// !!! вставить проверку на список
Команда = Форма.Параметр.Получить("Команда");
Если Команда = "ЗаполнитьНаОсновании" Тогда
ЗаполнитьНаОсновании(ДокОснование);
СтатусВозврата(0);
// можно передать в параметр результат
Возврат;
КонецЕсли
Если открывать не модально, то неизвестно когда форма закончит выполнять обработку!
P.S. ДокОснование можно передавать через СЗ
Вариант 2: Использовать внешнюю компоненту (например 1С++) - и вызывать функции через контекст
"
Читают тему
(гостей: 1)