Имя: Пароль:
1C
1С v8
Запись элемента справочника в регистр сведений
0 Эльчин
 
11.03.13
12:36
Есть справочник Услуги, регистр сведений РегистрУслуг. Записываю так:
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
   Регистр = РегистрыСведений.РегистрУслуг.СоздатьМенеджерЗаписи();
   Регистр.Период = ТекущаяДата();
   Регистр.Услуга = Объект.Наименование;
   Регистр.Цена = Объект.Цена;
   Регистр.Скидка = Объект.Скидка;
   Регистр.Записать();
КонецПроцедуры

запись добавляется в регистр, но Наименование не записывается. Цена и Скидеа записывается. Типы совпадают. не могу найти вчем проблема. Буду благодарен если поможете
1 andreymongol82
 
11.03.13
12:37
Регистр.Услуга = Объект.Наименование;
Регистр.Услуга - какого типа?
2 Alex375
 
11.03.13
12:38
А Вы уверены что в регистре измерение "Услуга" типа строка? Что-то меня тревожат смутные сомнения по этому поводу...
3 НафНаф
 
11.03.13
12:38
а точно наименование нужно, а не ссылка?
4 MSII
 
11.03.13
12:39
Измерение Услуга - Тип СправочникСсылка.Услуги, зуб даю.
5 andreymongol82
 
11.03.13
12:39
(4) Сдается мне, что тип СправочникСсылка.Номенклатура...
6 Эльчин
 
11.03.13
12:43
(1) СправочникСсылка.Услуги
7 andreymongol82
 
11.03.13
12:44
(4) Проспорил, блин.
(6) Ну дык попробуйте, вместо
Регистр.Услуга = Объект.Наименование;
Регистр.Услуга = Объект.Ссылка;
8 Alex375
 
11.03.13
12:44
ну тогда надо записывать ссылку, а не наименование :)
9 vs1c
 
11.03.13
12:45
А по мне так - занавес.
10 MSII
 
11.03.13
12:45
Ура. Я сохранил свой зуб.
(6) Ну а зачем ты в него строку пишешь? Да еще обманул нас, говоришь, типы совпадают.
11 Эльчин
 
11.03.13
12:45
Получилось. спосибо всем. Тип менял. Был СправочникСсылка.Услуги. спосибо большое
12 Эльчин
 
11.03.13
12:47
(10) я думал что тип должен быть СправочникСсылка.Услуги. по этому говорил что типы совподают. простите. спосибо еше раз
13 НафНаф
 
11.03.13
12:47
(11) а теперь? что-то я очкую за тебя
14 andreymongol82
 
11.03.13
12:48
(13) Да не очкуй, он так сто раз уже делал
15 Alex375
 
11.03.13
12:53
(11) ты тип в регистре поменял? Если так, тогда дело думаю продолжится в другой ветке.
16 Reset
 
11.03.13
12:57
(11) Поменял в регистре тип измерения на строку?
17 Эльчин
 
11.03.13
13:29
(15) нет проблем. всё получается. простите, в чем проблема? знаю что у меня есть проблемы, как у всех новычках. но в программе в чем проблема? всё получается. Поменял в регистре тип измерения на строку
18 hhhh
 
11.03.13
13:32
(17) йо!!
19 НЕА123
 
11.03.13
13:36
(18)
нормально все. душа у ТС требует зажигательные танцы.
20 hhhh
 
11.03.13
13:39
(19) может он тут на копии тренируется, всё нормально, а завтра пойдет к клиентам и накатит это на рабочую базу?
21 Reset
 
11.03.13
13:41
(17) Ну, к примеру, нужно было тебе выйти из дома, а ты забыл в какую сторону дверь открывается. В (7) тебе подсказали, в какую.
Подсказку ты проигнорировал и вышиб дверь напрочь могучим своим плечом.
Собственно, в этом и проблема.
22 mikecool
 
11.03.13
13:43
фееричная ветка
23 Reset
 
11.03.13
13:43
подсказки на самом деле еще в (2) (3).
В (7) уже пальцем ткнуто
24 Эльчин
 
11.03.13
13:55
я понимаю это. но поменяю тип СправочникСсылка.Услуги. Делаю так:
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
   Регистр = РегистрыСведений.РегистрУслуг.СоздатьМенеджерЗаписи();
   Регистр.Период = ТекущаяДата();
   Регистр.Услуга = Объект.Ссылка;
   Регистр.Цена = Объект.Цена;
   Регистр.Скидка = Объект.Скидка;
   Регистр.Записать();
КонецПроцедуры

когда элемент новый, колонка Услуга не заполняетя, а при повторном записе заполняеия. думфл что пока строкой обойтись. да, правда, это болшая проблема в далнейшем. а как делать что колонка Услуга тоже заполнялась?
25 НафНаф
 
11.03.13
14:16
(24) нужно чтобы объект был записан, внезапно
26 Эльчин
 
11.03.13
15:26
(25) понимаю это. но как делать? на форумах есть это тема. но нет ответа
27 Эльчин
 
11.03.13
15:29
сделал. процедура не ПередЗаписьюНаСервере, а ПослеЗаписиНаСервере должна было быть. все по моему всё. да? спосибо за помош и терпиливость
28 НафНаф
 
11.03.13
15:49
лучше ПриЗаписи, в транзакции
29 Эльчин
 
11.03.13
16:10
а как проверить что элемент новый или нет?
30 Эльчин
 
11.03.13
16:12
(28) приЗаписи колонка Услуга не заполняется.
31 Эльчин
 
11.03.13
17:19
как проверить что элемент новый или нет?
32 Эльчин
 
11.03.13
17:20
ЭтоНовый, Пустая(), Параметры.Ключ.Пустая() ..... никак не получается
33 НафНаф
 
11.03.13
17:24
в модуле объекта ЭтоНовый()
34 hhhh
 
11.03.13
17:25
(32) передЗаписью проверить
35 Эльчин
 
11.03.13
18:39
(33) ПриЗаписи проверяю ЭтоНовый(), всегда возврашает ложь, (34) ПередЗаписю проверяю условие возврашает чего надо, но колонка Услуга не заполняется.  по моему надо ПриЗаписи проверить, но как проверить. как я понил ПриЗаписи это уже не новый, а ПередЗаписю не дасть заполнить колонку Услуга. Потому что Ссылка пустая. что делать?
36 Alex375
 
12.03.13
04:25
(35) надо в перед записью новому элементу принудительно ссылку назначить и тогда все получится.
37 Мимохожий Однако
 
12.03.13
07:01
Откуда взялся Объект? ТекущийОбъект я увидел.
38 Starhan
 
12.03.13
07:37
(33)а Ниф-Ниф есть?
39 hhhh
 
12.03.13
07:44
40 Эльчин
 
12.03.13
13:55
(36) как можно этого сделать?
41 Reset
 
12.03.13
13:59
(40) Не надо оно в твоем случае. Делай как в (28)

Зачем тебе знать про ЭтоНовый?
42 Reset
 
12.03.13
14:08
(40) Отвечать-то будешь?
43 Эльчин
 
12.03.13
14:10
не понимаю (28), кажется есть что то по имени Транзакция. не знаю как исползовать. если можете пишите пример об этом для задачи как можно подобен этому. думаю что понили меня, с грамматикой не очень хорошо у меня
44 Эльчин
 
12.03.13
14:11
если не можете всё равно спосибо
45 Reset
 
12.03.13
14:13
(43) Понимания термина транзакция в данном контексте не требуется. Делай просто ПриЗаписи, поверь на слово.
Зачем тебе нужно знать про ЭтоНовый?
46 Reset
 
12.03.13
14:15
Для чего потребовалось (31)?
47 Эльчин
 
12.03.13
14:35
(46)  потому что, когда при записи сделаю так:
Процедура ПриЗаписи(Отказ)    
   Регистр = РегистрыСведений.РегистрУслуг.СоздатьМенеджерЗаписи();
   Регистр.Период = ТекущаяДата();
   Регистр.Услуга = Ссылка;
   Регистр.Цена = Цена;
   Регистр.Скидка = Скидка;
   Регистр.Записать();    
КонецПроцедуры
новый элемент записывается как надо. но когда изменяю элемент, и новый элемент добавляется, и тот элемент сам тоже изменяется. в резултате в регистре появляется 2 одиноковые записи. в второй раз уже 3 одиноковый запис и так далее...
48 Reset
 
12.03.13
14:38
(47) При каждой записи появляется новая запись в регистре, все верно. Этакое версионирование. А нужно чтобы было как?
49 Reset
 
12.03.13
14:40
(47) Нужно только первый раз "при создании" запомнить цену скидку?
А если пользователь первый раз забудет ввести, запишет, а правильные укажет при повторной записи?
50 Reset
 
12.03.13
14:42
Вариант записывать каждый раз "в одну и ту же запись" не рассматриваем, как бессмысленный
51 Эльчин
 
12.03.13
14:50
да, да, да... кажется всё правилно. уже 2 дня мучуюсь здесь. спосибо Reset, спосибо большое
52 Эльчин
 
12.03.13
14:51
проста когда изменяю имя, и в новом, и в старом записи имя изменяется. я хотел кажется от этово избежать. сейчась вижу что это и так надо быть
53 Reset
 
12.03.13
14:56
(52) "Имя" изменяется, потому что записи относятся к одному и то же элементу. Если нужно чтобы хранилось разное наименование (история его смены), добавь ресурс в регистр Наименование и запоминай его тоже
54 Эльчин
 
12.03.13
15:03
ОК
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.