Имя: Пароль:
1C
1С v8
Как запретить создание документа копированием.
0 TumenJan
 
21.05.19
11:33
запретить создание документа копированием?
1 Cyberhawk
 
21.05.19
11:35
У формы в ПриСозданииНаСервере вроде есть свойство "ОбъектКопирования"
2 Cyberhawk
 
21.05.19
11:35
А если создание неинтерактивное, то...
3 trooba
 
21.05.19
11:35
ДокументОбъект.<Имя документа>.ПриКопировании (DocumentObject.<Имя документа>.OnCopy)
ДокументОбъект.<Имя документа> (DocumentObject.<Имя документа>)
ПриКопировании (OnCopy)
Синтаксис:

ПриКопировании(<ОбъектКопирования>)
Параметры:

<ОбъектКопирования>

Тип: ДокументОбъект.<Имя документа>.
Исходный документ, который является источником копирования.
Описание:

Возникает при создании документа копированием.
Замечание:

Безопасный режим на время исполнения данного обработчика будет отключен. Данное замечание не относится к обработчикам событий, расположенным в расширении конфигурации.
См. также:

ДокументСсылка.<Имя документа>, метод Скопировать

--------------------------------------------------------------------------------

     Методическая информация
4 Жан Пердежон
 
21.05.19
11:36
ПриКопировании (OnCopy)
Синтаксис:

ПриКопировании(<ОбъектКопирования>)
Параметры:

<ОбъектКопирования>

Тип: ДокументОбъект.<Имя справочника>.
Исходный элемент, который является источником копирования.
Описание:

Возникает при создании элемента справочника копированием.
5 Cyberhawk
 
21.05.19
11:36
+(1) "ПараметрОбъектКопирования", во
6 alkorolev
 
21.05.19
11:37
(0) зачем запрещать? ПриКопировании "обнуляй" объект
7 Cyberhawk
 
21.05.19
11:40
+(2) Использовать событие из (3) или (4) и там либо вызывать исключение, либо выдавать сообщение-отлуп, а сам объект запоминать где-нибудь в сеансе и в ПередЗаписью выдавать отлуп. Но второе ненадежно, т.к. у объекта могут поменять ссылку до записи.
8 TumenJan
 
21.05.19
11:43
Ребята ничего не понял, так как запретить создание документа копированием(((
9 yurikmellon2
 
21.05.19
11:46
(8) судя по всему позвать программиста...
Кодить надо. Нет такой настройки.
10 Mikeware
 
21.05.19
11:49
опять бородатая девушка....
11 TumenJan
 
21.05.19
11:50
Я нашла вот такую процедуру:

Если ЭтаФорма.ПараметрОбъектКопирования <> Неопределено Тогда
    Отказ = Истина;
    Предупреждение("Копирование запрещенно");
КонецЕсли;

Скажите что написать вместо слова : ЭтаФорма
12 TumenJan
 
21.05.19
11:51
Я не бородатая))
13 TumenJan
 
21.05.19
11:53
если что я могу дать удаленный доступ TeamViewer
14 catena
 
21.05.19
11:53
Тамен джан, а кроме поиска готовых процедур, какие-нибудь книги были прочитаны?
15 TumenJan
 
21.05.19
11:54
да я изучаю
16 catena
 
21.05.19
11:54
(13)Круто. Сколько готовы заплатить за эту услугу?
17 sqr4
 
21.05.19
11:54
(13) давай инсту для начала
18 TumenJan
 
21.05.19
11:54
Вот полный текст:

Как запретить создание документа копированием в 1с.

Платформа: 8.2, 8.3
Формы: Обычные, Управляемые
Конфигурация: любая
Релиз: любой
Страница актуализирована: 06.02.2017

Запрет копирования документа.
Как запретить копирование документа? Добавить в процедуру формы документа "ПередОткрытием" следующий код:

Если ЭтаФорма.ПараметрОбъектКопирования <> Неопределено Тогда
    Отказ = Истина;
    Предупреждение("Копирование запрещенно");
КонецЕсли;
19 catena
 
21.05.19
11:54
(15)Это хорошо. Чем отличается модуль формы от модуля объекта?
20 TumenJan
 
21.05.19
11:55
Что такое инсту
21 catena
 
21.05.19
11:55
(17)Ахах, ну все, забирай, теперь ты в ответе)))
22 TumenJan
 
21.05.19
11:56
в модуле формы тебе доступна сама форма напрямую ,а в модуле объекта ты работаешь с самим объектом
23 Фрэнки
 
21.05.19
11:56
(18) открой форму документа в конфигураторе и создай или проверь наличие процедуры-обработчика ПередОткрытием
24 sqr4
 
21.05.19
11:57
(21) ЩА научим
25 sqr4
 
21.05.19
11:57
(20) Инстаграм)
26 Фрэнки
 
21.05.19
11:57
(20) инстаграмм твой выпрашивает... ты что, в самом деле бородатая, что не знаешь молодежного слэнга?
27 TumenJan
 
21.05.19
12:00
ну вот приехали((( да я бородатая)) и что из-этого.

Подскажите что написать:

Если ЭтаФорма.ПараметрОбъектКопирования <> Неопределено Тогда
    Отказ = Истина;
    Предупреждение("Копирование запрещенно");
КонецЕсли;
28 lodger
 
21.05.19
12:03
(27) ну так и пиши.
29 Фрэнки
 
21.05.19
12:05
(27) тебе все выше русским языком написано. Кратко повторю
1) Открываешь форму нужного тебе документа в Конфигураторе
2) Ищи на форме включенный обработчик события ПередОткрытием
3) вставляй в процедуру обработчик код из (27) без изменения текста
30 TumenJan
 
21.05.19
12:07
да я так и сделала. Открыла программу, выбираю документ - вот:

{Документ.ОтчетОПроведенииАудита.Форма.ФормаСписка.Форма(5)}: Поле объекта не обнаружено (ПараметрОбъектКопирования)
    Если ЭтаФорма.ПараметрОбъектКопирования <> Неопределено Тогда
31 trooba
 
21.05.19
12:17
(30) ЭтотОбъект.ПолучитьФорму().ПараметрОбъектКопирования
32 trooba
 
21.05.19
12:18
Вместо ЭтаФорма.ПараметрОбъектКопирования
33 fisher
 
21.05.19
12:22
(30) Это пример для обычных форм. У вас форма управляемая или обычная?
34 TumenJan
 
21.05.19
12:25
Вот так написала:

Если ЭтотОбъект.ПолучитьФорму() <> Неопределено Тогда
    Отказ = Истина;
    Предупреждение("Копирование запрещенно");
КонецЕсли;


При проверке выдает:

{Документ.ОтчетОПроведенииАудита.Форма.ФормаСписка.Форма(5,7)}: Переменная не определена (ЭтотОбъект)
    Если <<?>>ЭтотОбъект.ПолучитьФорму() <> Неопределено Тогда  (Проверка: Толстый клиент (обычное приложение))
35 catena
 
21.05.19
12:27
Форма.ФормаСписка - откуда у формы списка объект копирования?
Продолжим, чем форма объекта отличается от формы списка?
36 TumenJan
 
21.05.19
12:31
в форме объекта можно изменять, а в форме списка выбирать - наверное
37 trooba
 
21.05.19
12:31
(34) Перед открытием в форме документа, а не списка.
38 Фрэнки
 
21.05.19
12:33
(30) все-таки написано было, что текст дается для формы _объекта_ , т.е. _документа_, но не списка

Если сделаешь в форме документа, то все получится.
39 TumenJan
 
21.05.19
12:33
как исправить эту ошибку((
40 Фрэнки
 
21.05.19
12:33
(39) так нет никакой ошибки
41 Фрэнки
 
21.05.19
12:35
просто сделай все в форме _документа_ , не надо пытаться это повторять в форме списка
42 TumenJan
 
21.05.19
12:39
Да я не той форме делала, простите меня ребята.
Сейчас в форме сделала, при проверке выходит вот:

{Документ.ОтчетОПроведенииАудита.Форма.ФормаДокумента.Форма(16,15)}: Обнаружено логическое завершение исходного текста модуля
КонецПроцедуры<<?>> (Проверка: Толстый клиент (обычное приложение))
43 trooba
 
21.05.19
12:41
(42) Что то лишнее в процедуру вставила. весь код процедуры смотри
44 TumenJan
 
21.05.19
12:45
Пишет что Процедура или функция с указанным именем уже определена (ПередОткрытием)
45 Mikeware
 
21.05.19
12:45
Ошибка там же, где и всегда...
46 catena
 
21.05.19
12:46
(44)Это очень большая проблема, боюсь, силами форума не решить
47 trooba
 
21.05.19
12:47
(44) потому что 2 раз добавила, а нужно было в существующую вставить код
48 TumenJan
 
21.05.19
12:52
Какая я же я бородатая мозг расплавился, Ребята всем большое СПАСИБО))), извините за "Тупость", наконец-то все получилось, еле еле разобралась. И все получилось. Буду читать книгу по программировании для новичков
49 hhhh
 
21.05.19
12:52
(44) ну не определяйте функцию ПередОткрытием 2 раза.
50 TumenJan
 
21.05.19
13:09
А можете мне еще помочь на другим вопросом?
51 trooba
 
21.05.19
13:10
Задавай
52 НЕА123
 
21.05.19
13:23
С Днем Рождения!
53 trooba
 
21.05.19
13:25
(52) +1 :)
54 TumenJan
 
21.05.19
13:48
коллеги поздравляли)), спасибо и вам за поздравления. Но сейчас не до ДР,

Есть вот такое:

В отчете о проведении аудита в поле «Описание» добавить проверку на заполненность (не должно быть только пробелов, точек или запятых)

Старалась правильно описать проблему
55 trooba
 
21.05.19
13:52
(54) ПередЗаписью() Если СокрЛП(Описание)="" или СтрНайти(","Описание)>0 или СтрНайти("."Описание)>0  тогда Отказ=Истина; КонецЕсли;
56 TumenJan
 
21.05.19
14:07
Все правильно поставила, но вышло Вот:

{Документ.ОтчетОПроведенииАудита.Форма.ФормаДокумента.Форма(264,59)}: Ожидается символ ')'
    Если СокрЛП(ОписаниеРеакцияРаботника)="" или СтрНайти(","<<?>>ОписаниеРеакцияРаботника)>0 или СтрНайти("."ОписаниеРеакцияРаботника)>0  тогда Отказ=Истина;  (Проверка: Толстый клиент (обычное приложение))
57 trooba
 
21.05.19
14:11
СтрНайти(",",ОписаниеРеакцияРаботника)>0 или СтрНайти(".",ОписаниеРеакцияРаботника)>0 надо запятые поставить, между кавычкой и ОписаниеРеакцияРаботника
58 НЕА123
 
21.05.19
14:14
Отказ = ПустаяСтрока(СтрЗаменить(СтрЗаменить(Описание,".",""),",",""))
59 TumenJan
 
21.05.19
14:16
Извините меня, все поставил, но опять ВОТ:

{Документ.ОтчетОПроведенииАудита.Форма.ФормаДокумента.Форма(264,47)}: Процедура или функция с указанным именем не определена (СтрНайти)
    Если СокрЛП(ОписаниеРеакцияРаботника)="" или <<?>>СтрНайти(",",ОписаниеРеакцияРаботника)>0 или СтрНайти(".",ОписаниеРеакцияРаботника)>0  тогда Отказ=Истина;  (Проверка: Толстый клиент (обычное приложение))
{Документ.ОтчетОПроведенииАудита.Форма.ФормаДокумента.Форма(264,92)}: Процедура или функция с указанным именем не определена (СтрНайти)
    Если СокрЛП(ОписаниеРеакцияРаботника)="" или СтрНайти(",",ОписаниеРеакцияРаботника)>0 или <<?>>СтрНайти(".",ОписаниеРеакцияРаботника)>0  тогда Отказ=Истина;  (Проверка: Толстый клиент (обычное приложение))
60 trooba
 
21.05.19
14:18
(59) ошибся, параметры в СтрНайти(",",ОписаниеРеакцияРаботника)>0 наоборот должны быть СтрНайти(ОписаниеРеакцияРаботника,",")>0
61 TumenJan
 
21.05.19
14:23
Поставила, но Вышло опять:

{Документ.ОтчетОПроведенииАудита.Форма.ФормаДокумента.Форма(264,47)}: Процедура или функция с указанным именем не определена (СтрНайти)
    Если СокрЛП(ОписаниеРеакцияРаботника)="" или <<?>>СтрНайти(ОписаниеРеакцияРаботника,",")>0 или СтрНайти(ОписаниеРеакцияРаботника,".")>0  тогда Отказ=Истина;  (Проверка: Толстый клиент (обычное приложение))
{Документ.ОтчетОПроведенииАудита.Форма.ФормаДокумента.Форма(264,92)}: Процедура или функция с указанным именем не определена (СтрНайти)
    Если СокрЛП(ОписаниеРеакцияРаботника)="" или СтрНайти(ОписаниеРеакцияРаботника,",")>0 или <<?>>СтрНайти(ОписаниеРеакцияРаботника,".")>0  тогда Отказ=Истина;  (Проверка: Толстый клиент (обычное приложение))
62 Флориан
 
21.05.19
14:27
(61) вместо "СтрНайти" "Найти"
63 trooba
 
21.05.19
14:33
(62) Найти Устаревшая, рекомендуют СтрНайти
64 TumenJan
 
21.05.19
14:33
Ребята Вы просто умницы, спасибо Вам большое. Все получилось.

А можно чтобы сообщение выходило примерно такой текст"Не заполнено"
65 trooba
 
21.05.19
14:34
Сообщить("Не заполнено"); перед Отказ=Истина;
66 stix2010
 
21.05.19
14:43
Круто. Научили возможно бородатую девушку говнокодить. Ппц, как запретить копирование -  при открытии формы дать отказ - ох**еть. Покопались в модуле формы, зачем? Чем модуль объекта  или подписка не угодили? Причем если УФ, то модуль объекта может быть в расширении.
67 TumenJan
 
21.05.19
14:44
СПАСИБО БОЛЬШОЕ РЕБЯТА, ВЫ ТАКИЕ УМНЫЕ.
68 Фрэнки
 
21.05.19
14:45
(66) умник
Ну дай развернутое свое решение, кто тебе не дает
69 Вафель
 
21.05.19
14:46
лучше не запрещать, а очищать нужные поля.
так юзер экспириенс не страдает
70 trooba
 
21.05.19
14:54
(69) Ну все поле может не стоит очищать... из-за 1 лишней запятой
71 trooba
 
21.05.19
14:57
(66) В ошибке явно написано Толстый клиент, обычное приложение. При постановке задачи не говорилось, что данная процедура должна отрабатывать при программном копировании документов. Поэтому модуль объекта тут незачем. Подписка? Какая подписка... ты бы хоть читал
72 НЕА123
 
21.05.19
15:07
если есть в описании точка или запятая - то ...
это (55)
73 Krendel
 
21.05.19
15:12
(0) Убери кнопку копирования из меню
74 stix2010
 
21.05.19
15:15
(71) Как запретить создание документа копированием.  

Делается без снятия с поддержки модулей.
для ТК
Процедура ПодпискаНаСобытие1ПриКопировании(Источник, ОбъектКопирования) Экспорт
    Отказ = Истина;
КонецПроцедуры

Для УФ

модуль документа в расширении

&Перед("ПриКопировании")
Процедура Т_Доп_ПриКопировании(ОбъектКопирования)
    Отказ=Истина;
КонецПроцедуры
75 Фрэнки
 
21.05.19
15:27
(74) не работает твое решение через модуль расширение для УФ

Процедура обработчик ПриКопировании не обрабатывает Отказ = Истина
76 Фрэнки
 
21.05.19
15:34
(74) и через подписку ПриКопировании тоже не работает. Нет обработки на Отказ = Истина
77 stix2010
 
21.05.19
15:40
чет я погорячился, ПриКопировании входящего параметра Отказ нет. Но при других методах, лучше делать так.
78 stix2010
 
21.05.19
16:03
хотя  логично использовать (6), а не запрещать.
79 _Дайвер_
 
21.05.19
17:25
Вы только что видели рождение будущего архитектора 1С
80 TumenJan
 
22.05.19
07:47
Привет всем, вопрос:

Есть пять колонок: ОД; ОУ; Риск легкой травмы; Риск тяжелой травмы; Риск смертельной травмы.

Проблема:
1) вместо флажков при выборе какой-либо колонки выставляется 1 или 0.


Задача:  1. Замена использование числовых значений («1») на флажок («V»).
         2. Если поставили флажок в колонке "ОД", то можно поставить только один флажок из 3 колонок " Риск легкой травмы; Риск тяжелой травмы; Риск смертельной травмы "
3) Также и с колонкой "ОУ"
81 TumenJan
 
22.05.19
07:51
Вот код который ставит 0 но нужно ставить флажок:

ТД = Элемент.ТекущиеДанные;
    Колонка = Элемент.ТекущаяКолонка.Имя;
    Если Колонка = "РискЛегкойТравмы" Тогда
        Если ТД.РискЛегкойТравмы > 0 Тогда
            ТД.РискТяжелойТравмы = 0;
            ТД.РискСмертельнойТравмы = 0;
        КонецЕсли;    
    ИначеЕсли Колонка = "РискТяжелойТравмы" Тогда
        Если ТД.РискТяжелойТравмы > 0 Тогда
            ТД.РискЛегкойТравмы = 0;
            ТД.РискСмертельнойТравмы = 0;
        КонецЕсли;    
    ИначеЕсли Колонка = "РискСмертельнойТравмы" Тогда
        Если ТД.РискСмертельнойТравмы > 0 Тогда
            ТД.РискТяжелойТравмы = 0;
            ТД.РискЛегкойТравмы = 0;
        КонецЕсли;    
    ИначеЕсли Колонка = "ОД" Тогда
        Если ТД.ОД > 0 Тогда
            ТД.ОУ = 0;
        КонецЕсли;    
    ИначеЕсли Колонка = "ОУ" Тогда
        Если ТД.ОУ > 0 Тогда
            ТД.ОД = 0;
        КонецЕсли;    
    КонецЕсли;
82 Evgenchik
 
22.05.19
08:27
так сделай булево, а не число
83 TumenJan
 
22.05.19
08:29
спасибо, но я сама разобралась.
а вот по второму можете помочь:

2. Если поставили флажок в колонке "ОД", то можно поставить только один флажок из 3 колонок " Риск легкой травмы; Риск тяжелой травмы; Риск смертельной травмы "
3) Также и с колонкой "ОУ"
84 yavasya
 
22.05.19
08:35
(83) Если поставили флажок в колонке "ОД", то можно поставить только один флажок из 3 колонок " Риск легкой травмы; Риск тяжелой травмы; Риск смертельной травмы "  
Надо запомнить и включить в синтаксис помощник предупреждений! Тогда пользователи нгачнут думать)
85 TumenJan
 
22.05.19
08:38
Добрый день!

На форме есть две таблица данных.
1 таблица имеет колонки: №, Категории, и т.д.
2 таблица имеет колонки: №, ФИО, Категории

Внимание Вопрос: Как можно сделать так, чтобы при выборе строки с данными на колонке "Категории" в первой таблице, выводились такие же данные в строке "Категория" во второй таблице.
86 sqr4
 
22.05.19
08:41
Юзать отбор строк
87 yavasya
 
22.05.19
08:52
(85) нужно сделать все в одной таблице, это не логично соединяться по номеру строки
88 yavasya
 
22.05.19
08:53
(85) в Управляемом приложении это делается в цикле (добавляются реквизиты на динамического списка на форме)
89 TumenJan
 
22.05.19
09:02
(88) а как это сделать
90 yavasya
 
22.05.19
09:16
(89) https://helpf.pro/faq/view/1580.html
тут рассмотрен существующий динамический список, а тебе нужно добавить колонки в динамический списоки программно дозаполнить в цикле
91 hhhh
 
22.05.19
10:54
(90) да у нее обычные формы
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.