Имя: Пароль:
1C
1C 7.7
v7: Запрет изменения!
,
0 Aleksei_Pro
 
03.10.11
18:37
Ребят подскажите (нужен совет), задача такова: нужно запретить какие либо действия с контрагентами определенными, т.е нельзя документы с ними изменять и добавлять! Как это можно организовать?
1 poligraf
 
03.10.11
18:41
Поищи, сегодня уже был совет...

1. Открыть конфигуратор
2. Сделать
3. Профит

События знаешь как в 7-ке отрабатываются?
2 Aleksei_Pro
 
03.10.11
18:43
(1) на счет кофигуратора знаю , просто писать в каждом документе и в каждой строке домента, где контрагент используется - эт просто нереально)
3 G-Re
 
03.10.11
18:44
(0) Сформулируй вопрос поточней. Потому что (1) - самый точный ответ на (0).
4 poligraf
 
03.10.11
18:48
Поиск, поиск и еще раз поиск...

Добавить обработчики событий во все документы

вот тебе, недавно обсуждали.
может чего и сгодится.
больше не спрашивай - там все есть.
5 Aleksei_Pro
 
03.10.11
18:49
(3) нужно запретить какие либо действия с определенными контрагентами, т.е запретить изменять с ним документы, запретить добавлять документы с этим контрагентом,
6 poligraf
 
03.10.11
18:51
(5) нет, ты не так в (2) написал:)
7 Aleksei_Pro
 
03.10.11
18:54
(6) нужно дать запрет на контрагентов - чтобы документы с ним могли только смотреть, но факт в том, что есть доки где он используется как реквизит ТЧ документа!
8 G-Re
 
03.10.11
18:54
(0)Для начала введи в справочник "Контрагенты" призна кошерности. Потом в глобальном модуле напиши функцию, которая определяет возможность работы, например, сканирования реквизитов через метаданные и если ЗначениеРеквизита.Вид()="Контрагенты" и Контрагент некошерный возврат(0).
Активизировать функцию можно перехватом события или тупо вставив куда-нибудь, например в  ПриОткрытии().
9 Aleksey
 
03.10.11
18:56
(8) Например операция и Субконто
Или ПКО и субконто

Что оно вернет?

А если неопределенный вид? Или еще хуже - неопределенный тип


Так что проще не заводить такого контрагента, тогда и использовать не будут
10 poligraf
 
03.10.11
18:58
(9) имелись в виду и уже созданные: "т.е нельзя документы с ними изменять"
это если у меня телепалка не сломалась
11 Aleksei_Pro
 
03.10.11
18:58
(9) он используется давно, теперь его хотят просто сделать недоступным)
Вот такой код функции примерно:
МетаданныеДокумент=Метаданные.Документ(ВыбДокументВид);
Для Х=1 По Метаданные.ОбщийРеквизитДокумента() Цикл
  ИдентификаторРеквизита=Метаданные.ОбщийРеквизитДокумента(Х).Идентификатор;
  Значение = ДокИсточник.ПолучитьАтрибут(ИдентификаторРеквизита);


Для Х=1 По МетаданныеДокумент.РеквизитШапки() Цикл
  ИдентификаторРеквизита=МетаданныеДокумент.РеквизитШапки(Х).Идентификатор;
  Значение = ДокИсточник.ПолучитьАтрибут(ИдентификаторРеквизита);
 

ДокИсточник.ВыбратьСтроки();
Пока ДокИсточник.ПолучитьСтроку() = 1 цикл
 Для Х=1 По МетаданныеДокумент.РеквизитТабличнойЧасти() Цикл
   ИдентификаторРеквизита=МетаданныеДокумент.РеквизитТабличнойЧасти(Х).Идентификатор;
   Значение = ДокИсточник.ПолучитьАтрибут(ИдентификаторРеквизита);
 
 КонецЦикла;
КонецЦикла;
12 Aleksei_Pro
 
03.10.11
18:59
(10) именоо уже созданные)
13 poligraf
 
03.10.11
18:59
В (4) посмотри, там хорошие функции глобальника, куда встроиться можно
14 G-Re
 
03.10.11
19:23
(9) Не понял.
Я имел в виду следующее.
1. Через Метаданные найти Ид=Идентификатор реквизита
2. Далее  ЗначРекв=ПолучитьАтрибут(Ид);
3. Ну и
Если ТипЗначенияСтр(ЗначРекв)="Справочник" Тогда
      Если ЗначРекв.Вид()="Контрагенты" Тогда
           Если ЗначРекв.Кошерный=0 Тогда
                   Обрабатывать документ нельзя.
            КонецЕсли;
      КонецЕсли;
КонецЕсли;
15 Aleksei_Pro
 
03.10.11
20:06
Эт все хорошо, а как быть с ТЧ документа, если контрагент исользован в ней, ставить запрет на каждый элемент ТЧ документа?
16 Злопчинский
 
03.10.11
21:30
(150 нет конечно.. достаточно при формировании такого документа запретить в одной ТЧ мешать кошерных и некошерных...
17 smaharbA
 
03.10.11
21:36
а если смешивать ?
18 Aleksei_Pro
 
03.10.11
21:43
(16) если документ уже создан с кошерными и не кошерными, нужно запрет поставить на изменение строки ТЧ с данным контрагентом)
19 Aleksei_Pro
 
03.10.11
22:23
Ребят а как можно установить запрет редактирования на строку документа?
   ВыбратьСтроки();
   Пока ПолучитьСтроку()  = 1 Цикл
       Если Абонент.Запрет = 1  Тогда
                 ??????
       КонецЕсли;
   КонецЦикла;
20 Мимохожий Однако
 
03.10.11
22:26
Найди в глобальном модуле примерно такую процедуру глПриЗаписиДокумента() и поставь СтатусВозврата(0); Возврат; при определенных условиях.
21 Aleksei_Pro
 
03.10.11
22:46
(20) мне нужно на опрееделенную строку при открытии документа!
22 Aleksei_Pro
 
03.10.11
23:23
Почему написал так, а он все равно дает изменить реквизит "Сумма":
   Если (Конт.Абонент.Запрет=1) Тогда
       Предупреждение("Ввод данного абонента запрещен, т.к абонент заблокирован!",4);
       СтатусВозврата(0);
       Возврат 0;
   Иначе        
   КонецЕсли;
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс