Имя: Пароль:
1C
 
Создать запись в регистре сведений. В чем ошибка?
,
0 AlexBor
 
naïve
20.01.15
12:26
8.1 Самописная база. Ситуация такая: Есть документ реестрвходящей корреспонденции. Реквизит - Исполнитель.   Создал регистр Исполнители(Ресурсы -Исполнитель) подчинил регистратору - РеестрВходящей корреспонденции.  Хочу из Реквизита документа Исполнитель создать запись в регистресведений. Вылетает ошибка:

Выборка = Документы.РеестрВходящейКорреспонденции.Выбрать();
  Пока Выборка.Следующий() Цикл
  Регистратор = Выборка.ПолучитьОбъект();
  Сообщить(Регистратор);
  
  
  НаборЗаписей = РегистрыСведений.Исполнители.СоздатьНаборЗаписей();
  НаборЗаписей.Отбор.Регистратор.Установить(Выборка.Ссылка);
  НаборЗаписей.Прочитать();
  
  Для Каждого Запись Из НаборЗаписей Цикл
    НоваяЗапись = НаборЗаписей.Добавить();  
    НоваяЗапись.Исполнитель = Регистратор.Кому; //Кому это реквизит документа
    НаборЗаписей.Записать();
КонецЦикла

КонецЦикла;


Почему?
1 Ненавижу 1С
 
гуру
20.01.15
12:28
ошибка, что не заполнен регистратор? я угадал?
2 Godofsin
 
20.01.15
12:28
(1) барабанная дробь!
3 AlexBor
 
naïve
20.01.15
12:28
(1) Форма.ФормаОтчета(70)}: Поле объекта не обнаружено (Регистратор)
  НаборЗаписей.Отбор.Регистратор.Установить(Выборка.Ссылка);
4 AlexBor
 
naïve
20.01.15
12:29
И что сие значит?
5 YHVVH
 
20.01.15
12:32
НаборЗаписей.Записать() из цикла вынеси для начала
6 Cube
 
20.01.15
12:33
(0) Это пять!

"Для Каждого Запись Из НаборЗаписей Цикл
    НоваяЗапись = НаборЗаписей.Добавить();"

http://s020.radikal.ru/i720/1311/dd/2bc6fcb9773b.jpg
7 AlexBor
 
naïve
20.01.15
12:33
(5) Сделал .... но ошибка не в этом
8 Cube
 
20.01.15
12:34
(6) Картинка криво вставилась, вот: http://time56.ru/userfiles/news/large/3640_taschla_orug_13102013-2.jpg
9 unregistered
 
20.01.15
12:35
(0) регистр независимый (не подчинен регистратору).
10 AlexBor
 
naïve
20.01.15
12:35
(8) Спасибо за критику я это очень ценю
11 krunm
 
20.01.15
12:37
(3) "Регистратор.Кому" - попробуй заменить на Регистратор.Ссылка.Кому или выборка.Ссылка
12 krunm
 
20.01.15
12:38
ну и запись из цикла убрать, или записывать через менеджер
13 Шапокляк
 
20.01.15
12:38
Ты прочитал НаборЗаписей и перебираешь записи из набора. Тебе нужно в каждую из них заполнить исполнителя. За каким таким ты добавляешь записи в набор?
14 AlexBor
 
naïve
20.01.15
12:48
Учитывая все предыдущие мнения  мнения  сделал так:

Подчинил регистратору и изменил код:

Выборка = Документы.РеестрВходящейКорреспонденции.Выбрать();
  Пока Выборка.Следующий() Цикл
  Регистратор = Выборка.ПолучитьОбъект();
  Сообщить(Регистратор);
  
  
  НаборЗаписей = РегистрыСведений.Исполнители.СоздатьНаборЗаписей();
  НаборЗаписей.Отбор.Регистратор.Установить(Выборка.Ссылка);
  НаборЗаписей.Прочитать();
  
  Для Каждого Запись Из НаборЗаписей Цикл
    Запись.Исполнитель=Регистратор.Ссылка.Кому;    
    
КонецЦикла;
НаборЗаписей.Записать();
КонецЦикла;

Ошибка не выскакивает но и запись в регистр не попадает. Что не так теперь?
15 DrZombi
 
гуру
20.01.15
12:48
(0) НаборЗаписей.Прочитать();
  и
Для Каждого Запись Из НаборЗаписей Цикл

Содержат записи, если в РС есть запись по отбору :)
16 DrZombi
 
гуру
20.01.15
12:49
(14) Чудак. У тебя в Регистре нет записей по отбору, а ты все Читаешь и Читаешь...

Попробуй отладчик запустить
17 DrZombi
 
гуру
20.01.15
12:50
НовайЗапись = НаборЗаписей.Добавить();
///Пишешь фигню с заполнением измерений, ресурсов и т.д...
НаборЗаписей.Записать();
18 AlexBor
 
naïve
20.01.15
12:51
(16) Да записей нет я согласен их нужно добавить.  Как?
19 Шапокляк
 
20.01.15
13:01
Если НаборЗаписей.Количество()=0 Тогда
Запись=НаборЗаписей.Добавить();
Запись.Исполнитель=....
НаборЗаписей.Записать()
20 DrZombi
 
гуру
20.01.15
13:09
(18) В (17) Смотри.

Проверить, на отсутствие записей через "НаборЗаписей.Количество()"
21 AlexBor
 
naïve
20.01.15
13:14
Запись с такими ключевыми полями существует! : 02.07.2013

Не совсем понятно что это значит я открываю регитр он пустой.?
22 AlexBor
 
naïve
20.01.15
13:18
Сделал вот так

Выборка = Документы.РеестрВходящейКорреспонденции.Выбрать();
  Пока Выборка.Следующий() Цикл
  Регистратор = Выборка.ПолучитьОбъект();
  Сообщить(Регистратор);
  
  
  НаборЗаписей = РегистрыСведений.Исполнители.СоздатьНаборЗаписей();
  НаборЗаписей.Отбор.Регистратор.Установить(Выборка.Ссылка);
  
  Если НаборЗаписей.Количество()=0 Тогда
  НаборЗаписей.Добавить();
  
  Для Каждого Запись Из НаборЗаписей Цикл
    Запись.Исполнитель=Регистратор.Ссылка.Кому;    
    Запись.Период = Регистратор.Дата;
    НаборЗаписей.Записать();
  КонецЦикла;
  КонецЕсли;
  КонецЦикла;
  
КонецПроцедуры

Вылетает ошибка Запись с такими ключевыми полями существует! : 02.07.2013 0:00:00 (Регистр свед
23 Cube
 
20.01.15
13:23
(22) Просто жесть...
Ну чуть-чуть подумать, не?

Выборка = Документы.РеестрВходящейКорреспонденции.Выбрать();
  Пока Выборка.Следующий() Цикл
  Регистратор = Выборка.ПолучитьОбъект();
  Сообщить(Регистратор);
  
  
  НаборЗаписей = РегистрыСведений.Исполнители.СоздатьНаборЗаписей();
  НаборЗаписей.Отбор.Регистратор.Установить(Выборка.Ссылка);
  
  Если НаборЗаписей.Количество()=0 Тогда
    Запись = НаборЗаписей.Добавить();
    Запись.Исполнитель=Регистратор.Ссылка.Кому;
  Иначе
    Для Каждого Запись Из НаборЗаписей Цикл
      Запись.Исполнитель=Регистратор.Ссылка.Кому;    
    КонецЦикла;
  КонецЕсли;
  НаборЗаписей.Записать();
  КонецЦикла;
24 igoza
 
20.01.15
13:24
попытайся понять что именно за текст находится в ошибке XD
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан