Имя: Пароль:
1C
 
Скопировать запись регистра сведений
,
0 mastodont
 
20.09.16
11:56
Есть управляемая форма списка регистра сведений.
Нужно добавить кнопку для копирования текущий записи (и немного ее изменить).
Не пойму как сделать. Вернее не понятно как получить текущую запись.
1 mastodont
 
20.09.16
11:56
Пробовал вот так, не работает:
&НаСервере
Процедура ВнестиСкидкуНаСервере(ТекСтрока)
    
    НоваяЗапись = РегистрыСведений.ар_ПостоянныеПлатежи.СоздатьМенеджерЗаписи();
    НоваяЗапись.Заполнить(ТекСтрока);
    НоваяЗапись.Записать();    
    
КонецПроцедуры

&НаКлиенте
Процедура ВнестиСкидку(Команда)
    
    ТекСтрока = ЭтаФорма.ТекущийЭлемент.ТекущиеДанные;
        
    ВнестиСкидкуНаСервере(ТекСтрока);
    
КонецПроцедуры
2 mastodont
 
20.09.16
11:57
ТекСтрока в данном случае получается ДанныеФормыСтруктура
3 PR
 
20.09.16
11:57
Так так. Продолжай.
4 Лефмихалыч
 
20.09.16
11:58
(2) и чо?
5 PR
 
20.09.16
11:59
(4) Да обожди ты, не перебивай рассказчика. Дело идет к кульминации.
6 PR
 
20.09.16
12:00
+(5) Сейчас по сценарию должно быть место про то, что
    НоваяЗапись = РегистрыСведений.ар_ПостоянныеПлатежи.СоздатьМенеджерЗаписи();
    НоваяЗапись.Заполнить(ТекСтрока);
    НоваяЗапись.Записать();    
не дает новой записи, а перезатирает существующую.
7 mastodont
 
20.09.16
12:01
(6) я отлоадчиком смотрю:
НоваяЗапись.Заполнить(ТекСтрока); - не заполняет новую запись.
8 mastodont
 
20.09.16
12:02
не пойму как сделать, что бы не перебирать все реквизиты...
9 Ёпрст
 
20.09.16
12:03
(7) дык, её добавить надо, перед заполнением, вестимо
10 mastodont
 
20.09.16
12:07
(0) в смысле?
а НоваяЗапись = РегистрыСведений.ар_ПостоянныеПлатежи.СоздатьМенеджерЗаписи(); что делает?
11 Лефмихалыч
 
20.09.16
12:07
НоваяЗапись.Заполнить(ТекСтрока);
НоваяЗапись.ЗначениеКотороеДолжноОтличаться = КакоеТоЗначение;
12 Лефмихалыч
 
20.09.16
12:07
(10) ты не поверишь...
13 PR
 
20.09.16
12:08
(10) Ты сам с собой общаешься? Круто.
Вообще, может тебе книжки какие почитать, если ты не понимаешь, что такое регистр сведений?
14 PR
 
20.09.16
12:09
(11) НоваяЗапись.Заполнить(ТекСтрока);
НоваяЗапись.ЗначениеИзмеренияКотороеДолжноОтличаться = КакоеТоЗначение;
15 mastodont
 
20.09.16
12:11
(11) (14)
в итоге я получаю запись в которой заполнено только ЗначениеИзмеренияКотороеДолжноОтличаться
16 Ёпрст
 
20.09.16
12:11
(10) в прямом. Ты изменить существующую хочешь запись, или всё же новую слепить ?
17 Лефмихалыч
 
20.09.16
12:12
(15) это вопрос?
18 mastodont
 
20.09.16
12:12
(13) я понимаю что такое регистр сведений. не пойму как получить копию записи (я ее изменю перед записью..).
19 Лефмихалыч
 
20.09.16
12:14
(18) ну, вот ты уже в (1) получаешь копию записи. Полегчало?
20 mastodont
 
20.09.16
12:14
(16)
Мне надо на основании существующей записи сделать новую, у которой изменится период и сумма.
21 mastodont
 
20.09.16
12:15
(19) я ее НЕ получаю. если бы получал вопросов бы не было.
22 Лефмихалыч
 
20.09.16
12:15
(21) получаешь
(20) ну, так измени период и сумму! Просто возьми и измени. Записать не забудь
23 goleaff2006
 
20.09.16
12:18
НоваяЗапись.добавить();  Где?
24 mastodont
 
20.09.16
12:18
(22) изменяю, при записи ругается:
Запись не верна! Значение поля "Контрагент" не может быть пустым!: ар_ПостоянныеПлатежи: 20.09.2016, , ,  (Регистр сведений: Постоянные платежи)
25 Лефмихалыч
 
20.09.16
12:18
(24) хреново меняешь значит. Показывай, как ты это делаешь
26 Лефмихалыч
 
20.09.16
12:19
(23) нет такого метода у менеджера записи
27 mastodont
 
20.09.16
12:19
(25)
&НаСервере
Процедура ВнестиСкидкуНаСервере(ТекСтрока)
    
    НоваяЗапись = РегистрыСведений.ар_ПостоянныеПлатежи.СоздатьМенеджерЗаписи();    
    НоваяЗапись.Заполнить(ТекСтрока);
    НоваяЗапись.Период = ТекущаяДата();
    НоваяЗапись.Записать();    
    
КонецПроцедуры
28 mastodont
 
20.09.16
12:21
Повторюсь, если посмотреть отладчиком, то после
НоваяЗапись.Заполнить(ТекСтрока);
запись пустая...
29 Лефмихалыч
 
20.09.16
12:21
(28) значит не включены галки "Заполнять из данных заполнения" у потрохов регистра.
ЗАмени на ЗаполнитьЗначенияСвойств()
30 mastodont
 
20.09.16
12:26
(29) ЗаполнитьЗначенияСвойств() помогло. огромное спасибо!

но почему не заполнялось через заполнить(0 остается загадкой.
"Заполнять из данных заполнения" - галка стоит...
31 Лефмихалыч
 
20.09.16
12:29
(30) потому, что по умолчанию из данных заполнения заполняются только те атрибуты, у который в конфигураторе включена галка "Заполнять из данных заполнения". Все остальное платформа не заполняет