Имя: Пароль:
1C
1С v8
не повторяется цикл и проблема с кодом
,
0 r2d24
 
23.09.13
11:03
Здравствуйте, мне нужна помощь с кодом. Код написан в обработке. Код ищет остатки по регистру накопления "Партии товаров на складах" и добавляет в документ "корректировка записей регистров".

Вопрос1: строку "док1.ВидДвижения=ВидДвиженияНакопления.Расход" (это строка1) он выполняет только один раз, в отличие от других реквизитов (Номенклатура, склад, количество)

Вопрос2: не знаю как сделать регистратор, т.е. указать каким документом был куплен товар (это строка2)

Запрос1 = Новый Запрос;
Запрос1.Текст=
    "ВЫБРАТЬ
    |    ПартииТоваровНаСкладах.Номенклатура,
    |    ПартииТоваровНаСкладах.Склад,
    |    ПартииТоваровНаСкладах.Количество
    |ИЗ
    |    РегистрНакопления.ПартииТоваровНаСкладах КАК ПартииТоваровНаСкладах";
    
Выборка=Запрос1.Выполнить().Выбрать();
Док = Документы.КорректировкаЗаписейРегистров.СоздатьДокумент();
Док.Дата = НачалоГода(ТекущаяДата());
ДвиженияДок = Док.Движения;
Регистры = Док.ТаблицаРегистровНакопления.Добавить();
Регистры.Имя = "ПартииТоваровНаСкладах";
Регистры.Представление = "Партии Товаров На Складах (Управленческий Учет)";
ТоварыНаСкладах=ДвиженияДок.ПартииТоваровНаСкладах;
    
Пока Выборка.Следующий() Цикл    
   док1=ТоварыНаСкладах.Добавить();      
   док1.Номенклатура=Выборка.Номенклатура;
   док1.ВидДвижения=ВидДвиженияНакопления.Расход;    //(ЭТО СТРОКА1)
//док1.ДокументОприходования.                       //(ЭТО СТРОКА2)  
   док1.Склад=Выборка.Склад;
   док1.Количество=Выборка.Количество;
КонецЦикла;

Док.ПолучитьФорму().Открыть();
1 Defender aka LINN
 
23.09.13
11:06
"строку "док1.ВидДвижения=ВидДвиженияНакопления.Расход" (это строка1) он выполняет только один раз, в отличие от других реквизитов (Номенклатура, склад, количество)" - свистёжь.
"не знаю как сделать регистратор, т.е. указать каким документом был куплен товар (это строка2)" - двойной свистежь, в коде ни слова про регистратор. И в измерение "ДокументОприходования" корректировка не кладется.
2 r2d24
 
23.09.13
11:10
(1) я говорю правду, строка "док1.ВидДвижения=ВидДвиженияНакопления.Расход" выполняется только один раз, не смотря, что находится в цикле?
3 Defender aka LINN
 
23.09.13
11:19
(2) А остальные строки, которые ниже находятся отрабатывают, значит... И ты реально ждешь, что кто-то в это поверит?
Фотку замера производительности в студию.
4 Галахад
 
гуру
23.09.13
11:22
Наверное на форме не видно.
5 Rie
 
23.09.13
11:34
(2) А сколько раз выполняется тело цикла?
6 r2d24
 
23.09.13
11:37
(5) док1.ВидДвижения=ВидДвиженияНакопления.Расход; - она выполняется один раз, а остальные строки, ровно столько сколько номенклатуры, у меня их две "дрель" 4 шт и "рыба" 3 шт
7 Maxus43
 
23.09.13
11:40
(6) да не бывает чудес, дай скрин (3), замер покажет правду
8 BuHu
 
23.09.13
11:41
(6) т.е. в таблице ТоварыНаСкладах после цикла , две строки , но колонка ВидДвижения заполнена только в одной строке?
9 Defender aka LINN
 
23.09.13
11:48
(8) Кэп подсказывает, что эта колонка не может быть не заполнена.
10 r2d24
 
23.09.13
11:49
(8) да
11 r2d24
 
23.09.13
11:50
а как вам скрин скину, здесь только текст
12 r2d24
 
23.09.13
11:50
могу на почту скинуть
13 Maxus43
 
23.09.13
11:51
(12) на любой хостинг картинок кидай, а сюда ссылку
14 BuHu
 
23.09.13
11:53
(10) не верю , после цикла ТоварыНаСкладах.ВыбратьСтроку() и сюда скрин того , что выдаст программа
15 r2d24
 
23.09.13
12:01
16 Maxus43
 
23.09.13
12:08
монструозная ссылка....

1. Вобще то просили скрин Замера производительности.
2. что в коде (0) есть док1? К корректировке записей регистров надо прикреплять набор записей, при чем тут корректировка записей вобще?
17 Галахад
 
гуру
23.09.13
12:09
Фигня какая-то.
В коде нет документа оприходования, а на скрине есть.
18 Defender aka LINN
 
23.09.13
12:10
(15) А ты молодец. 6-метровый бмп, на котором хрен что увидишь и на котором один хрен нет того, что у тебя просили. Продолжай в том же духе
19 BuHu
 
23.09.13
12:12
(15) если захочешь выложить скрин того , что у тебя просят , сохрани его в формате jpeg хотя бы
20 Godofsin
 
23.09.13
12:15
(15) savepic.ru
21 r2d24
 
23.09.13
12:17
С замером я еще не научился работать, поэтому дал что мог.
Я же только учусь, и у вас попросил помощи.
Код и скрин с результатом я дал, с замером правда плохо работаю.
22 Maxus43
 
23.09.13
12:19
(21) дело уже не в замере...
Объясни толком что ты хочешь сделать, в какой документ что записать, На скрине Корректировка записей, заполнять его надо набором записей, а не мифическими док1=ТоварыНаСкладах.Добавить();, это вобще непонятно что такое
23 r2d24
 
23.09.13
12:40
(22) у меня обработка программно создает документ "корректировка записей регистров", ищет остатки по регистру накопления "Партии товаров на складах" и заполняет ими табличную часть.
24 Maxus43
 
23.09.13
12:42
(23) ну и делай...
Набор = РегистрыНакопления.Партиитоваровнаскладах.СоздатьНаборЗаписей();
Набор.Отбор.Регистратор.Установить(СсылкаНаДокКорректировкиЗаписей);
СтрокаНабора = Набор.Добавить();
..... //заполняй
25 catena
 
23.09.13
12:43
(23)Ты, надеюсь, в курсе, что приведенный запрос собирает вовсе не остаток?
26 Defender aka LINN
 
23.09.13
13:29
(24) Не, у него как раз более-менее нормально создание документа описано.