Имя: Пароль:
1C
1С v8
Аналог ВводНового или как узнать, что ПриКопировании?
0 OnCheck
 
05.09.11
10:15
Заполняю программно реквизиты документа при создании. Нужен аналог ВВодНового() из v7.7 в поиске пишут про ЭтоНовый(). Это хорошо, но как быть при копировании документа, когда реквизиты нужно брать из Объекта копирования? ПриКопировании работает раньше всех.
1 Ненавижу 1С
 
гуру
05.09.11
10:17
(0) объект из которого копируют быть новым никак не может
2 OnCheck
 
05.09.11
10:20
а в который копируют?
3 Goggy
 
05.09.11
10:21
(1) а может он уже реализовал возможность такого копирования :)
4 Goggy
 
05.09.11
10:22
(2) а этот всегда новый.
5 OnCheck
 
05.09.11
10:22
Еще раз. Создается новый объект: 2 варианта
1. Путем копирования
2. Путем НЕ копирования

Как бы в 1 варианте в приОткрытии узнать что он был скопирован?
6 katc
 
05.09.11
10:26
ДокументОбъект.<Имя документа> (DocumentObject.<Имя документа>)
ПриКопировании (OnCopy)
Синтаксис:

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

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

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

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

ДокументСсылка, метод Скопировать
7 OnCheck
 
05.09.11
10:27
(6) и?
8 katc
 
05.09.11
10:27
ну так заполняй в ней свои реквизиты
9 Goggy
 
05.09.11
10:27
ты ещё в (0) сем себе ответил.
10 hhhh
 
05.09.11
10:29
(7) параметрОбъектКопирования
11 Ненавижу 1С
 
гуру
05.09.11
10:29
так как вначале ПриКопировании вызывается, то можно какой либо флаг взвести при этом, а потом анализировать его
12 OnCheck
 
05.09.11
10:29
(11) получается снова через ..опу?
13 hhhh
 
05.09.11
10:30
(11) параметрОбъектКопирования
14 katc
 
05.09.11
10:31
улетай птица-мозгоклюй, улетай
15 OnCheck
 
05.09.11
10:31
(8),(9),(10)


Процедура ПриКопировании(ОбъектКопирования)
   ЭтотОбъект.ЦФО = 1;
КонецПроцедуры

Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)

   Если ЭтоНовый() Тогда
       ЦФО = 2;
   КонецЕсли;

КонецПроцедуры


что будет лежать  в ЦФО в результате для обоих вариантов (Копированием и без)?
16 Ненавижу 1С
 
гуру
05.09.11
10:31
ну и в форме

Расширение формы элемента справочника
ПараметрОбъектКопирования (CopyingObjectParameter)
Использование:
Чтение и запись.
Описание:
Тип: СправочникСсылка. Содержит ссылку на копируемый объект.
17 Ненавижу 1С
 
гуру
05.09.11
10:32
(12) у тебя да
18 OnCheck
 
05.09.11
10:32
правильно 2, а надо чтобы при копировании было 1,
а без копирования было 2
19 Goggy
 
05.09.11
10:34
(18) ну так исправь свой касяк в (15) и будет
20 Goggy
 
05.09.11
10:37
Процедура ПриКопировании(ОбъектКопирования)
   ЭтотОбъект.ЦФО = 1;
КонецПроцедуры

Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)

   Если ЭтоНовый() Тогда
//Добавь проверку на копирование...
       Если ЦФО = 1 тогда
           //Делаем что нужно при копировании...
       Иначе
           //Делаем что нужно при создании нового...
           ЦФО = 2;
       КонецЕсли;
   КонецЕсли;

КонецПроцедуры
21 Ненавижу 1С
 
гуру
05.09.11
10:39
Процедура ПриКопировании(ОбъектКопирования)
   ЭтотОбъект.ЦФО = 1;
КонецПроцедуры

Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)

   Если ЗначениеЗаполнено(ПараметрОбъектКопирования) Тогда
     //тут уже установили
   ИначеЕсли ЭтоНовый() Тогда
       ЦФО = 2;
   КонецЕсли;

КонецПроцедуры
22 OnCheck
 
05.09.11
10:40
(16) Спасибо. Нужен был ПараметрОбъектКопирования, про него не знал.
(20) ЦФО это не флаг, это конечное значение. С флагом все понятно. Просто думал что есть лучшее, И спасибо Ненавижу 1С, он подсказал.
23 OnCheck
 
05.09.11
10:43
(17) без параметра ПараметрОбъектКопирования, думаю было бы у всех да :)
24 Ненавижу 1С
 
гуру
05.09.11
10:48
(23) нет, флаг ввести было трудно, вот показываю как если бы не было:

//модуль объекта
Перем ЭтоКопирование Экспорт;

Процедура ПриКопировании(ОбъектКопирования)
   ЭтотОбъект.ЦФО = 1;
   ЭтоКопирование = Истина;
КонецПроцедуры

ЭтоКопирование = Ложь;


//модуль формы
Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)

   Если ЭтоКопирование Тогда
     //тут уже установили

   ИначеЕсли ЭтоНовый() Тогда
       ЦФО = 2;
   КонецЕсли;

КонецПроцедуры
25 OnCheck
 
05.09.11
10:53
(24) Согласен, не трудно. Но ПриКопировании это модуль объекта, а ПередОткрытием это модуль формы, как с видимостью было бы, если ЭтоКопирование не реквизит документа?
26 Ненавижу 1С
 
гуру
05.09.11
10:56
(25) а ты почитай внимательно, атрибут объекта описан как экспортный
27 OnCheck
 
05.09.11
11:01
(26) ага, ну да... тогда остается только про скорость обращения к объектам говорить, ИМХО встроенная переменная будет работать быстрее, чем описанная программистом в модуле 1С. Тогда бы зачем они его вообще делали этот ПараметрОбъектКопирования, ведь весь этот ПараметрОбъектКопирования целиком можно передать через параметр.!?
28 Ненавижу 1С
 
гуру
05.09.11
11:06
(27) я не знаю зачем они его придумали, если честно. На скорость это влияет очень слабо
Ошибка? Это не ошибка, это системная функция.