Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
12 дек 2024, 23:33

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

Автор user321123, 31 мар 2011, 11:03

0 Пользователей и 1 гость просматривают эту тему.

user321123

Здравствуйте.
Как в 1с v 7.7 Бухгалтерия предприятия
Сделать, чтобы нельзя было изменять и перепроводить документы за прошлый месяц?
А за текущий, естественно, можно.
Есть константа ДатаЗапретаРедактирования - это оно?
Захожу через конфигуратор, выбираю ее, но не могу ввести значения. В появляющемся окне нет поля Значение. Куда нужно вводить значение?

prog1c7.7

в пользовательском режиме

user321123

Да, уже разобрался.
Но, кажется, это не то, что нужно.
Эту константу придется менять руками каждый месяц.
А нужно, чтобы весь процесс был автоматизированным.

Может дописать процедуру в глобальном месяце на установку константы, что-то вроде: если текущий месяц минус текущее значение месяца константы не равно единице, то устанавливаем константу равную значению текущего месяца минус один.

prog1c7.7


user321123

Уже понятнее, спасибо за подсказку )
Помогите, пожалуйста, теперь написать код.

Вот мой корявый вариант (только-только разбираюсь ) )

Процедура УстановитьЗапрет()
Если ТекущаяДата()-Константа.ДатаЗапретаРедактирования.!=1 Тогда
   Константа.ДатаЗапретаРедактирования=ТекущаяДата()-1;
Конецесли;
КонецПроцедуры

prog1c7.7

Процедура ПриНачалеРаботыСистемы()

    Если
    (ДобавитьМесяц(Константа.ДатаЗапретаРедактирования,"1") <> ТекущаяДата())
   тогда
    Константа.ДатаЗапретаРедактирования = Добавитьмесяц(ТекущаяДата(),"-1");   
     КонецЕсли;

user321123

Спасибо за код. Буду разбираться...

Правильно ли я понимаю логику:

Мне нужно, чтобы пользователь ВасяПупкин не мог изменять, перепроводить, удалять документы за закрытый месяц (за прошлый и все предыдущие).
Чтобы он мог создавать документы, проводить их, но не перепроводить и не мог изменять проведенные документы.

Для этого я создаю пользователя с ограниченными правами ВасяПупкин, у которого для всех объектов задаюю права: чтение, использование, ввод новых, выбор.
А у документов помимо указанных прав добавляю: корректировка, выбор подчиненных документов, проведение.

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

Все верно?

И одно "НО" дата запрета редактирования выставляется следующая: 1 число прошлого месяца, а нужно последнее число прошлого месяца.
Меняю

Константа.ДатаЗапретаРедактирования = Добавитьмесяц(ТекущаяДата(),"-1");

на

Константа.ДатаЗапретаРедактирования = ТекущаяДата();

Выставляется первое число текущего месяца, а значит документы первого числа тоже "в запрете".

Как выставлять последнее число прошлого месяца или первое число текузего месяца, но не включая его?

user321123

Один из вопросов:

Как выставлять последнее число прошлого месяца или первое число текузего месяца, но не включая его?

снимается.

Сделал так:

Константа.ДатаЗапретаРедактирования = КонМесяца(Добавитьмесяц(ТекущаяДата(),"-1"));

вместо

Константа.ДатаЗапретаРедактирования = Добавитьмесяц(ТекущаяДата(),"-1");

Теперь выставляется последнее число прошлого месяца.

Первая часть вопроса в силе.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск