gifts2017

Дата запрета редактирования

Опубликовал Наталья Кондрашова (natalika1601) в раздел Программирование - Практика программирования

Очень часто необходимо постоянно закрывать период для редактирования документов. Вот как я вышла из этой ситуации.

Очень часто необходимо постоянно закрывать период для редактирования документов. Вот как я вышла из этой ситуации:

Я создала в базе константу ДнейЗапрета, в которую занесла количество последних рабочих дней, за которые можно редактировать документы. В процедуру ПриНачалеРаботыСистемы() Поместила следующий отрывок программы:

ДатаЗапретаНадо = РабочаяДата();
Выходных = 0;
Для н = 1 по Константа.ДнейЗапрета + Цел(Окр(Константа.ДнейЗапрета/5)*2) Цикл
ПредДата = ДатаЗапретаНадо - 1;
Если НомерДняНедели(ПредДата) > 5 Тогда
Выходных = Выходных + 1;
КонецЕсли;
Если н < Константа.ДнейЗапрета + 1 Тогда
ДатаЗапретаНадо = ДатаЗапретаНадо - 1;
ИначеЕсли н - Выходных < Константа.ДнейЗапрета + 1 Тогда
ДатаЗапретаНадо = ДатаЗапретаНадо - 1;
КонецЕсли;
Если (н = Константа.ДнейЗапрета) и (Выходных = 0) Тогда
Прервать;
КонецЕсли;
КонецЦикла;
Константа.ДатаЗапретаРедактирования = ДатаЗапретаНадо;

К количеству дней запрета прибавляем выходные (субботы и воскресенья) , но праздники не учитываются. Поэтому когда пользователь заходит в базу, то константа ДатаЗапретаРедактирования сама меняется, а меню Операции я для пользователей скрыла, чтобы не смогли поменять эту дату. Конечно, очень продвинутые пользователи могут сменить рабочую дату на компьютере, но в программу кто-то постоянно заходит, кто-то выходит, поэтому закрытие происходит постоянно. Мне это очень помогает: не надо самой все время лазить и закрывать период. И пользователей дисциплинирует. Они уже привыкли, что документы надо вносить оперативно и не затягивать. Если какие-то документы им все-таки нужно дольше редактировать, то для них можно отдельно создать еще одну константу и ее закрывать вручную.

См. также

Подписаться Добавить вознаграждение

Комментарии

0. Наталья Кондрашова (natalika1601) 15.07.11 15:32
Очень часто необходимо постоянно закрывать период для редактирования документов. Вот как я вышла из этой ситуации.

Перейти к публикации

1. Антон Паскаль (platon_) 15.07.11 15:32
Я бы через календарь сделал. 5-Дневку с праздниками.
2. Дмитрий Литовченко (kompas-dm) 15.07.11 15:43
3. afk afk (afk) 15.07.11 16:18
(1) тогда будет нужна компонента Расчет
4. Александр Рытов (Арчибальд) 15.07.11 16:52
(3) Совсем не обязательно. В бухии можно иметь календарь http://infostart.ru/public/84425/
5. Дмитрий Литовченко (kompas-dm) 15.07.11 17:45
(3)У archy , как всегда, хорошо. Я же работаю с полным аналогом календаря компоненты "Расчет" , только в Бухгалтерии.
Арчибальд; +1 Ответить
6. Наталья Кондрашова (natalika1601) 18.07.11 09:32
Спасибо за совет и за поддержку, календарь посмотрю
7. Decker (twilight5023) 26.07.11 00:40
Проблема алгоритма в том, что он не анализирует предыдущего состояния константы ... Т.е. если у кого-то часы в 2020 году - то константа посчитается от этого года, если в 1980-ом, то она снимется ... я бы сделал так:

СтараяДатаЗапрета = Константа.ДатаЗапретаРедактирования;
< ... ваш текст ... >
Константа.ДатаЗапретаРедактирования = Макс(СтараяДатаЗапрета,ДатаЗапретаНадо);

Тогда если кто-то особенно умный захочет зайти в 1980 году для снятия константы - это вряд-ли получится. А вот если у кого-то часы в будущем, тогда придется снимать ее вручную. Такой подход он более правильный на мой взгляд.
8. Андрей Тарлыков (Tarlich) 26.07.11 15:19
-=За малым минус не поставил
9. Igоr Sаulеviсh (gutentag) 28.07.11 10:36
У Автора нет подбной внешней обработки для 1С:Бухгалтерия 8.2 ред.2.0 ?
10. Владимир Макаров (vladimir_makarov) 03.08.11 03:24
Я плюсанул (хотя на практике не проверял, просто идея понравилась). А теперь вопросик: а как при этом в принципе используется нормальная константа? Ответ - никак!!! Ибо, она для этого и существует, чтобы назначить ТАБУ! А если надо задним числом поковыряться, во-первых, объясни админу, по какой причине: сразу видно тех, кто косячит на работе. Более того, я ВСЕМ запрещал не только проводить задним числом, но и текущим (перепроводить). В этом случае к комментарию документа добавлялся новый автор (запоминая старого), т.е. я, не лазия по журналу регистрации сразу видел, кто, когда документ переписывал. Это не понравилось некоторым менеджерам, которые привыкли все "косяки" сваливать на трещёток. ИБО: стало видно, кто реально поучавствовал в косяке... Итог: виновные сами подходили и просили исправить ошибки, а "косячить" уже никто не мог.
На практике это применялось в ТиС.
11. Владимир Макаров (vladimir_makarov) 03.08.11 03:37
(7)Девушка писала из расчёта на самых-самых бухов... недочёты есть. Я и в твоём предложении найду косяк: если я хочу зайти, а меня "не пускают", так я себе открою дорогу, а "слишком ВУМНЫМ" закрою, да так, что замучаются начальству объяснять, что с БД случилось, особенно, если оставить доступ всем пользователям, кроме таких админов... Продолжаю настаиваь на своём: не надо изобретать велосипед с квадратными колёсами, надо ПРАВИЛЬНО использовать возможности программы, изобретать только тогда, когда таких возможностей нет. Так, для начала, надо выучить то, что есть! В конце концов, если кому-то доверяешь такие вещи, дай полные права, и всё!
12. Алексей Пивкин (pro-specs) 30.03.15 14:08
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа