Имя: Пароль:
1C
1C 7.7
v7: Пометка на удаление
,
0 ZhenyaYa
 
24.04.12
13:40
Добрый день! Ребят, не подскажите какие строки нужно внести в глобальный модуль, чтобы получилось вот так : Процедура пометка на удаление. Если в документе имеется реквизит "АдминПроводка", то, если АдминПроводка = 1, тогда, если текущий юзер = "Админ", то все ок, иначе - предупреждение - "У Вас нет прав на удаление этого документа"
1 Wobland
 
24.04.12
13:42
глобальный модуль обязателен?
2 NS
 
24.04.12
13:43
(1) А ты можешь отследить пометку на удаление не в глобальном модуле?
3 ZhenyaYa
 
24.04.12
13:43
угу
4 ZhenyaYa
 
24.04.12
13:43
угу был на первый пост)
5 Lionee
 
24.04.12
13:44
а что в правах юзверей нельзя сделать ?
6 Wobland
 
24.04.12
13:44
(2) да я и в глобальном не могу ;)
7 NS
 
24.04.12
13:48
Процедура ПриУдаленииДокумента(Докум,Режим)
   
   Если докум.вид()="ТвойДокумент" тогда
             Если докум.ПометкаУдаления()=0 тогда
                 Если докум.АдминПроводка=1 тогда
                     Если ИмяПользователя()<>"Админ" //лучше константу сделать
                           СтатусВозврата(0);
                           Предупреждение("Хрен вам",60);
                           Возврат;
                     КонецЕсли;
                КонецЕсли;
             КонецЕсли;
       КонецЕсли;
   
КонецПроцедуры // ПриУдаленииДокумента()
8 Волесвет
 
24.04.12
13:50
(7) самое основное в этой процедуре - предупреждение, остальное постолько-поскольку
)))
9 NS
 
24.04.12
13:50
Процедура ПриУдаленииДокумента(Докум,Режим)
   
   Если глЕстьРеквизитШапки("АдминПроводка", Докум.Вид())>0 тогда
             Если докум.ПометкаУдаления()=0 тогда
                 Если докум.АдминПроводка=1 тогда
                     Если ИмяПользователя()<>"Админ" //лучше константу сделать

                           СтатусВозврата(0);
                           Предупреждение("Хрен вам",60);
                           Возврат;
                     КонецЕсли;
                КонецЕсли;
             КонецЕсли;
       КонецЕсли;
   
КонецПроцедуры // ПриУдаленииДокумента()
10 ZhenyaYa
 
24.04.12
13:53
Да, с предупреждением ты погорячился))
Спасибо большое!, сейчас попробую
11 NS
 
24.04.12
13:53
Есно это дописать в глобальном модуле, в процедуре ПриУдаленииДокумента()
12 ZhenyaYa
 
26.04.12
13:29
error:
Если глЕстьРеквизитШапки("АдминПроводка", Докум.Вид())>0 тогда
{Глобальный модуль(1164)}: Операции сравнения на больше-меньше допустимы только над значениями совпадающих базовых типов (число, строка, дата)

почему это оно?
13 chief accountant
 
26.04.12
13:39
(12) функция глЕстьРеквизитШапки присутствует?
14 ZhenyaYa
 
26.04.12
13:46
Да, вот
Функция глЕстьРеквизитШапки(ИмяРеквизита, ВидДокумента) Экспорт
   Перем Реквизит;
   Если (ПустоеЗначение(ВидДокумента) = 1) ИЛИ
        (ПустоеЗначение(ИмяРеквизита) = 1) Тогда
       Возврат Нет;
   КонецЕсли;
   Реквизит=Метаданные.Документ(ВидДокумента).РеквизитШапки(ИмяРеквизита);
   Возврат ?(Реквизит.Выбран()=1, Да, Нет );
КонецФункции //глЕстьРеквизитШапки
15 Он
 
26.04.12
13:48
(14) Ну и?
16 chief accountant
 
26.04.12
13:49
(14) Мде, шедеврально
17 NS
 
26.04.12
13:50
Если глЕстьРеквизитШапки("АдминПроводка", Докум.Вид())=Да тогда
18 NS
 
26.04.12
13:50
Пошел третий день внедрения запрета пометки на удаление :)
19 chief accountant
 
26.04.12
13:52
(18) Админ в отпуске по ходу, так что время есть
20 Он
 
26.04.12
13:53
А до этого обязательно:

Да = "Ура, товарищи!"
21 ZhenyaYa
 
26.04.12
13:55
NS, да нет, скорее третий час, времени не было...ошибка таже
22 chief accountant
 
26.04.12
13:56
(21) Кака-така ошибка?
23 NS
 
26.04.12
13:57
Чему равны переменные Да и Нет?
24 ZhenyaYa
 
26.04.12
14:17
то есть?
25 NS
 
26.04.12
14:20
(24) ИМХО - позовите специалиста, ибо конфе осталось жить совсем недолго.
Кто-то её сейчас убъет. Ты бы допустил к своей машине механика, который не знает что такое колесо?!
26 ZhenyaYa
 
26.04.12
14:30
Да не переживайте вы так, я же хоть и валера, но не совсем...на бекапе учусь
27 chief accountant
 
26.04.12
14:33
(26) Никто не переживает, нам пофиг
28 aka AMIGO
 
26.04.12
14:38
оч. интересно!.. а что, "валера" это что-то позорное, начиная с этой ветки? :)
29 NS
 
26.04.12
14:39
Сделай еще одну функцию в глобальнике
Функция глЕстьРеквизитШапки1(ИмяРеквизита, ВидДокумента) Экспорт
   Перем Реквизит;
   Если (ПустоеЗначение(ВидДокумента) = 1) ИЛИ
        (ПустоеЗначение(ИмяРеквизита) = 1) Тогда
       Возврат Нет;
   КонецЕсли;
   Реквизит=Метаданные.Документ(ВидДокумента).РеквизитШапки(ИмяРеквизита);
   Возврат Реквизит.Выбран()=1
КонецФункции //глЕстьРеквизитШапки1
И коде приудалении() подставь её.
30 aka AMIGO
 
26.04.12
14:39
(29)не вынесла душа мастера? :)
31 NS
 
26.04.12
14:50
(30) И то с ошибкой написал :)
Функция глЕстьРеквизитШапки1(ИмяРеквизита, ВидДокумента) Экспорт
   Перем Реквизит;
   Если (ПустоеЗначение(ВидДокумента) = 1) ИЛИ
        (ПустоеЗначение(ИмяРеквизита) = 1) Тогда
       Возврат 0;
   КонецЕсли;
   Реквизит=Метаданные.Документ(ВидДокумента).РеквизитШапки(ИмяРеквизита);
   Возврат Реквизит.Выбран()=1
КонецФункции //глЕстьРеквизитШапки1
32 Он
 
26.04.12
15:13
(31) Ещё разок.)
33 ZhenyaYa
 
26.04.12
15:15
честно говоря, мне уже стрёмно что то писать, а то опять накормят какушатами :) но все же :

Возврат Реквизит.Выбран()<<?>>=1
{Глобальный модуль(1162)}: Неопознанный оператор
Возврат Реквизит.Выбран()=1<<?>>
{Глобальный модуль(1162)}: Обнаружено логическое завершение исходного текста модуля
34 aka AMIGO
 
26.04.12
15:17
пробуй еще и такой вариант:
Функция глЕстьРеквизитШапки(ИмяРеквизита, ВидДокумента) Экспорт    
   
   
   Если ПустоеЗначение(ИмяРеквизита) = 1 Тогда
       Возврат 0;
   
   ИначеЕсли Метаданные.ОбщийРеквизитДокумента(ИмяРеквизита).Выбран() = 1 Тогда
       Возврат 1;
       
   ИначеЕсли ПустоеЗначение(ВидДокумента) = 1 Тогда
       Возврат 0;
   
   ИначеЕсли Метаданные.Документ(ВидДокумента).РеквизитШапки(ИмяРеквизита).Выбран() = 1 Тогда
       Возврат 1;
       
   Иначе
       Возврат 0;
   КонецЕсли;
   
КонецФункции //глЕстьРеквизитШапки()
35 Он
 
26.04.12
15:19
(33)
  Реквизит=Метаданные.Документ(ВидДокумента).РеквизитШапки(ИмяРеквизита);
   Возврат Реквизит.Выбран();
36 aka AMIGO
 
26.04.12
15:19
(33)вместо
   Возврат Реквизит.Выбран()=1
напечатай
   Возврат Реквизит.Выбран();
37 NS
 
26.04.12
15:20
Во меня клинит :(
38 aka AMIGO
 
26.04.12
15:21
(37)ерунда это..
ТС должна была догадаться.. раз валера.. :)
39 chief accountant
 
26.04.12
15:39
(37) А нефиг ТСу код с форума копировать
40 Он
 
26.04.12
15:46
(39) Он валера. Ему можно.
41 ZhenyaYa
 
26.04.12
17:22
aka AMIGO,  NS спасибо, выручили!