Собсно, вопрос - как можно изменить время документа из самого же документа? Есть вариант запуска какой-либо обработки, но не знаю как корректно её вызвать, чтобы не сработала блокировка документа..
Собсно, вопрос - как можно изменить время документа из самого же документа? Есть вариант запуска какой-либо обработки, но не знаю как корректно её вызвать, чтобы не сработала блокировка документа..
Ну так а в чем проблема? Что не работает? Платформа? Приведите код обработки!
Проблема в чем - в процедуре закрытия вызываю обработку, которая должна найти документ по переданному в неё контексту, изменить время и перепровести, но документ в это время еще заблокирован... Вот и спрашиваю - как можно красиво обойти блокировку?
"Самое "красивое" написать в ВводНового():<br><br>АвтоВремяКонецДня();"
Этот вариан не пойдет - именно самому надо менять время документа...<br>
Включить обработку ожидания на 1 секунду и оз нее вызвать обработку для изменения времени документа.
Подскажи, пожалуйста, поподробнее...
"Вот у меня в документе кнопка "Изменить время документа" и процедура к ней:<br>Процедура ИзменитьВремя()<br> Конт=ТекущийДокумент();<br> ОткрытьФорму("Обработка.ИзменитьВремяДокумента",Конт);<br> Форма.Закрыть();<br>КонецПроцедуры<br><br>В обработке ИзменитьВремяДокумента на форме 4 поля ввода:<br>ВыбДокумент - типа Документ<br>ЧЧ - число, не отрицательное для часов<br>ММ - число, не отрицательное для минут<br>СС - число, не отрицательное для секунд<br>У ЧЧ формула Контроль(0), у ММ формула Контроль(1), у СС формула Контроль(1).<br>У кнопки Выполнить формула Выполнить()<br><br>Далее привожу текст модуля:<br>Процедура Выполнить()<br> Если ВыбДокумент.Выбран()=0 Тогда<br> Предупреждение("Не выбран документ!");<br> Возврат;<br> КонецЕсли;<br> Док=СоздатьОбъект("Документ."+ВыбДокумент.Вид());<br> Док.НайтиДокумент(ВыбДокумент);<br> БылПоведен=0;<br> Если Док.Проведен()=1 Тогда<br> Док.СделатьНеПроведенным();<br> БылПоведен=1;<br> КонецЕсли;<br> Док.УстановитьВремя(ЧЧ,ММ,СС);<br> Док.Записать();<br> Если БылПоведен=1 Тогда<br> Док.Провести();<br> КонецЕсли;<br>КонецПроцедуры<br><br>Процедура Контроль(Поле)<br>//Часы max - 23, min - 00<br>//Минуты max - 59, min - 00<br>//Cекунды max - 59, min - 00<br> Если Поле=0 Тогда //Часы<br> Если ЧЧ>=24 Тогда<br> ЧЧ=23;<br> КонецЕсли;<br> КонецЕсли;<br> Если Поле=1 Тогда //Минуты<br> Если ММ>=60 Тогда<br> ММ=59;<br> КонецЕсли;<br> КонецЕсли;<br> Если Поле=1 Тогда //Секунды<br> Если СС>=60 Тогда<br> СС=59;<br> КонецЕсли;<br> КонецЕсли;<br>КонецПроцедуры<br><br>Процедура ПриОткрытии()<br> Если ТипЗначения(Форма.Параметр)=12 Тогда //Тип значения 12 - Документ<br> ВыбДокумент=Форма.Параметр;<br> КонецЕсли;<br>КонецПроцедуры<br><br><br>Все работает, только, что проверил."
Пасиб, буду адаптировать))
А как можно вызвать процедуру Выполнить() без интерактивного нажатия кнопки?