|
v7: Изменение рабочей даты пользователем | ☑ | ||
---|---|---|---|---|
0
kupec
18.01.16
✎
15:48
|
Возможно ли в программе отловить изменение рабочей даты пользователем, т.е что-то наподобие функции ПриРучномИзмененииРабочейДаты()
|
|||
1
serpentt
18.01.16
✎
16:23
|
Себе сделали в "ключевых местах"(например при вводе ЗаказаПокупателю) проверку на выставленное время на сервере...
Скрипт = СоздатьОбъект("MSScriptControl.ScriptControl"); Скрипт.Language = "javascript"; Locator = СоздатьОбъект("wbemscripting.swbemlocator"); ServicesSet = Locator.ConnectServer("ИмяСервера", "root\cimv2",Юзер,Пасс); Items = ServicesSet.ExecQuery("Select * from Win32_LocalTime"); Скрипт.AddObject("Коллекция",Items); Перечисленные = Скрипт.Eval("new Enumerator(Коллекция)"); ч = Перечисленные.item(0).Properties_.Item("Hour").Value; м = Перечисленные.item(0).Properties_.Item("Minute").Value; Если ВернутьТолькоЧасы = 1 Тогда Возврат Число(ч); Иначе Если Число(ч) >= ВремяСтопа Тогда ФлагРазрешения = 0; Сообщить("Время на сервере " + ч + ":" + м); КонецЕсли; КонецЕсли; тоже можно наверное замутить и с датой. |
|||
2
kupec
18.01.16
✎
16:31
|
(1) дату на сервере тоже ловлю. И думаю сделать раз в 15 минут проверку на соответствие её с рабочей. Если не равна, то приравнивать.
|
|||
3
trdm
18.01.16
✎
16:34
|
а у меня программа просто тупо ругается на разность даты/времени на компе пользователя и на сервере и запрещает запись документов и справочников.
Дату и время сервера запрашиваю у MS SQL запросом: ТекстЗапроса = " |--Получение даты и времени с сервера |SELECT |DATEPART(hour, GETDATE()) as hour |,DATEPART(minute, GETDATE()) as minute |,DATEPART(second, GETDATE()) as second |,DATEPART(year, GETDATE()) as year |,DATEPART(month, GETDATE()) as month |,DATEPART(day, GETDATE()) as day |"; |
|||
4
kupec
18.01.16
✎
16:44
|
Дело немного в другом, для определенных людей рабочую дату можно менять, но так как они забывают её ставить обратно, нужно придумать механизм возврата даты обратно минут через 10 после её изменения...
|
|||
5
kupec
18.01.16
✎
16:45
|
Процедура МониторингИзмененияРабочейДаты()
Если ДатаСервера=РабочаяДата() Тогда ДатаИзменена=0; Возврат; Иначе ТекущееВремя(Ч,М); Если ДатаИзменена=0 Тогда Сообщить(СокрЛП(ТекущаяДата())+" - "+СокрЛП(ТекущееВремя())+" Изменена рабочая дата - примерно через 10 минут рабочая дата синхронизируется с сервером..."); ТекущееВремя(Ч,М); ВремяИзмененияРабочейДаты=Ч*60+М;ДатаИзменена=1; КонецЕсли; ПрошлоВремениСИзмененияРабочейДаты=Ч*60+М; Если (ПрошлоВремениСИзмененияРабочейДаты-ВремяИзмененияРабочейДаты>9) Или (ПрошлоВремениСИзмененияРабочейДаты-ВремяИзмененияРабочейДаты<0) Тогда РабочаяДата(ДатаСервера,2);ДатаИзменена=0; Сообщить(СокрЛП(ТекущаяДата())+" - "+СокрЛП(ТекущееВремя())+" Рабочая дата синхронизирована с сервером..."); КонецЕсли; КонецЕсли; КонецПроцедуры |
|||
6
kupec
18.01.16
✎
16:45
|
сделал вот так...
|
|||
7
Serg_1960
18.01.16
✎
17:20
|
Надеюсь автор не путает рабочую дату с проверкой времени на клиенте и на сервере?
ВремяНаКлиенте = ТекущаяДата(); ВремяНаСервере = ПроверкаРазницыВремени.ТекущаяДатаСервера(); |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |