В 1С7 можно отменить проведение только закрыв форму документа.
Хочу повесить на форму кнопку кот. закрывала бы форму, отменяла проведение документа и открывала его заново.
(1)А если кнопка будет в панели инструментов и на кнопке обработка, как обработке передать документ форма которого открыта? и как из обработки закрыть форму?
(1)Наверно всетаки на форме документа должна быть кнопка передающая текущий документ в обработку и закрывающая форму, а обработка в цикле пытается отменить проведение, а когда получится открывает форму.
//(3): не так. типа так (например). В форме документа:
ОткрытьФорму("Обработка.ПоКонтекстуФормыДокументаОтменитьПроведениеПереОткрыть",Контекст);
//в Обработке ПоКонтекстуФормыДокументаОтменитьПроведениеПереОткрыть:
Перем тДокум,тКонт;
Процедура ПриОткрытии() //предопределенная
тКонт=Форма.Параметр; тДокум=тКонт.ТекущийДокумент();
Форма.Параметр.Форма.Закрыть(0); Форма.ОбработкаОжилания("Обана",1);
КонецПроцедуры //ПриОткрытии
Процедура Обана()
Перем ВыбДок;
Если ТипЗначенияСтр(тКонт)="ГрупповойКонтекст" Тогда Возврат КонецЕсли;
ВыбДок.НайтиДокумент(тДокум); ВыбДок.СделатьНеПроведенным();
ОткрытьФорму(ВыбДок.ТекйщийДокумент());
Форма.ОбработкаОжидания("",0); Форма.Закрыть(0);
КонецПроцедуры //Обана
// только важно чтобы на морде обработки хоть какой-то элемент управления лежал
// (иначе форма не открывается - глюкофича такая в семерке)
в три действия можно решить задачу:
1. на форме повесить кнопку "Открыть в журнале". Если есть - нажать её.
2. закрыть документ, если в процедуре документа не стоит оператор закрытия формы документа
3.в журнале сделать док непроведенным.
//не понимаю, зачем процедуру отмены проведения включать в процесс штатной работы..
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший