Имя: Пароль:
1C
1С v8
ХранилищеЗначения, скопировать при копировании элемента справочника
0 егаис
 
11.07.18
07:20
УАТ 2.1 Справочник Тарифов. Есть реквизит справочника с типом ХранилищеЗначения.
Как при копировании элемента справочника скопировать в новый элемент хранилищезначения?
1 Cyberhawk
 
11.07.18
07:27
Получаешь значение из хранилища, помещаешь в новое хранилище
2 Cyberhawk
 
11.07.18
07:27
А чтоб экономить место, заведи справочник "ХранилищаЗначений", где и храни свои значения
3 Cyberhawk
 
11.07.18
07:27
А в объектах реквизит-ХЗ замени на ссылку на этот справочник
4 егаис
 
11.07.18
07:30
(2) там на справочник не тянет, хранятся отборы области действия тарифа. Попробую, спасибо.
Еще ламерский вопрос - а как сейчас определяется в присозданиинасервере что элемент скопирован?
5 Cyberhawk
 
11.07.18
07:33
(4) Только в обработчике ПриКопировании модуля объекта помещать в реквизит объекта какой-нибудь маркер (например, текст в комментарий)
6 егаис
 
11.07.18
07:35
(5) спасиб
7 егаис
 
11.07.18
07:41
может я неправ, но это не сработало
Процедура ПриКопировании(ОбъектКопирования)
    
    Если Не ЭтоГруппа Тогда
        ТекОбластьДействия = ОбъектКопирования.ОбластьДействия.Получить();
        ОбластьДействия = Новый ХранилищеЗначения(ТекОбластьДействия);
    КонецЕсли;
    
КонецПроцедуры
8 Chameleon1980
 
11.07.18
07:52
(7) как определил?
9 Chameleon1980
 
11.07.18
07:52
+ что в отладчике-то?
10 егаис
 
11.07.18
07:53
(8) открывается форма с пустым отбором
11 егаис
 
11.07.18
07:56
в ХЗ хранится НастройкиКомпоновкиДанных
12 егаис
 
11.07.18
08:12
пробежался по элементам настрокикомпоновки, нигде привязки к владельцу/родителю нет
В чем может быть причина?
13 егаис
 
11.07.18
08:13
сверил данные ОбластьДействия.Получить() обработкой по существующему элементу, отличий не вижу
14 Chameleon1980
 
11.07.18
08:23
да ты погодь с отборами-то

ты тут скажи что
ТекОбластьДействия = ОбъектКопирования.ОбластьДействия.Получить();

ТекОбластьДействия? для начала

далее это уже другой вопрос.
у тебя тема-то какая изначально?
15 Остап Сулейманович
 
11.07.18
08:24
(0) Православно все выполнить в ОбработкаЗаполнения. Для примера :

//Если это новый
Если ЗначениеЗаполнено(Объект.Ссылка) Тогда
  //Если вводится копированием
  Если ТипЗнч(ДанныеЗаполнения) = ... Тогда
    //Положить ХЗ в переменную формы.
    //на случай если нужно будет новый объект записыывать
    ...
  КонецЕсли;
КонецЕсли;

Как-то так.
16 егаис
 
11.07.18
08:30
(15) ОбработкаЗаполнения при копировании разве работает?
(14) ТекОбластьДействия  = НастройкиКомпоновкиДанных
17 Остап Сулейманович
 
11.07.18
08:30
(16) А проверить?
18 Остап Сулейманович
 
11.07.18
08:32
+ (17) Поработаю ДенисЧ. Из моего СП :
"
Описание:

Возникает при вводе элемента справочника на основании, а также при выполнении метода Заполнить, а также при интерактивном вводе нового. В процедуре-обработчике этого события должен быть описан сам алгоритм заполнения реквизитов элемента справочника на основании переданного значения.
"
19 егаис
 
11.07.18
08:32
(17) не работает
Процедура ОбработкаЗаполнения(ДанныеЗаполнения, ТекстЗаполнения, СтандартнаяОбработка)
    Если ДанныеЗаполнения<>Неопределено Тогда
        ЗаполнитьЗначенияСвойств(ЭтотОбъект, ДанныеЗаполнения);
    КонецЕсли;
КонецПроцедуры
20 егаис
 
11.07.18
08:33
(18) про копировании ни слова
21 Остап Сулейманович
 
11.07.18
08:37
(19) Точно.
"Примечание:

При копировании (как интерактивном, так и средствами встроенного языка), данный обработчик не вызывается. "
22 Остап Сулейманович
 
11.07.18
08:37
+ (21) Птля... Но я же делал заполнение при копировании.
23 Остап Сулейманович
 
11.07.18
08:41
+ (22)
В модуле формы в ПриСознанииНаСервере оно лежит в Параметры.ЗначениеКопирования.

Предварительно проверить вводится ли новый.
24 егаис
 
11.07.18
08:44
(23) да, это понятно.
в ПриКопировании я аналогично получаю значение ХЗ.
Какого фига ОбластьДействия = Новый ХранилищеЗначения(ТекОбластьДействия) пишет пустое значение
25 егаис
 
11.07.18
08:45
в ТекОбластьДействия   отборы я вижу в настройкекомпоновки
а после ОбластьДействия = Новый ХранилищеЗначения(ТекОбластьДействия) пусто
26 FIXXXL
 
11.07.18
09:17
(25) а ОбластьДействия.Получить()?
27 егаис
 
11.07.18
09:27
(26)
Процедура ПриКопировании(ОбъектКопирования)
    
    Если Не ЭтоГруппа Тогда
        ТекОбластьДействия = ОбъектКопирования.ОбластьДействия.Получить();
        ОбластьДействия = Новый ХранилищеЗначения(ТекОбластьДействия);
    КонецЕсли;
    
КонецПроцедуры
28 егаис
 
11.07.18
13:26
подниму, может подтянулись знатоки.