Имя: Пароль:
1C
1С v8
Записи в регистр накопления
0 Alexion124
 
16.12.11
13:08
УТ 10,3
Помогите разобраться - пытаюсь добавить записи в регистр накопления при проведении требования-накладной,
почему то записывается только последняя строчка из списка того что нужно списать.. вот код:

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

Подозреваю что нужно добавить еще отбор по номенклатуре и автомобилю, т.к. уникальность будет только при 3х критериях: регистратор, номенклатура и автомобиль, делаю следующее:

Набор.Отбор.Номенклатура.Установить(СтрокаТаблицыСписания.Номенклатура);
Набор.Отбор.Автомобиль.Установить(СтрокаТаблицыСписания.Автомобиль);

НО!! при выполнении процедуры выдает ошибку поле Номенклатура не обнаружено, я так понимаю отбор можно сделать только по стандартным реквизитам?
1 Mort
 
16.12.11
13:09
Набор = РегистрыНакопления.РемонтАвтомобилей.СоздатьНаборЗаписей();
       Набор.Отбор.Регистратор.Установить(СтрокаТаблицыСписания.Регистратор);

и

 Набор.Записать();

вынеси за цикл.
А вообще LOL
2 Mort
 
16.12.11
13:10
+(1) А блин, вру. Невнимательно прочитал.
3 Mort
 
16.12.11
13:12
А вообще странно когда один документ вносит движения за другой. Типа кто последний провелся тот и папа.
4 Alexion124
 
16.12.11
13:12
(1) попробую, возможно и такое..
5 Mort
 
16.12.11
13:14
Или СтрокаТаблицыСписания.Регистратор в каждой строке это и есть ссылка на сам документ? Тогда (1)
6 Alexion124
 
16.12.11
13:20
(5) Спасибо огромное, получилось, а то всю голову уже сломал, немного поправил строчку после выноса из цикла:

Набор.Отбор.Регистратор.Установить(ТаблицаСписания[0].Регистратор);
7 Михаил Козлов
 
16.12.11
13:26
(0) А почему не сделать, как в типовой:
- в модуле набора записей переменная - таблица движений;
- в модуле документа - ее заполнение.
?
8 Alexion124
 
16.12.11
13:32
(7) так делал, но мне нужно получать стоимость партии но партии списываются позже, т.е. у меня все уходят по одно стоимости, а в партиях стоимость разная поэтому я воткнул в процедуру списания по партиям, чтобы списалась в мой регистр, потом в партии, след строка опять с моего затем с партии, т.е. я получаю актуальную цену списываемой партии.
9 Alexion124
 
16.12.11
13:34
(7) к сожалению не смог придумать алоритм вычисления нужной партии...
10 Alexion124
 
16.12.11
13:45
тема не закрыта..(
все равно списывается по неправильной стоимости партии, помогите разобраться, проблему описал в (8)
Основная теорема систематики: Новые системы плодят новые проблемы.