Имя: Пароль:
1C
1С v8
Как отключить возможность копирования документов и справочников?
,
0 Saari
 
20.11.15
11:54
Есть БУХ 2.0 и УТ 10.3. Можно ли отключить у пользователей (кроме администратора (пользователя с полными правами)) возможность копирования документов и элементов справочников?
Чтобы пользователи могли новые документы и элементы справочников только добавлять путем создания нового, а не копирования существующего?

P.S. Способ закрыть кнопку копирования в каждом объекте знаю, но это надо каждый объект править.
1 ДенисЧ
 
20.11.15
11:55
штатно - только играть с правами
2 Ёпрст
 
20.11.15
11:55
или подписками на событие
3 Naumov
 
20.11.15
11:55
только правкой кода
4 Saari
 
20.11.15
12:17
Создал подписку на событие ПриКопировании(). В источнике задал объекты: СправочникОбъект, ДокументОбъект.
В модуле обработчика написал процедуру:

Процедура ПриКопированииДокументаСправочникаПриКопировании(Источник, ОбъектКопирования) Экспорт
    
    Если Не РольДоступна("ПолныеПрава") Тогда
        Если ЗначениеЗаполнено(ОбъектКопирования.ПараметрОбъектКопирования) Тогда
            Отказ = Истина;    
            Сообщить("Функция копирования не доступна!");
            Возврат;
        КонецЕсли;
    КонецЕсли;
    
КонецПроцедуры

При копировании элемента справочника возникает ошибка: Поле объекта не обнаружено (ПараметрОбъектКопирования). Потому что ПараметрОбъектКопирования это Расширение формы элемента. Так?

Если я убираю строку с проверкой на заполненность значения, то при копировании элемента справочника  открывается форма с новым объектом (как будто я создаю новый) с частично очищенными полями.
Для документа - создается новый объект с заполненными полями.
5 Мимохожий Однако
 
20.11.15
12:26
Меня лично больше интересует вопрос: Почему возникла такая необходимость? Если криво вводят, то есть топор. Или научить.
6 Гёдза
 
20.11.15
12:37
не отказ, а ВызватьИсключение
7 Гёдза
 
20.11.15
12:38
А лучше конечно в копировании ОЧИЩАТЬ значимые поля.
Такое поведение более юзер-френдли
8 Saari
 
20.11.15
12:43
(6) напиши, пожалуйста, код
9 Горогуля
 
20.11.15
12:44
(8) для ВызватьИсключение?
10 Saari
 
20.11.15
12:50
Написал так:
Если  РольДоступна("ПолныеПрава") Тогда
ВызватьИсключение "Функция копирования не доступна!";
Возврат;
КонецЕсли;

В результате при копировании получаю окно с моим текстом и двумя кнопками: "ОК" и "Подробно...".
Если нажать на "Подробно..." то открывается окно ошибок 1С.

Можно ли сделать так, чтобы было без кнопки "Подробно..."?
11 ДенисЧ
 
20.11.15
12:51
(10) Можно. Запускай тонкого клиента ))
12 Saari
 
20.11.15
12:54
(11) не, не годится )
13 DexterMorgan
 
20.11.15
12:55
(10) эта Подробно ток в режиме отладки отображается
14 DexterMorgan
 
20.11.15
12:56
(10) У пользователей же отладка не включена и не будет у них
15 DexterMorgan
 
20.11.15
12:58
(10) Нах тебе возврат?
16 aleks_default
 
20.11.15
12:59
ТС не делай костыли, делай как в (7)
17 kiruha
 
20.11.15
13:00
(0)
Зачем изобретать велосипед

В при копировании пишешь в переменную модуля - ЭтоКопирование=Истина
Далее где угодно Отказ=Истина
18 kiruha
 
20.11.15
13:01
в других событиях
19 Saari
 
20.11.15
13:03
(13) закрыл конфигуратор и открыл базу простым пользователем. Все равно кнопка "Подробно..." отображается. (15) убрал Возврат; ))
(16) это я обсужу с руководством
(17) это надо в каждом объекте прописывать? Расскажи подробнее.
20 kiruha
 
20.11.15
13:06
(19)
Можешь в подписках - 2 подписки
21 Saari
 
20.11.15
13:17
(7) (16) после переговоро решили попробовать очищать все значимые поля при копировании.
Подскажите, пожалуйста, как очистить?
22 Рэйв
 
20.11.15
13:20
(21)Перед открытием
    Если ЭтоНовый() Тогда  
        ЗначимыйРеквизит= "";
    КонецЕсли;
23 Saari
 
20.11.15
13:25
(22) мне нужно не конкретный документ/элемент справочника обрабатывать, а все справочники и объекты. Прописывать очищение реквизитов в каждом объекте не вариант.
24 vde69
 
20.11.15
13:27
(21) для документов:

в модуле ЗаполнениеДокументов

есть процедура ЗаполнитьШапкуДокумента(...)

вот в ней и надо прописать...


для справочников - поищи может есть подобное...
25 Гёдза
 
20.11.15
13:28
Кнопка подробно - побочный эффект. Но без него никак
26 Saari
 
20.11.15
14:43
Пробую перебрать все реквизиты объекта и очистить их. Пишу так:
Процедура ПриКопированииДокументаСправочникаПриКопировании(Источник, ОбъектКопирования) Экспорт

Для каждого Реквизит Из ОбъектКопирования.Метаданные().Реквизиты Цикл
                  Сообщить(Реквизит.Имя + " --- " + Реквизит.Тип);
                <здесь что-то надо прописать, что очистит реквизит у создаваемого объекта>            КонецЦикла;

Как правильно очистить реквизит?
27 Saari
 
20.11.15
15:50
Сделал так:
        Если Справочники.ТипВсеСсылки().СодержитТип(ТипЗнч(ОбъектКопирования.Ссылка)) Тогда
            
            Для Каждого Реквизит Из Источник.Метаданные().Реквизиты Цикл
                Источник[Строка(Реквизит.Имя)] = Неопределено;
            КонецЦикла;
            
            Для Каждого Реквизит Из Источник.Метаданные().СтандартныеРеквизиты Цикл
                Если СокрЛП(Реквизит.Имя) = "Наименование" Тогда
                    Источник[Строка(Реквизит.Имя)] = Неопределено;
                КонецЕсли;
            КонецЦикла;
        
        ИначеЕсли Документы.ТипВсеСсылки().СодержитТип(ТипЗнч(ОбъектКопирования.Ссылка)) Тогда
            
            Для Каждого Реквизит Из Источник.Метаданные().Реквизиты Цикл
                Источник[Строка(Реквизит.Имя)] = Неопределено;
            КонецЦикла;
            
            Для Каждого ТЧ Из Источник.Метаданные().ТабличныеЧасти Цикл
                Источник[Строка(ТЧ.Имя)].Очистить();
            КонецЦикла;

        КонецЕсли;


Работает.
Но появился вопрос: в справочнике "Контрагенты" есть раздел "Контактная информация". Как очистить этот раздел?
28 kiruha
 
20.11.15
15:50
(26)
Правильно вызвать специалиста или пойти на курсы. Не ну должна быть некая грань незнания
29 Saari
 
20.11.15
15:51
(28) Очистил реквизит )) самостоятельно )
Теперь как очистить контакты?
30 VikingKosmo
 
20.11.15
15:52
(27) КИ это ТабличнаяЧасть, если что
31 Saari
 
20.11.15
15:52
(30) нет
32 Saari
 
20.11.15
15:53
БУХ 2.0 и УТ 10.3
33 VikingKosmo
 
20.11.15
15:53
тьху, это ж 10ка
34 Saari
 
20.11.15
15:53
(30) у меня БУХ 2.0 и УТ 10.3
35 VikingKosmo
 
20.11.15
15:53
тогда это ЕМНИП, это РС
36 VikingKosmo
 
20.11.15
15:53
а он и так не должен копироваться
37 DexterMorgan
 
20.11.15
15:54
(19)(25) А какая платформа? я специально воспроизвел на тестовой базе, не появляется у меня кнопки подробно без отладки
38 Saari
 
20.11.15
15:55
(37) платформа 8.3 (8.3.6.2332)
(36) значения контактов переходят из копируемого элемента.
39 Saari
 
20.11.15
15:56
(37) на какой платформе пробовали?
40 DexterMorgan
 
20.11.15
15:57
(38) да ты гонишь, нет кнопки подробно. Зайди у клиента в сервис-параметры - там не стоит галка "отладка в текущем сеансе разрешена" ? и появляется кнопка подробно?
41 Saari
 
20.11.15
16:04
(40) Зашел в базу под пользователем. Зашел в Сервис-Параметры. На закладке "Системные" галки "отладка в текущем сеансе разрешена" нет. Но кнопка "Подробно..." появляется.
Конфигурация УТ 10.3
42 Гёдза
 
20.11.15
16:16
(40) Это только в тонком так
43 DexterMorgan
 
20.11.15
16:23
(42) да блин у меня толстый клиент и нет этой кнопки
44 Гёдза
 
20.11.15
16:25
(38) контакты в форме копируются )))
45 Saari
 
20.11.15
16:25
(44) да. Как их очистить?
46 DexterMorgan
 
20.11.15
16:26
(42) в обычном приложении есть, в упр нету
47 DexterMorgan
 
20.11.15
16:26
(42) так шта не в тонком дело :peka:
48 VikingKosmo
 
20.11.15
16:26
(46) так у ТС УТ 10.3, откуда ему взять УФ?
49 Saari
 
20.11.15
16:27
(46) у меня обычное приложение.
50 Saari
 
20.11.15
16:27
остался последний вопрос: как очистить контакты?
51 DexterMorgan
 
20.11.15
16:27
(49) это я уже понял
52 DexterMorgan
 
20.11.15
16:27
(48) вылез
53 VikingKosmo
 
20.11.15
16:28
(50) если они, как было сказано в (44) копируются в форме, очищать их нужно там же))
54 DexterMorgan
 
20.11.15
16:29
(48) утверждали, что кнопка появляется не в тонком клиенте, вот я и писал, что у меня работает
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.