- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
Функция РазрешеноМенятьЗаявкуПоПравилу9Утра()
_Год = Год ( Объект.Дата);
_Месяц = Месяц( Объект.Дата);
_День = День ( Объект.Дата) + 1;
Если _День = 29 Тогда
Если _Месяц = 2 Тогда
Если (_Год - 2016)%4 <> 0 Тогда
_Месяц = 3; _День = 1;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Если _День = 30 Тогда
Если (_Месяц = 4) ИЛИ (_Месяц = 6) ИЛИ (_Месяц = 9) ИЛИ (_Месяц = 11) Тогда
_Месяц = _Месяц + 1;
_День = 1;
КонецЕсли;
КонецЕсли;
Если _День = 31 Тогда
Если (_Месяц = 1) ИЛИ (_Месяц = 3) ИЛИ (_Месяц = 5) ИЛИ (_Месяц = 7) ИЛИ
(_Месяц = 8) Тогда
_Месяц = _Месяц + 1;
_День = 1;
ИначеЕсли _Месяц = 12 Тогда
_Месяц = 1;
_День = 1;
КонецЕсли;
КонецЕсли;
_9УтраСледующегоДня = Дата( _Год , _Месяц, _День,9,0,0);
Если ТекущаяДата() < _9УтраСледующегоДня Тогда
Возврат Истина;
Иначе
Возврат Ложь;
КонецЕсли;
КонецФункции
Я БЛЯДЬ САМ
ЛИЧНО
ПРИДУ УЕБУ ЭТОГО ИДИОТА ЕГО ЖЕ КЛАВИАТУРОЙ
P. S. В универе с високосными годами не ебался — не мужик.
Когда это было препятствием для опытного бухгалтера?
Но не могу удержаться!
Функция РазрешеноМенятьЗаявкуПоПравилу9Утра()
ОДИН_ЧАС = 60 * 60;
ОДИН_ДЕНЬ = 24 * ОДИН_ЧАС;
Возврат ТекущаяДата() < (НачалоДня(Объект.Дата) + ОДИН_ДЕНЬ + 9 * ОДИН_ЧАС);
КонецФункции
во-первых зачем бы оно им?
во-вторых я конечно не настоящий сварщик, но мне птички напели, что 1С всё чаще клиент-серверный в наше время, и если это выполняется в районе сервера, то там у бухов точно нет никаких прав
Как показывает практика, их даже https не останавливал от перевода часов... Ну разве что сломанным сертификатом.
> зачем бы оно им
Чтобы проводить что-нибудь задним числом.
Перевести часы (да еще и отключить их синхронизацию с NTP) может только админ, или питух со спец привилегией SE_SYSTEMTIME_NAME.
Если ты не хочешь иметь много вирусов-вымогателей, шифровальщиков и яндекс-браузеоров, то ты обычно не даешь много прав бухам на их тачках: пусть седят под обычными пользователями
Альзо, сбитые часы сломают тебе керберос, а это в домене страшнее сломанного HTTPS.
Если же у тебя клиент 1С связанный с 1С сервером, и код выполняется на сервере, то тамошнее время ты вообще никак не поменяешь: я не знаю, есть ли RPC или WS для смены времени, а по RDP буха на сервер никто не пустит
И да, клиент-сервер их не остановит, они попробуют перевести время. Вдруг время берётся с клиента и всё прокатит. Ну не прокатит - значит нет.
1C:Теневая бухгалтерия
>А я про обычную мелочь, где админ один на десяток контор.
Ты хочешь сказать, что у таких админок бухи админы на своих машинах?
Вроде бы даже были истории про то, как кто-то таким образом охуел.
А если ты мелкий, то они ноутбуки домой забирают, и всё
Очень популярна схема, когда питухи ходят по RDP на какой-то сервер, и там запускают клиент.
Во-первых это может оказаться быстрее (протокол может быть жирнее RDP) во-вторых проще и безопаснее: таких петухов из дома пускают прямо по RDP.
Но это конечно в конторах средних размеров, где админ это всё осилил
ОДИН_ЧАС = 60 * 60;
Возврат ТекущаяДата() < (КонецДня(Объект.Дата) + 9 * ОДИН_ЧАС);
ОДИН_ЧАС = 60 * 60;
Возврат ТекущаяДата() < ((КонецДня(Объект.Дата) + 1) + 9 * ОДИН_ЧАС);
В Вашем варианте получится не 09:00 следующего дня, а 08:59!
К _День сначала прибавляется единица, а потом идут условия. Т.е. для последнего дня любого месяца - всегда будет исключение.
+ Октябрь вообще пропал, а для 31.12 - год потерялся.