Имя: Пароль:
1C
1С v8
Как установить запрет на редактирование конкретного вида документа
,
0 Ayrym
 
06.06.16
18:07
Помогите пожалуйста разобраться с вопросом - необходимо на конкретные виды документов установить запрет редактирования по прошествии 1 суток, что б пользователи не бездельничали и оперативно проводили документы, но с возможностью открытия периода после того как они попросят об этом слезно)))) такое распоряжение руководителя. Так вот, где можно почитать или может есть уже встроенные функции, обработки. Бухгалтерия 8.2 обычные формы
1 mikecool
 
06.06.16
18:14
слезно - это стоя на коленях? чудит руководство
а так - рс с видами доков и сотрами - комбинируй как хошь
2 Cyberhawk
 
06.06.16
18:21
Делов на 20 минут, штатно такого нет
3 Ayrym
 
06.06.16
20:54
(1) рс - это что? я в этом деле новенькая)
4 mikecool
 
06.06.16
20:55
(2) ну да, на 20 минут )) а если по группам, а если еще что?
(3) регистр сведений
5 Cyberhawk
 
06.06.16
22:09
(4) Ну ладно-ладно, на час по франчевой столичной ставке :)
6 AneJIbcuH
 
07.06.16
05:04
А что штатная "Дата запрета редактирования данных" уже не в моде, или в Бух 2.0 её нет?
7 Ayrym
 
07.06.16
09:41
(6) а как установить дату запрета на конкретный вид документа а не на все разом?
8 Cyberhawk
 
07.06.16
09:41
(6) Так нужна "скользящая" / "динамическая", т.е. для каждого документа своя
9 mehfk
 
07.06.16
09:44
(7) Данная функциональность не реализована.
10 Ayrym
 
07.06.16
10:18
(9) а как ее реализовать? я вот уже весь интернет перерыла, но не могу понять
11 FIXXXL
 
07.06.16
10:22
(10) 1.нужна проверка, смотри как проверяется ДатаЗапрета
2.а как хранить данные, с которыми будет сверятся документ - зависит от задачи
12 gae
 
07.06.16
10:28
(10) Обычно делают регистр сведений, в котором указывают вид документа и дату запрета, затем подписку на событие, которые ловят "Перед записью" документов и направляют в процедуру, которая проверяет по регистру вид документа и дату, и ставит Отказ = Истина, если не проходит. Только надо учесть, что проверять у документа надо две даты - та что получена запросом (если не новый документ), и дату в объекте. Это на случай, если дату у документа пробуют менять.
Но это решение "в лоб", простейшее.
Иногда правильнее на регистры ставить запрет.
13 mehfk
 
07.06.16
10:54
(10) Позвать программиста, поставить задачу.
14 lodger
 
07.06.16
11:14
кочуйте на бух 3.0 - дата запрета изменения на произвольные группы пользователей с относительным указанием (т.е. то что вам и надо)
15 Ayrym
 
07.06.16
16:24
Нашла вот пример на  http://catalog.mista.ru/public/70084/, но у меня тормозит вот на этой части кода
Запрос = Новый Запрос("ВЫБРАТЬ
                           |    ГраницаЗапретаИзмерений
                           |ИЗ
                           |    РегистрСведений.РасширениеГраницДоступаОтдельныхОбъектов КАК РасширениеГраницДоступаОтдельныхОбъектов
                           |ГДЕ
                           |    РасширениеГраницДоступаОтдельныхОбъектов.ОбьектДоступа = &ОбьектДоступа");
    
     Запрос.УстановитьПараметр("ОбьектДоступа", ИмяОбьекта);
     ТЗ = Запрос.Выполнить().Выгрузить();
     Если ТЗ.Количество() > 0 Тогда
         ДатаДляПроверки = КонецДня(ТЗ[0].ГраницаЗапретаИзменений);
     КонецЕсли;
     Возврат Не ТЗ.Количество() = 0;

Пишет ошибку {ОбщийМодуль.НастройкаПравДоступа.Модуль(839)}: Поле объекта не обнаружено (ГраницаЗапретаИзменений)
         ДатаДляПроверки = КонецДня(ТЗ[0].ГраницаЗапретаИзменений);
16 Ayrym
 
07.06.16
16:25
помогите, что делаю не так, в отладчике все просмотрела, но не понимаю в чем дело
17 FIXXXL
 
07.06.16
16:27
(16) запрос кривой
открой его конструктором запроса
18 AceVi
 
07.06.16
16:32
(16) РасширениеГраницДоступаОтдельныхОбъектов - это не стандартный регистр же. кто то его добавил - а ты нет. читай внимательнее откуда запрос взяла.
Вообще с такими знаниями как у тебя я бы не советовал самой лезть в конфигуратор. Позови программиста в кафе он тебе за чашкой чая все расскажет сделаешь под его диктовку - заодно посоветует что почитать.
19 Alres
 
07.06.16
16:38
(0) Если планируешь писать дату запрета в регистр сведений (как тут предлагают), то учти что тебе придется каждый день эту дату передвигать на 1 день вперед (ну либо писать регламентное задание которое само будет это делать).

Мне кажется проще добавить подписку на событие "ПередЗаписью" для нужных документов, в процедуре написать что-то типа

Если КонецДня(Источник.Дата) < ТекущаяДата() Тогда Отказ = Истина

Возможность отключать эту проверку, например можно поместить в константу (чтобы при желании быстро включать/отключать). Тогда код немного изменится

Если КонецДня(Источник.Дата) < ТекущаяДата() И Константы.ПроверкаДатыДокумента.Получить() Тогда Отказ = Истина
20 Ayrym
 
07.06.16
16:45
(18) я этот регистр добавила все как описано по ссылке
21 Nuobu
 
07.06.16
16:46
ГраницаЗапретаИзменений
ГраницаЗапретаИзмерений
22 AceVi
 
07.06.16
16:51
(20) Ну значит ТЗ[0] - не выполняеться - т.е. запрос пустой. проверяй перед обращением.