Имя: Пароль:
1C
1C 7.7
v7: Запрет проведения документов задним числом
0 uuee76
 
02.09.16
07:59
Коллеги,не являясь спецом по 7.7 и по ТиС,прошу помочь в решении проблемки.
Заказчик просит запретить изменять и проводить документы задним числом всем,кроме ну скажем с правами Администратора.
Есть дата запрета,вроде подходит,но каждый день заказчику невозможно ее менять.Можно запретить править проведенные доки,и снять право отмены проведения,но есть непроведенные доки,которые можно править когда угодно любым числом и проводить.Как можно вывернуться типовым функционалом?Вариант послать уже обдумал.Дописывать в каждый документ условие проведения?Ето корежить всю конфу.Автоматом менять дату запрета?А как,при каком условии?Если было оперативное проведение,как в 8,но такого механизма вроде нет...
1 zak555
 
02.09.16
08:01
Пусть меняет дату запрета робот
2 uuee76
 
02.09.16
08:06
(1) А как этого робота включить?Есть что-то,что запускается по расписанию автоматом?Где искать?Не знаю 7-ку,пните в правильном направлении.Администратор тем не менее тоже не может работать в закрытом периоде.Может без даты можно как то вывернуться?
3 zak555
 
02.09.16
08:08
(2) выделяем пользователя робота, атгоритм пишем в глобальнике, запускаем с помощью планировшика через пакетный режим
4 uuee76
 
02.09.16
08:13
(3) Понял куда рыть.Может еще мнения будут?
5 zak555
 
02.09.16
08:18
(4) перейти на 8ку
Там можно выставить дату запрета, как вчерашний день
6 uuee76
 
02.09.16
08:22
(5) Ну просто замечательный вариант!))Он мне тоже нравится.
7 Это_mike
 
02.09.16
08:27
(5) а что мешает сделать так же в клюшках?
8 Это_mike
 
02.09.16
08:30
Если ДатаДок<ТекущаяДата() Тогда
Сообщить("нефик нафик!");
статусВозврата(0);
Возврат;
КонецЕсли;
9 Это_mike
 
02.09.16
08:31
ну и опционально чонить типа:
Если Константа.ДатаЗапретаРедактироваия < ТекущаяДата()-1 тогда
Константа.ДатаЗапретаРедактироваия=ТекущаяДата()-1;
конецесли;
10 Это_mike
 
02.09.16
08:32
только это все-таки не "заднее число", а вчерашнее.
заднее число - это уже утренний документ днем. Или документ 5-минутной давности...
11 Тихий омут
 
02.09.16
08:32
Не нужен никакой робот. В ПриНачалеРаботыСистемы пишем что-то вроде
Константа.ДатаЗапретаРедактирования=ТекущаяДата()-1

Исполняется при входе любого пользователя, и всё.
Ну и проверки при открытии документов, само собой
12 zak555
 
02.09.16
08:32
(8) это в какую процедуру?
13 Тихий омут
 
02.09.16
08:33
(10) это уже детали
14 zak555
 
02.09.16
08:33
(11) пользователь не выходит из базы ночью
15 Это_mike
 
02.09.16
08:33
(12) в обработку проведения, вестимо.
или в глобальнике что-то типа глМожноПроводитьДокумент() есть
16 Это_mike
 
02.09.16
08:35
(14) дык (9) в любой контроль записи/проведения
17 Тихий омут
 
02.09.16
08:35
(11)+ проверка в модуле формы доков примерно такая,в процедуре ПриОткрытии():
Если ДатаДок<=Константа.ДатаЗапретаРедактирования Тогда ТолькоПросмотр(1) КонецЕсли
и усё
18 zak555
 
02.09.16
08:35
(15) т.е. изменить документы можно, а провести нельзя?
19 uuee76
 
02.09.16
08:36
(11) Это понятно,а вот без константы никак нельзя вывернуться?Нетрадиционными способами)))?Суть задачи не дать возможность изменить данные не сегодняшние)).
20 Тихий омут
 
02.09.16
08:36
(14) ни разу не видел таких высоконагруженных систем, в которых безвылазно сидят пользователи и в течении суток ни один не зайдёт заново.
21 Это_mike
 
02.09.16
08:38
(18) ну, в глМожноРедактироватьДокумент() вставить.
Не суть важно. сказали жк человеку, куда копать...
22 Тихий омут
 
02.09.16
08:38
(19) гм... от всех дураков защиту не поставишь. Например, особенно умные пользюки могут и дату компа поменять, чтобы сделать вид, что сегодня-ещё вчера, а то и раньше. Вот тут как раз робот на серваке актуален, спору нет
23 Это_mike
 
02.09.16
08:38
(19) см (8)
24 zak555
 
02.09.16
08:38
(20) когда много пользователей, то они обычно в терминале
и закрывают терминал "крестиком" рдп -- вот тебе и повисший сеанс
25 Это_mike
 
02.09.16
08:39
(24) авотхрен.
26 _stay true_
 
02.09.16
08:39
Есть в семерке подписки на события?)))
27 Это_mike
 
02.09.16
08:39
(22) получать с сервера, если база сиквельная :-)
28 Это_mike
 
02.09.16
08:39
(26) в правильной семерке - есть
29 Тихий омут
 
02.09.16
08:40
(19) Собственно, ответ на вопрос - в процедуре ПриОткрытии модуля формы дока пишем любую нужную проверку типа
Если ДатаДок<=НекоеЗначениеДатыЗапрета Тогда ТолькоПросмотр(1) КонецЕсли
здесь НекоеЗначениеДатыЗапрета - что угодно, пусть даже получение точного времени откуда-нибудь из инета
30 Это_mike
 
02.09.16
08:42
(20) у кого работают высоконагруженные системы - такие вопросы не задают :-)
31 uuee76
 
02.09.16
08:43
(29) Товарищи,база не скульная,люди могут не выходить ночью,утром продолжать работать.
32 Тихий омут
 
02.09.16
08:45
(19) И кстати, если форма дока ну очень сильно переписанная, например, стандартная ТЧ заменена тз на форме, то ТолькоПросмотр(1) не пойдёт, там всё намного хитрее может оказаться.
(31) И что, за сутки прям реально ни один пользюк не зайдёт в базу, все сидят и сидят? Не верю. Ну даже если так - стучись из ПриОткрытии к поставщикам точного времени в инет, что тут тебе ещё сказать.
33 Это_mike
 
02.09.16
08:46
(31) см. (8)+(9)+(15)
34 Это_mike
 
02.09.16
08:49
(32) Можно получать через WSH с сервера.
35 Смотрящий
 
02.09.16
08:58
(0) тАК ПРАВАМИ и разруливается - галка "Проведение документов задним числом"

Только заблокировать надо проведение документов будущей датой. Иначе ТА уедет "в завтра" и документы от сегодня система будет блокировать на редактирование - придется всех выгонять и откатывать ТА
36 varelchik
 
02.09.16
11:55
(25)+100!
37 varelchik
 
02.09.16
11:55
пардон (35)