|
Как запретить копировать документ? | ☑ | ||
---|---|---|---|---|
0
Gorr
18.11.13
✎
12:24
|
Простой вопрос - как запретить копировать документ, если основная форма документа является управляемой?
|
|||
1
Повелитель
18.11.13
✎
12:25
|
(0) Отковырять отверткой кнопку F9
|
|||
2
Maxus43
18.11.13
✎
12:28
|
ПриКопировании есть процедура в объекте, там можно проанализировать поидее и отказ повесить если что
|
|||
3
zakidonoff
18.11.13
✎
12:29
|
&НаКлиенте
Процедура ТоварыПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа) Если Копирование Тогда Отказ = истина; КонецЕсли; КонецПроцедуры |
|||
4
Повелитель
18.11.13
✎
12:29
|
(2) Нет там такого
|
|||
5
kiruha
18.11.13
✎
12:32
|
ДокументОбъект.<Имя документа> (DocumentObject.<Имя документа>)
ПриКопировании (OnCopy) Синтаксис: ПриКопировании(<ОбъектКопирования>) Параметры: <ОбъектКопирования> Тип: ДокументОбъект. Исходный документ, который является источником копирования. Описание: Возникает при создании документа копированием. |
|||
6
Gorr
18.11.13
✎
12:33
|
(2) в этой процедуре нет такого параметра.
Можно определить реквизит документа ВведенКопированием, и анализировать его из формы ПриОткрытии, но это решение не кажется мне удачным. |
|||
7
Maxus43
18.11.13
✎
12:33
|
отказ тока не повесить там
|
|||
8
Gorr
18.11.13
✎
12:36
|
(7) ПриОткрытии как раз имеет параметр Отказ
|
|||
9
Maxus43
18.11.13
✎
12:38
|
(8) я про ПриКопировании, при открытии можно конечно
|
|||
10
kiruha
18.11.13
✎
12:40
|
(9)
А зачем там отказ - достаточно в экспрортную переменную поставить признак |
|||
11
Повелитель
18.11.13
✎
12:40
|
(8) Процедура ПриОткрытии() нет отказа
Процедура ПередОткрытием(Отказ, СтандартнаяОбработка) Чем вариант в (3) не устраивает? Вот еще вариант.Можно еще забрать права на интерактивное добавление. И написать свою кнопку "Добавить". |
|||
12
Gorr
18.11.13
✎
12:42
|
(5) эта информация всем доступна и известна. не флудите пожалуйста.
Вариант (0) слишком радикален. Вопрос на самом деле с подвохом. Пока серьезных мыслей не вижу. Если бы речь шла о простых формах, то там есть решение через расширение формы документа ПараметрОбъектКопирования, но в управляемых формах он недоступен. |
|||
13
mzelensky
18.11.13
✎
12:46
|
(0) чет вы велосепед изобретаете, как мне кажется:
Процедура ПриОткрытии() // Вставить содержимое обработчика. Если ЭтоНовый() тогда Если НЕ ЗначениеЗаполнено(ПараметрОбъектКопирования) тогда //ЗНАЧИТ НЕ СКОПИРОВАН КонецЕсли; КонецЕсли; |
|||
14
kiruha
18.11.13
✎
12:47
|
(12)
Умник которому все известно - тебе же написали - в экспортную переменную или реквизит. |
|||
15
mzelensky
18.11.13
✎
12:48
|
(13) сори, не дочитал про УпрФормы
|
|||
16
Gorr
18.11.13
✎
12:48
|
(10)(14) и как вы потом к этой переменной (если она не глобальная) обратитесь из модуля формы?
(11) процедура ПриОткрытии в УПРАВЛЯЕМЫХ формах как раз таки имеет параметр Отказ. будьте внимательнее при прочтении топика. |
|||
17
Fedor-1971
18.11.13
✎
12:50
|
(12)Если Параметры.ЗначениеКопирования.Пустая() тогда
в управляемых формах |
|||
18
Gorr
18.11.13
✎
12:51
|
+(14) а про вариант с реквизитом я еще в 6м посте упоминал
|
|||
19
Fedor-1971
18.11.13
✎
12:51
|
(17)+ в ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
|
|||
20
kiruha
18.11.13
✎
12:54
|
(16)
РеквизитФормыВЗначение("Объект").МояПерем у перем конечно должно быть Экспорт |
|||
21
Gorr
18.11.13
✎
13:19
|
(17)+(19) это действительно работает. Спасибо!
(20) а вариант с экспортной переменной не работает: Модуль объекта: перем ФлагВведенКопированием Экспорт; Процедура ПриКопировании(ОбъектКопирования) ФлагВведенКопированием = истина; КонецПроцедуры функция ВведенКопированием() экспорт возврат ФлагВведенКопированием; конецфункции Модуль формы: &НаКлиенте Процедура ПриОткрытии(Отказ) Отказ = ВведенКопированием(); КонецПроцедуры &НаСервере функция ВведенКопированием() а = РеквизитФормыВЗначение("Объект").ВведенКопированием(); б = РеквизитФормыВЗначение("Объект").ФлагВведенКопированием; возврат а или б; КонецФункции Так вот в функции модуля формы ВведенКопированием() переменные а и б всегда имеют значение неопределено. Почему? |
|||
22
Gorr
18.11.13
✎
13:24
|
+(21) проверял очередность вызова - ПриКопировании вызывается первой, не смотря на это при последующем обращении к переменной ФлагВведенКопированием из модуля формы ее значение всегда неопределено
|
|||
23
Fedor-1971
18.11.13
✎
13:29
|
Так переменная на уровне документа будет инициализироваться заново при каждом обращении на сервер, если хочешь работать через переменную объяви её, например, в модуле приложения.
|
|||
24
kiruha
18.11.13
✎
13:49
|
||||
25
Gorr
18.11.13
✎
13:49
|
(23) но в этом случае она станет глобальной
|
|||
26
kiruha
18.11.13
✎
13:50
|
В любом случае решение (17) конечно изящнее
|
|||
27
acsent
18.11.13
✎
13:54
|
проще всего при копировании очищать все реквизиты
|
|||
28
Gorr
18.11.13
✎
13:59
|
(24) вот если бы ты почитал тему на которую ссылаешься внимательнее, то понял бы что у человека как раз таки проблема в том, что значение переменной не сохраняется в модуле объекта!
|
|||
29
kiruha
18.11.13
✎
14:00
|
(28)
Нет . Он в модуле объекта еей присваивал "1" и у него выскакивало "1" |
|||
30
kiruha
18.11.13
✎
14:04
|
А в ПриЧтенииНаСервере(ТекущийОбъект)
ТекущийОбъект.ФлагВведенКопированием - ? |
|||
31
Gorr
18.11.13
✎
14:05
|
(29) смотрю у многих здесь проблемы с внимательностью. бесит честное слово!
Вот потому что он присваивал значение переменной в разделе программы модуля равное 1, а не в обработчиках событий в которых он присваивал значение равное 2м, то он и получал значение каждый раз равное 1, а не 2!!! |
|||
32
Gorr
18.11.13
✎
14:08
|
(29) вы вообещ про разделы модуля слышали? знаете чем отличается раздел процедур и функций от раздела основной программы?
|
|||
33
Холодильник
18.11.13
✎
14:09
|
мдаа..
в модуле документа: Процедура ПриКопировании(ОбъектКопирования) ОбъектКопирования = документы.мойДок.ПустаяСсылка(); Конецпроцедуры |
|||
34
kiruha
18.11.13
✎
14:14
|
(31)
И что ? Он пишет что в этом была ошибка. Пока у меня сложилось впечатление что для незаписанных объектов 1С заново инициализирует объект при РеквизитФормыВЗначение("Объект") Поэтому спросил про ПриЧтенииНаСервере(ТекущийОбъект) ТекущийОбъект.ФлагВведенКопированием |
|||
35
banco
18.11.13
✎
14:20
|
(0)
Процедура ПриКопировании(ОбъектКопирования) ТекстОшибки = НСтр("ru='Нельзя создать документ копированием.'"); ВызватьИсключение ТекстОшибки; КонецПроцедуры |
|||
36
Gorr
18.11.13
✎
15:03
|
(34) никакой обишби - нормальное поведение системы. Инициализация переменных модуля выполняется при каждом обращении к модулю. Там это и подтеврждается. Об этом еще в 23 посте объяснили! новый или нет объект да никакой разницы!
если это непонятно, то дальше не о чем говорить |
|||
37
Gorr
18.11.13
✎
15:04
|
(0) некрасивое решение - ошибка с предложением открыть конфигуратор ни к чему.
|
|||
38
Gorr
18.11.13
✎
15:04
|
(35)
|
|||
39
banco
18.11.13
✎
15:17
|
(37) по мне нормальное решение. пользователю надо же что нибудь сообщить почему форма не открылась? тогда придется создавать форму на сервере, открыть форму, сообщить, потом отказаться от открытия.
|
|||
40
Defender aka LINN
18.11.13
✎
15:19
|
(39) Дурацкое решение - запрещать копировать документ, если уж на то пошло.
|
|||
41
AlexTim03
18.11.13
✎
15:26
|
(40) +1
Недавно у нас тоже была задача - "а запретите копировать документ". Вопрос к ТС: на фейхоа? |
|||
42
zakidonoff
18.11.13
✎
15:31
|
ПоказатьОповещениеПользователя("Ты не пройдёшь!",,
//"http://doc.ru", "Гендальф рулит!!!", БиблиотекаКартинок.Важно); У меня нет управляемых форм под рукой, но в справке написано - должно работать |
|||
43
hhhh
18.11.13
✎
15:32
|
(41) потому что тупой программист, когда пишет программу, не догадывается, что пользователь может скопировать документ. Поэтому куча ошибок вылезает.
|
|||
44
kiruha
18.11.13
✎
15:39
|
(36)
А в том посте нет объяснения что тогда означает Экспорт. То народ пишет - не все так просто. |
|||
45
shamannk
18.11.13
✎
15:46
|
(0) Может проблема не в копировании? А в том что копируются лишние данные?
|
|||
46
ifso
18.11.13
✎
17:07
|
+(45)
Или таки запретить "интерактивное добавление". |
|||
47
samozvanec
18.11.13
✎
17:16
|
(0) с командной панели убрать автозаполнение, кнопку копирования не выводить. в контекстном меню тоже самое.
", если основная форма документа является управляемой?" - это условие должно проверяться? |
|||
48
pumbaEO
18.11.13
✎
19:22
|
Очистить все реквизиты при копировании и сделать копирование бесмысленным.
|
|||
49
EvgeniuXP
18.11.13
✎
20:46
|
(13) не универсально, на другой форме тоже писать придется.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |