Изменение времени документа
02.12.2008
11:32
#1
Собсно, вопрос - как можно изменить время документа из самого же документа? Есть вариант запуска какой-либо обработки, но не знаю как корректно её вызвать, чтобы не сработала блокировка документа..
02.12.2008
11:40
#3
Проблема в чем - в процедуре закрытия вызываю обработку, которая должна найти документ по переданному в неё контексту, изменить время и перепровести, но документ в это время еще заблокирован... Вот и спрашиваю - как можно красиво обойти блокировку?
02.12.2008
12:15
#6
Включить обработку ожидания на 1 секунду и оз нее вызвать обработку для изменения времени документа.
02.12.2008
12:27
#8
"Вот у меня в документе кнопка "Изменить время документа" и процедура к ней:
Процедура ИзменитьВремя()
Конт=ТекущийДокумент();
ОткрытьФорму("Обработка.ИзменитьВремяДокумента",Конт);
Форма.Закрыть();
КонецПроцедуры
В обработке ИзменитьВремяДокумента на форме 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 - Документ
ВыбДокумент=Форма.Параметр;
КонецЕсли;
КонецПроцедуры
Все работает, только, что проверил."
Процедура ИзменитьВремя()
Конт=ТекущийДокумент();
ОткрытьФорму("Обработка.ИзменитьВремяДокумента",Конт);
Форма.Закрыть();
КонецПроцедуры
В обработке ИзменитьВремяДокумента на форме 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С:Бухгалтерия8.1пересчет оклада за предыдущий месяц в 1С ЗП и кадры
Читают тему
(гостей: 1)