Изменение времени документа

Новая тема
Показывать по 10 20 40 сообщений
Собсно, вопрос - как можно изменить время документа из самого же документа? Есть вариант запуска какой-либо обработки, но не знаю как корректно её вызвать, чтобы не сработала блокировка документа..
Ну так а в чем проблема? Что не работает? Платформа? Приведите код обработки!
Проблема в чем - в процедуре закрытия вызываю обработку, которая должна найти документ по переданному в неё контексту, изменить время и перепровести, но документ в это время еще заблокирован... Вот и спрашиваю - как можно красиво обойти блокировку?
"Самое "красивое" написать в ВводНового():

АвтоВремяКонецДня();"
Этот вариан не пойдет - именно самому надо менять время документа...
Включить обработку ожидания на 1 секунду и оз нее вызвать обработку для изменения времени документа.
Подскажи, пожалуйста, поподробнее...
"Вот у меня в документе кнопка "Изменить время документа" и процедура к ней:
Процедура ИзменитьВремя()
Конт=ТекущийДокумент();
ОткрытьФорму("Обработка.ИзменитьВремяДокумента",Конт);
Форма.Закрыть();
КонецПроцедуры

В обработке ИзменитьВремяДокумента на форме 4 поля ввода:
ВыбДокумент - типа Документ
ЧЧ - число, не отрицательное для часов
ММ - число, не отрицательное для минут
СС - число, не отрицательное для секунд
У ЧЧ формула Контроль(0), у ММ формула Контроль(1), у СС формула Контроль(1).
У кнопки Выполнить формула Выполнить()

Далее привожу текст модуля:
Процедура Выполнить()
Если ВыбДокумент.Выбран()=0 Тогда
   Предупреждение("Не выбран документ!");
Возврат;
КонецЕсли;
Док=СоздатьОбъект("Документ."+ВыбДокумент.Вид());
Док.НайтиДокумент(ВыбДокумент);
БылПоведен=0;
Если Док.Проведен()=1 Тогда
   Док.СделатьНеПроведенным();
БылПоведен=1;
КонецЕсли;
Док.УстановитьВремя(ЧЧ,ММ,СС);
Док.Записать();
Если БылПоведен=1 Тогда
   Док.Провести();
КонецЕсли;
КонецПроцедуры

Процедура Контроль(Поле)
//Часы max - 23, min - 00
//Минуты max - 59, min - 00
//Cекунды max - 59, min - 00
Если Поле=0 Тогда //Часы
   Если ЧЧ>=24 Тогда
       ЧЧ=23;
КонецЕсли;
КонецЕсли;
Если Поле=1 Тогда //Минуты
   Если ММ>=60 Тогда
       ММ=59;
   КонецЕсли;
КонецЕсли;
Если Поле=1 Тогда //Секунды
   Если СС>=60 Тогда
       СС=59;
   КонецЕсли;
КонецЕсли;
КонецПроцедуры

Процедура ПриОткрытии()
Если ТипЗначения(Форма.Параметр)=12 Тогда //Тип значения 12 - Документ
   ВыбДокумент=Форма.Параметр;
КонецЕсли;
КонецПроцедуры


Все работает, только, что проверил."
Пасиб, буду адаптировать))
А как можно вызвать процедуру Выполнить() без интерактивного нажатия кнопки?
Читают тему
(гостей: 1)

Быстрый переход