Добрый день!
Подскажите, пожалуйста!
Как определить в процедуре При создании на сервера формы документа, что документ создан копированием другого документа или на основании другого документа.
Я решаю данную задачу создав реквизит Автор, если он заполнен, то имеет место копирование. Но наверное возможно более красивое решение.
---
проверяйте при создании на сервере параметр формы Параметры.ЗначениеКопирования
---
в модуле объекта, при копировании возникает событие "ПриКопировании", где можно прописать все что угодно для объекта,
например записать в какой то доп реквизит, что он создан копированием, или зачистить при копировании реквизиты которые не нужно копировать.
Уже после создания объекта, сам по себе он такой же как все, и и никаких отличительных признаков не содержит, если вы об этом не позаботитесь в момент копирования.
---
Скажите, пожалуйста, можно ли на созданном документе в 1С узнать - создан ли он копированием или нет. Объясню зачем- у пользователей подтягиваются ошибочные данные в табличную часть только если они копируют документ и перезаполняют. И иногда они врут, что не копировали. Хочу доказать. Спасибо!
---
Признак копирования автоматически в базе не хранится. Необходимо организовать свой собственный и записывать его самостоятельно, определив факт копирования, как указано выше.

Хотя, если у вас документ при копировании заполняется ошибочными данными, то по голове надо стучать вам, а не пользователям.
---
проверяйте при создании на сервере параметр формы Параметры.ЗначениеКопирования
---
Спасибо, добрый человек! Тоже как только не извращался.
---
&НаСервере
&После("ПриСозданииНаСервере")
Процедура Расш1_ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
 Если ПараметрыСоздания.свойство("ИсточникКопирования") Тогда
 Если ЗначениеЗаполнено(ПараметрыСоздания.ИсточникКопирования) Тогда
  Объект.Артикул="";
 КонецЕсли;
 КонецЕсли;
 // Вставить содержимое метода.
КонецПроцедуры
---
Спасибо за ответы!!!
Параметры.ЗначениеКопирования это я не знал. То, что нужно. Спасибо!!!!
---
Спасибо организаторам форума!!!!
---
// В Процедуре ПриОткрытии()
Если ЭтоНовый() Тогда
Если НЕ ПараметрОбъектКопирования = НЕОПРЕДЕЛЕНО Тогда // Проверка на копирование
         Предупреждение("Запрещено копировать Договора!");
         Закрыть();
КонецЕсли;
КонецЕсли;
---
Если надо узнать &НаКлиенте?
---
как уже написали при копировании объекта сначала выполняется в модуле объекта процедура "ПриКопировании".
Затем в модуле формы на сервере "ПриСозданииНаСервере". Затем на клиенте "ПриОткрытии".
Планирую сделать доработку через расширение.
Мне достаточно проанализировать "Параметры.ЗначениеКопирования". Ключевая особенность, что этот параметр существует только на сервере.
Если вам нужно анализировать это после открытия формы, то пишите код, который выполнит сохранение этого параметра в реквизит, можно на форме и далее уже будете его анализировать!
---
ну не сидится 1С на месте - как можно не поломать, что работает... и с недавнего времени При открытии имеем ошибку Поле объекта не обнаружено (Параметры.ЗначениеКопирования) :)
---
В ПриОткрытии это и не работало никогда (в УФ по крайней мере).
---
ну релиза 4 назад в КА точно работало

P.S. Пришлось в параметрах заимствованной формы в расширении добавлять просто этот параметр, т.к. он "исчез" в параметрах формы основной конфигурации.