Имя: Пароль:
1C
1С v8
Цикл
0 Tumakota
 
29.10.12
09:02
Всем доброго времени суток! Есть Поле выбора, с типом СписокЗначей, делаю цикл

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

   ТЗ.Колонки.Добавить("Продажи",,,8);
   ТЗ.Колонки.Вставить(3,"ШтрихКод",,,13);
   ТЗ.Колонки["НомерСтроки"].Ширина = 3;
   ТЗ.Колонки["Номенклатура"].Ширина = 20;  
   ТЗ.Колонки["ЕдиницаИзмерения"].Ширина = 2;  
   ТЗ.Колонки["Цена"].Ширина = 8;  
   ТЗ.Колонки["Остаток"].Ширина = 8;
   ЭлементыФормы.ТЗ.СоздатьКолонки();
   конеццикла;

Но из всего списка он выбирает только последнее поступление, и выгружает товар из него хотя надо из каждого поступления, что делаю не так
1 cw014
 
29.10.12
09:03
(0) И правда, что не так? В цикле постоянно перетирать таблицу
2 Александр_
Тверь
 
29.10.12
09:03
О_о
крутой код, однако
3 Живой Ископаемый
 
29.10.12
09:03
сегодня праздник? или день открытых дверей?
4 Александр_
Тверь
 
29.10.12
09:04
пройдись отладчиком и попробуй понять, что ты написала.
5 Tumakota
 
29.10.12
09:05
(1) Коментирую удаление колонок, серовно будет выгружать только последнее поступление
6 cw014
 
29.10.12
09:05
(4) это мальчик :-P
7 Живой Ископаемый
 
29.10.12
09:05
я иду в магазин, говорю, дайте мне 10 бутылок пива.. Мне выставляют по одной., каждую я ставлю в пакет.. выставляют новую, смотрю - пакет нужен, я вынимаю из пакета ту, которую только что поставил, разбиваю ее, ставлю в пакет новую. И так 9 раз. С удивлением обнаруживаю 10 разбитых бутылок пива, и одну в пакете...
8 cw014
 
29.10.12
09:06
(0) Твоя ошибка тут: ТЗ = Док.Товары.Выгрузить();
9 Живой Ископаемый
 
29.10.12
09:06
2(5) У тебя нет нигде НоваяСтрока = ТЗ.Добавить();
10 Mkonst
 
29.10.12
09:12
(7) капец, 9 бутылок дорого пива расфигарил...
11 Живой Ископаемый
 
29.10.12
09:14
да, точно, 9... одну не расфигарил. Вот такой я молодец. И потом пришел на форум - и спрашиваю - почему я трачу так много денег, но напиться все равно не выходит, что я делаю не так?
12 Serg_1960
 
29.10.12
09:15
Чего автор хотел? Непонятно :( Выкладывай алгоритм полностью... раз такая ... в начале... чего уж тут... ммм... скромничать.
13 Tumakota
 
29.10.12
09:17
Для каждого СтрокаДок из ДокПрих цикл
   Док = СтрокаДок.Значение.Товары.Выгрузить();
   ТЗ = Док;
   //ТЗ.Колонки.Удалить("КоличествоМест");
   //ТЗ.Колонки.Удалить("ЕдиницаИзмеренияМест");
   //ТЗ.Колонки.Удалить("Коэффициент");
   //ТЗ.Колонки.Удалить("СерияНоменклатуры");
   //ТЗ.Колонки.Удалить("ХарактеристикаНоменклатуры");
   //ТЗ.Колонки.Удалить("ЗаказПокупателя");
   //ТЗ.Колонки.Удалить("Проект");
   //ТЗ.Колонки.Удалить("Склад");
   //ТЗ.Колонки.Удалить("ПриходныйОрдер");
   //ТЗ.Колонки.Удалить("КоличествоП");
   //ТЗ.Колонки.Удалить("ЦенаРозн");
   //ТЗ.Колонки.Удалить("Качество");
   //ТЗ.Колонки.Удалить("Количество");
   //ТЗ.Колонки.Удалить("Сумма");
   //ТЗ.Колонки.Удалить("СтавкаНДС");
   //ТЗ.Колонки.Удалить("СуммаНДС");

   ТЗ.Колонки.Добавить("Продажи",,,8);
   ТЗ.Колонки.Вставить(3,"ШтрихКод",,,13);
   ТЗ.Колонки["НомерСтроки"].Ширина = 3;
   ТЗ.Колонки["Номенклатура"].Ширина = 20;  
   ТЗ.Колонки["ЕдиницаИзмерения"].Ширина = 2;  
   ТЗ.Колонки["Цена"].Ширина = 8;  
   ТЗ.Колонки["Остаток"].Ширина = 8;
   ЭлементыФормы.ТЗ.СоздатьКолонки();
   конеццикла;
       Для каждого стр Из ТЗ Цикл
       ВыборкаМ = ОтчетМ(стр.Номенклатура);
       Пока ВыборкаМ.Следующий() Цикл
           стр.Продажи = ВыборкаМ.КоличествоОборот;
       КонецЦикла;
       ВыборкаО= ОтчетО(стр.Номенклатура);
       Пока ВыборкаО.Следующий() Цикл
           стр.Остаток = ВыборкаО.КоличествоОстаток;
       КонецЦикла;
       стр.ШтрихКод = НайтиШК(стр.Номенклатура);

   КонецЦикла;

вот тебе весь алгоритм
14 Александр_
Тверь
 
29.10.12
09:21
(13) тебе вроде уже все сказали.

ТЗ = Док; - тут ты, наверное, хотел бы, чтобы к ТЗ ДОБАВИЛИСЬ значения, а они ЗАМЕНЯЮТСЯ. понимаешь?
т.е. ты каждый раз затираешь ТЗ.
15 Александр_
Тверь
 
29.10.12
09:23
а вообще код какой-то мутный.
то что-то выгружаешь, то устанавливаешь ширину в цикле и создаешь колонки.
16 Александр_
Тверь
 
29.10.12
09:31
Если не вдаваться в задачу, то тебе надо как-то так делать:

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


ТЗ.Колонки.Добавить("Продажи",,,8);
ТЗ.Колонки.Вставить(3,"ШтрихКод",,,13);
ТЗ.Колонки["НомерСтроки"].Ширина = 3;
ТЗ.Колонки["Номенклатура"].Ширина = 20;  
ТЗ.Колонки["ЕдиницаИзмерения"].Ширина = 2;  
ТЗ.Колонки["Цена"].Ширина = 8;  
ТЗ.Колонки["Остаток"].Ширина = 8;
ЭлементыФормы.ТЗ.СоздатьКолонки();


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

КонецЦикла;
17 Александр_
Тверь
 
29.10.12
09:32
если у твоего ТЗ нет колонок Номенклатура,ЕдиницаИзмерения,Цена и т.д. то их надо предварительно создать
ТЗ.Колонки.Добавить("Номенклатура");
18 k1us181b
 
29.10.12
09:36
"почему я трачу так много денег, но напиться все равно не выходит, что я делаю не так"
убил, ржу очень долго, спасибо!
19 Александр_
Тверь
 
29.10.12
09:39
+(16) но сразу скажу, сам подход какой-то не правильный.
Тру вей - передать массив ссылок на документы из твоего списка значений в запрос, и получить сразу ВСЕ одним запросом (в т.ч. штрих-код, остаток и продажи).
20 Web00001
 
29.10.12
09:53
(19) тут как я понимаю, надо чтоб заработало, хоть как то, все равно как.
Человеку просто надо научиться пользоваться отладчиком, но с таким кодом, вроде как лучше программирование вообще пропустить. Может и ошибаюсь конечно...
21 Serg_1960
 
29.10.12
10:01
Автору, имхо, показать в экранной форме результат обычного запроса на обороты и остатки по номенклатуре из "ДокПрих"...

PS: легче всё заново написать, чем править... это.
Основная теорема систематики: Новые системы плодят новые проблемы.