//получаем исходное время ЧЧ=0; ММ=0; СС=0; ДокРН.ПолучитьВремя(ЧЧ,ММ,СС); //формируем новое время СС=СС+90; ДокСФ.УстановитьВремя(ЧЧ,ММ,СС); ДокСФ.Записать();
Как видно из примера, наращиваем только счетчик секунд, при записи документа движок 1С сам произведет ''адекватный'' пересчет секунд, минут, часов. Такаим образом можно наращивать любой из счетчиков времени в приведенном выше примере, наращивание производится должно в единицах увеличиваемого счетчика. Т.е. ничто не мешает для сдвига на 1 час написать
CC=CC+60*60;
или
ММ=ММ+60;
или
ЧЧ=ЧЧ+1;
Описанным выше способом можно двигать счетчики и вперед по (+), и назад по (-). Такой нехитрый прием существенно облегчает оперирование со временем документа.
При этом надо учитывать только то, что сдвижка производится только в пределах одних суток! Т.е. макисмально позднее(раннее) время, которое получится у документа: 23:59:59 (00:00:01) - прибавив к 23:59:10 больше 50 секунд в другой день ''перескочить'' не удастся ;-).
В этом случае надо действовать уже в зависимости от лично ваших нужд, как пример - можно так:
//формируем новое время СС=СС+90; ДокСФ.УстановитьВремя(ЧЧ,ММ,СС); ДокСФ.Записать(); Если СтрЗаменить(ДокСФ.ПолучитьВремя(),'':'','''')=''235959'' Тогда //тут обрабатываем ''исключительную ситуацию'' //перехода на новую дату ДокСФ.ДатаДок = ДокСФ.ДатаДок+1; ДокСФ.УстановитьВремя(00,00,01); ДокСФ.Записать(); КонецЕсли;
Вот такие вот чебурашки.
Разведал эту шнягу, когда забодался плюсовать секунды-минуты-секунды - неэстетично это, однозначно! А если попробовать прибавить много секунд - что будет? Попробовал - получилось...
PS: если эта статья помогла вам узнать нечто новое - плюсуй рейтинг! Не ленись...