Имя: Пароль:
1C
1С v8
Отбор в регистре сведений по двум регистраторам?
0 dborovsky
 
03.06.13
12:50
Добавляю новые записи в регистр, подчиненный двум регистраторам: документ Заказ и ПрейскурантЦенПоставщиков. К примеру хочу я добавить записи только для первого регистратора. Могу ли я так сделать?

Делаю следующее, но постоянно показывает ошибку: Ошибка записи! Не установлен отбор по регистратору (Регистр сведений: Поставщики: цены)




НаборЗаписейРегистрЦеныПоставщиков = РегистрыСведений.исЦеныПоставщики1.СоздатьНаборЗаписей();
   
   номерЗаписи = 0;
   НаборЗаписейРегистрЦеныПоставщиков.Отбор.Регистратор.Установить(Документы.ПрейскурантЦенПоставщиков);

   Для Каждого текСтрока Из  тзЦеныПоставщики Цикл
           
       НаборЗаписейРегистрЦеныПоставщиков.Прочитать();

       НоваяЗаписьРегистрЦеныПоставщиков = НаборЗаписейРегистрЦеныПоставщиков.Добавить();    
       НоваяЗаписьРегистрЦеныПоставщиков.Регистратор = Документы.исЗаказ;    
       НоваяЗаписьРегистрЦеныПоставщиков.Период = текСтрока.Дата;
       НоваяЗаписьРегистрЦеныПоставщиков.Номенклатура = текСтрока.Номенклатура;
       НоваяЗаписьРегистрЦеныПоставщиков.Контрагент = текСтрока.Контрагент;    
       НоваяЗаписьРегистрЦеныПоставщиков.Валюта = текСтрока.Валюта;    
       НоваяЗаписьРегистрЦеныПоставщиков.Цена = текСтрока.Цена;
           
       
       НаборЗаписейРегистрЦеныПоставщиков.Записать();
           Сообщить("ЦеныПоставщиков - "+номерЗаписи);
           номерЗаписи = номерЗаписи + 1;
   
       
   
   КонецЦикла;
1 zak555
 
03.06.13
12:52
это ты в документе заказ хочешь добавить ?
2 zak555
 
03.06.13
12:52
> становить(Документы.ПрейскурантЦенПоставщиков);



тут должна быть ссылка на существующий документ в БД
3 Ёпрст
 
03.06.13
12:53
>>>> зачетная трава: НаборЗаписейРегистрЦеныПоставщиков.Отбор.Регистратор.Установить(Документы.ПрейскурантЦенПоставщиков);
4 Рэйв
 
03.06.13
12:54
НаборЗаписейРегистрЦеныПоставщиков.Записать();

в цикле у тебя претирает все предыдущее..Не говоря уж о бреде который упомянули выше
5 dborovsky
 
03.06.13
12:54
покажите пример, пожалуйста
6 dborovsky
 
03.06.13
12:55
бред выше это что именно?
7 zak555
 
03.06.13
12:56
(5) ты лучше логику объясни
8 Рэйв
 
03.06.13
12:56
(5)Берешь конкретную ссылку.Устанавливаешь по ней отбор регистратора. Добавляешь записи в цикле(причем регистратор должен быть равен отбору).Вне цикла делаешь .записать()

.Прочитать необязательно
9 Maxus43
 
03.06.13
12:57
(6)  НоваяЗаписьРегистрЦеныПоставщиков.Регистратор = Документы.исЗаказ;
чего этим хотел сказать нашему электронному другу? он не понимает
10 zippygrill
 
03.06.13
12:58
НаборЗаписейРегистрЦеныПоставщиков.Отбор.Регистратор.Установить(Документы.ПрейскурантЦенПоставщиков); - норм :)
11 1Сергей
 
03.06.13
12:58
(10) Думаешь Документы - это вовсе не список менеджеров?
12 Рэйв
 
03.06.13
12:59
(10)Аха..
"На деревню дедушке.."(С)
13 dborovsky
 
03.06.13
12:59
это старый код НоваяЗаписьРегистрЦеныПоставщиков.Регистратор = Документы.исЗаказ, не успел закоментировать
14 Mitriy
 
03.06.13
12:59
жуть...
15 Maxus43
 
03.06.13
13:00
(13) выкладывай код реальный, иначе мы о разном говорим все
16 dborovsky
 
03.06.13
13:02
НаборЗаписейРегистрЦеныПоставщиков = РегистрыСведений.исЦеныПоставщики1.СоздатьНаборЗаписей();
   
   номерЗаписи = 0;
   НаборЗаписейРегистрЦеныПоставщиков.Отбор.Регистратор.Установить(Документы.ПрейскурантЦенПоставщиков.ПолучитьСсылку());
   НаборЗаписейРегистрЦеныПоставщиков.Прочитать();

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

   КонецЦикла;
   НаборЗаписейРегистрЦеныПоставщиков.Записать();
17 zippygrill
 
03.06.13
13:03
(11) не спорю:)
18 Рэйв
 
03.06.13
13:04
(16)>>Документы.ПрейскурантЦенПоставщиков.ПолучитьСсылку()

и какую ссылку получил?  Дату и номер озвуч
19 zippygrill
 
03.06.13
13:04
(16) зачем это?

  НаборЗаписейРегистрЦеныПоставщиков.Отбор.Регистратор.Установить(Документы.ПрейскурантЦенПоставщиков.ПолучитьСсылку());
   НаборЗаписейРегистрЦеныПоставщиков.Прочитать();
20 Рэйв
 
03.06.13
13:04
хотя оно тебя на этом месте просто пошлет.
21 Mitriy
 
03.06.13
13:05
(20) в этом не пошлет...
22 Рэйв
 
03.06.13
13:06
(16)не...Рано тебе еще в регистры записи программно добавлять.
Подучиться надо. Книжки почитать, примеры порешать.

Понимания процесса отсутствует напрочь.
23 dborovsky
 
03.06.13
13:06
т.е. в отборе должен быть конкретный документ?
24 Рэйв
 
03.06.13
13:08
(21)А..ну да.
Я как то никогда не пользовался методом .получитьссылку() от менеджера:-)
25 Рэйв
 
03.06.13
13:08
(23)Бинго!
Уже есть прогресс:-)
26 Mitriy
 
03.06.13
13:09
(23) удивительное рядом, правда?
27 dborovsky
 
03.06.13
13:09
скиньте ссылку где про это конкретно написано, как правильно в отбор добавлять по регистратору. Везде читал, четко и просто написано - http://help1c.com/faq/view/884.html
28 Рэйв
 
03.06.13
13:11
29 Рэйв
 
03.06.13
13:11
там про все основное есть.Тебе пока хватит.
30 dborovsky
 
03.06.13
13:11
или приведите пример как нужно было правильно сделать? Без БИНГО
32 zippygrill
 
03.06.13
13:13
(28) одинаковая книжка :)
33 Рэйв
 
03.06.13
13:14
(32) :-) Классика
35 Mitriy
 
03.06.13
13:16
(27) да, там четко и просто написано ВыбранныйРегистратор...
37 dborovsky
 
03.06.13
13:20
у меня это уже давно есть. Вот читаю - Если регистр сведений подчинен регистратору, то для добавления записей в него необходимо создать набор записей этого регистра с установленным отбором по нужному регистратору, заполнить этот набор записей и записать его:

И приводится пример: НаборЗаписей.Отбор.Регистратор.Установить(ВыбранныйРегистратор);

Т.е имеется ввиду конкретный документ? Я изначально подумал, что просто тип значения. Здесь же не написано ссылка и т.д.?
38 Рэйв
 
03.06.13
13:21
(37)Регистратор - это всегда подразумевается конкретная ссылка.
39 dborovsky
 
03.06.13
13:22
а пример можете конкретно привести?
40 Maxus43
 
03.06.13
13:23
(39) ты сам пример показал в (27). что там непонятно то?
41 Maxus43
 
03.06.13
13:24
в примитивном виде -
НаборЗаписейРегистрЦеныПоставщиков.Отбор.Регистратор.Установить(Документы.ПрейскурантЦенПоставщиков.найтиПоНомеру("НомерДокаТутПиши"));
42 dborovsky
 
03.06.13
13:29
проблема в том, что у меня еще ни одного документа не создано. Я загружаю из файла. Мне лучше просто создать какой нибудь документ и указать его в качестве регистратора?
43 Maxus43
 
03.06.13
13:30
(42) а потом документ перепроведёшь и всё исчезнет? в сам док данные загружай. Он сам должен двигать
44 Рэйв
 
03.06.13
13:31
(42)А по другому у тебя и не получится. В регистраторе должна лежать конкретная ссылка из базы.
45 dborovsky
 
03.06.13
13:33
в док проблематично, у меня 40 тыс записей. Не хотелось бы этим заниматься.
46 Рэйв
 
03.06.13
13:39
(45)Какая разница по скорости , ты будешь писать движения в ручную или это будет делать документ?  Документ - правильнее.
47 dborovsky
 
03.06.13
13:40
уже делаю, ясно, спасибо)))
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший