Имя: Пароль:
1C
1С v8
Не понимаю как работает запись в РС
,
0 gvozdoderov
 
22.08.13
15:18
Добрый день, коллеги!

Столкнулся со следующей проблемой
Вот код

НаборЗаписей = РегистрыСведений.ВиртуальныеОстатки.СоздатьНаборЗаписей();
        НаборЗаписей.Отбор.Номенклатура.Использование = Истина;
        НаборЗаписей.Отбор.ХарактеристикаНоменклатуры.Использование = Истина;
        НаборЗаписей.Отбор.Номенклатура.Установить(Строка.Номенклатура);
        НаборЗаписей.Отбор.ХарактеристикаНоменклатуры.Установить(Строка.Характеристика);
        Запись = НаборЗаписей.Добавить();
        Запись.Номенклатура = Строка.Номенклатура;
        Запись.ХарактеристикаНоменклатуры = Строка.Характеристика;
        Запись.Количество = Строка.Количество;
        НаборЗаписей.Записать();

Начинаю добавлять записи в пустой регистр. Например значения Ботинки 35,черный 100. Добавляется нормально. Запускаю второй раз, добавляю Туфли 35,черный 100. В регистр попадает только количество, а номенклатура и характеристика пустые. Второй раз запускаю туже позицию, всё заполняется, но запись с пустыми номенклатурой и характеристикой остаются естественно
Разъясните, пожалуйста...
1 wPa
 
22.08.13
15:21
(0) пользуй менеджер записи
2 GANR
 
22.08.13
15:21
(0) Типы данных измерений регистра Номенклатура, Характеристика и того, что пытаемся записать в них совпадают???
3 gvozdoderov
 
22.08.13
15:22
(2) да
4 gvozdoderov
 
22.08.13
15:25
причем даже когда прохожусь отладчиком, во втором случае на строках

Запись.Номенклатура = Строка.Номенклатура;
Запись.ХарактеристикаНоменклатуры = Строка.Характеристика;

просто игнорируется присвоение значения, т.е. пустые они остаются
5 wPa
 
22.08.13
15:26
(4) прочитать набор надо
6 gvozdoderov
 
22.08.13
15:26
Думаю, может отборы как то не так ставлю. Сам РС непереодический, неподчиненный
7 Euguln
 
22.08.13
15:27
1. НаборЗаписей.Прочитать();
2. Плохо использовать конструкцию "Строка.", переименуй
8 gvozdoderov
 
22.08.13
15:27
(5) если прочитать набор, то если уже есть запись с такими измерениями, она не перезаписывается и соответственно вылазит ошибка
9 RomaH
 
naïve
22.08.13
15:28
(6)
       НаборЗаписей.Отбор.Номенклатура.Использование = Истина;
        НаборЗаписей.Отбор.ХарактеристикаНоменклатуры.Использование = Истина;
это вроде как лишнее при наличии "Установить"
10 Euguln
 
22.08.13
15:28
(8) прочитай, очисти, записывай.
11 RomaH
 
naïve
22.08.13
15:28
(5) зачем?
12 RomaH
 
naïve
22.08.13
15:29
(10) смысл читать набор? что бы его потом очистить?
13 Starhan
 
22.08.13
15:30
(0) может таки покажешь код полностью, что там у тебя в "строка" находится?
14 RomaH
 
naïve
22.08.13
15:30
(4) типы не совпадают
1 - переименуй "Строка" на СтрокаТЧ что ли
2 - сообщить ТипЗнч(Номенклатуры)
15 gvozdoderov
 
22.08.13
15:32
(9) убрал
(7) поменял на Стр. Прочитать поставить не могу, ибо нужно записи перезаписывать будет
Ситуация повторилась. Первый раз всё записалось. Сменил только номенклатуру и в регистре запись снова появилась с пустыми Номенклатурой и Характеристикой
16 RomaH
 
naïve
22.08.13
15:34
(15) не понял - а типа без "Прочитать" не будет перезаписывать?
оно вроде в любом случае пишет набор по установленному отбору
17 Euguln
 
22.08.13
15:34
(15) а в строке они точно не пустые?
18 RomaH
 
naïve
22.08.13
15:35
(15) давай код полностью - откуда выполняется/вызывается
19 RomaH
 
naïve
22.08.13
15:36
сообщить ТипЗнч(Номенклатуры) - что возвращает?
НаборЗаписей.Отбор.Номенклатура.Установить(Строка.Номенклатура);
сообщить(ТипЗнч(Строка.Номенклатура));

а отбор устанавливаются -- или тоже пустые?
20 gvozdoderov
 
22.08.13
15:40
(19) щас, брат, буду разбираться... похоже где то здесь и проблема
21 gvozdoderov
 
22.08.13
15:51
(19) Спасибо, Брат! Все дело было в том, что в номенклатуре не всегда ссылка была, а еще и объект