Имя: Пароль:
1C
1C 7.7
v7: Как в контекст открытого документа передать признак модифицированности документа
0 victuan1
 
07.12.12
06:00
Открытый документ через метод ОткрытьФорму открывает внешнюю обработку, в которую передает свой контекст. Во внешней обработки меняются реквизиты шапки этого документа и передаются в контекст открытого документа. Но признак модифицированности в нем не устанавливается.
Как установить этот признак? Вроде простой вопрос, но не получается.
Признак нужно устанавливать только в том случае, если во внешней обработке МЕНЯЮТСЯ реквизиты открытого документа.
Код документа менять нельзя, внешняя обработка открывается через механизм ВПФ (внешние печатные формы).
1 Морозов Александр
 
07.12.12
06:22
Тыж модально обработку открываешь?
2 ParaWiz
 
07.12.12
06:25
А вообще проще некуда, если открываешь обработку из документа, то передавай в нее параметры, и в обработке меняй параметры
3 victuan1
 
07.12.12
06:46
(1) Нет, не модально. ВПФ не модально работает.
(2) Передаю, меняю, а как вернуть признак модифицированности?
4 Табуретко
 
07.12.12
06:50
закрыв обработку...
5 ADirks
 
07.12.12
06:50
что-то вроде Конт.Форма.Обновить(1);
6 Табуретко
 
07.12.12
06:51
(5) без обновить() само поменяется как обработку закроет...
7 Voronve
 
07.12.12
07:03
(0) Имхо, не решается (т.к. нельзя править код документа).
Ты можешь отловить изменения, если у тебя форма обработки открывается модально, либо открывается через подбор.
Если модально, то в доке пишешь что то типа:

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

Если спПараметры.Получить("СтатусВозврата") = 1 Тогда
...
КонецЕсли;

В обработке по кнопе "ОК" достаточно прописать
Форма.Параметр.Установить("СтатусВозврата", 1);

Если через подбор, то в доке пишешь что то типа
спПараметры = СоздатьОбъект("СписокЗначений");
.....
ОткрытьФорму(<ТвояОбработка>, спПараметры);
.....

И отлавливаешь возврат управления через обработку подбора.

При использовании внешних печатных форм, управление в форму документа не возвращается.
Чет я даже и не знаю как прописать то чо тебе надо.
8 Voronve
 
07.12.12
07:13
(0) Хотя ...
Попробуй в своей обработке прописать:

Процедура ПоКнопкеОК()

// Проверка на закрытие родительской формы
Если ТипЗначения(Конт) = 100 Тогда
Конт.Контрагент = ВыбКонтрагент; // Или что там у тебя
....
Конт.Форма.Обновить(1);
КонецЕсли;

КонецПроцедуры
9 victuan1
 
07.12.12
07:22
Спасибо!
Конт.Форма.Обновить(1); работает!
Ошибка? Это не ошибка, это системная функция.