[ОБУЧАЛОВКА] Финт ушами с временем документа.
Маленькое наблюдение, облегчающее программную расстановку документов по оси времени.
- Описание
- Подробнее
Описание
//получаем исходное время ЧЧ=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: если эта статья помогла вам узнать нечто новое — плюсуй рейтинг! Не ленись…