Имя: Пароль:
1C
1C 7.7
v7: Регистр накоплений не могу получить движения
0 SeregaMW
 
12.04.12
09:57
Пытаюсь получить итоги для списания товара, но почему то на некоторые позиции не чего не выдает.
       Рег.Актуальность(1);
       РегТовары = Рег.Товары;
       СписокТоваров = СоздатьОбъект("СписокЗначений");
       Конт.ТекущийДокумент().ВыгрузитьТабличнуюЧасть(СписокТоваров,"Товар");
       РегТовары.УстановитьЗначениеФильтра("Товар",СписокТоваров,2);
       Если (Конт.Вид() = "ВозвратОтРеализатора") ИЛИ (Конт.Вид() = "ОтчетРеализатора") Тогда
           РегТовары.УстановитьЗначениеФильтра("Склад",Конт.Реализатор.СкладРеализатора,1);
       Иначе
           РегТовары.УстановитьЗначениеФильтра("Склад",Конт.Склад,1);
       КонецЕсли;
       Если Конт.ИтогиАктуальны() = 0 Тогда
           Состояние("ПРОВОДКА: "+Конт.ТекущийДокумент().ПредставлениеВида()+" № "+СокрЛП(Конт.ТекущийДокумент().НомерДок)+" от "+Формат(Конт.ТекущийДокумент().ДатаДок,"ДДДММГГГГ")+" - расчет итогов");
           РегТовары.ВременныйРасчет(1);
           Рег.РассчитатьРегистрыНа(Конт.ТекущийДокумент());
       КонецЕсли;
   Пока Конт.ПолучитьСтроку() = 1 Цикл
           Состояние("ПРОВОДКА: "+Конт.ТекущийДокумент().ПредставлениеВида()+" № "+СокрЛП(Конт.ТекущийДокумент().НомерДок)+" от "+Формат(Конт.ТекущийДокумент().ДатаДок,"ДДДММГГГГ")+" - строка "+Строка(Конт.НомерСтроки)+" из "+Строка(Конт.КоличествоСтрок())+" строк");
           ОсталосьСписать = Конт.Количество*Конт.ЕдИзм.Коэффициент;
           Если ОсталосьСписать = 0 Тогда
               Продолжить;
           КонецЕсли;
           ЦенаПродажи = Конт.Сумма/ОсталосьСписать;
           Если НЕ((Конт.Вид() = "ПередачаВ") ИЛИ (Конт.Вид() = "Списание")) Тогда
               Продавец = Конт.Продавец;
           КонецЕсли;

           РегТовары.УстановитьЗначениеФильтра("Товар",Конт.Товар,1);
           РегТовары.ВыгрузитьИтоги(ТаблицаИтогов, 1);

           ТаблицаИтогов.НоваяКолонка("Позиция");
           ТаблицаИтогов.НоваяКолонка("Прибыль");
           ТаблицаИтогов.НоваяКолонка("ЦенаПродажи");
           ТаблицаИтогов.ВыбратьСтроки();
           Пока ТаблицаИтогов.ПолучитьСтроку() = 1 Цикл

Если в документе одна позиция то все корректно если несколько тогда по условиям отбора выдает 0 записей.
Подскажите где может быть ошибка?
1 zak555
 
12.04.12
09:59
1. такой регистр есть ?
2. это где такой код ?
2 SeregaMW
 
12.04.12
10:00
(1) это самописка
3 lamme
 
12.04.12
10:01
а где у тебя
Конт.ВыбратьСтроки()
?
4 Ёпрст
 
12.04.12
10:01
Конт.ВыбратьСтроки() отсутствует
5 miki
 
12.04.12
10:03
ну и, чисто для красоты, выпилить ТекущийДокумент() из "Конт.ТекущийДокумент().ТекущийДокумент()"
6 SeregaMW
 
12.04.12
10:04
(4)    Если Конт.ВыбратьСтроки() = 1 Тогда
перед

Рег.Актуальность(1);
(5) Выпелю, спасибо!
7 dk
 
12.04.12
10:06
Рег.Актуальность(1);
зачем тут?
---
с товарищем отладчиком знаком?
8 lamme
 
12.04.12
10:08
(6)
еще раз посмотри в код
я так допустим не нашел этой строки
Конт.ВыбратьСтроки()
ни перед .. ни после ... Рег.Актуальность()
9 SeregaMW
 
12.04.12
10:15
(8)дописал так

 Конт.ВыбратьСтроки();
       Пока Конт.ПолучитьСтроку() = 1 Цикл
           Состояние("ПРОВОДКА: ".......
10 SeregaMW
 
12.04.12
10:17
РегТовары.УстановитьЗначениеФильтра("Товар",Конт.Товар,1);
           РегТовары.ВыгрузитьИтоги(ТаблицаИтогов, 1);

           ТаблицаИтогов.НоваяКолонка("Позиция");
           ТаблицаИтогов.НоваяКолонка("Прибыль");
           ТаблицаИтогов.НоваяКолонка("ЦенаПродажи");
           ТаблицаИтогов.ВыбратьСтроки();
           Пока ТаблицаИтогов.ПолучитьСтроку() = 1 Цикл


Проблема где то здесь, в ТаблицаИтогов.КоличествоСтрок()=0
11 Ёпрст
 
12.04.12
10:19
а с чего уверенность, что по выбранным фильтрам есть останки в этом регистре ?
12 SeregaMW
 
12.04.12
10:24
(11)Смотрю другой обработкой остатки товаров, есть несколько партий, если оставляю только одну позицию в док. тогда отбор работает корректно.
13 Ёпрст
 
12.04.12
10:27
(12) на том же складе ?
И при чем тут партии ?
14 SeregaMW
 
12.04.12
10:32
(13) да на том же складе
15 miki
 
12.04.12
10:32
походу что-то с УстановитьЗначениеФильтра перемутил. Выгрузи итоги по всем товарам дока один раз в ТЗ.
16 SeregaMW
 
12.04.12
11:08
РегТовары.УстановитьЗначениеФильтра("Товар",Конт.Товар,1);
             РегТовары.ВременныйРасчет(1);
           Рег.РассчитатьРегистрыНа(Конт.ТекущийДокумент());    
           РегТовары.ВыгрузитьИтоги(ТаблицаИтогов, 1);

пробую так, в итоге на все позиции кроме первой в  ТаблицаИтогов выгружается 0 строк
17 SeregaMW
 
12.04.12
11:08
(16)

   Пока Конт.ПолучитьСтроку() = 1 Цикл
           Состояние("ПРОВОДКА: "+Конт.ТекущийДокумент().ПредставлениеВида()+" № "+СокрЛП(Конт.ТекущийДокумент().НомерДок)+" от "+Формат(Конт.ТекущийДокумент().ДатаДок,"ДДДММГГГГ")+" - строка "+Строка(Конт.НомерСтроки)+" из "+Строка(Конт.КоличествоСтрок())+" строк");
           ОсталосьСписать = Конт.Количество*Конт.ЕдИзм.Коэффициент;
           Если ОсталосьСписать = 0 Тогда
               Продолжить;
           КонецЕсли;
           ЦенаПродажи = Конт.Сумма/ОсталосьСписать;
           Если НЕ((Конт.Вид() = "ПередачаВ") ИЛИ (Конт.Вид() = "Списание")) Тогда
               Продавец = Конт.Продавец;
           КонецЕсли;
           РегТовары.УстановитьЗначениеФильтра("Товар",Конт.Товар,1);
             РегТовары.ВременныйРасчет(1);
           Рег.РассчитатьРегистрыНа(Конт.ТекущийДокумент());    
           РегТовары.ВыгрузитьИтоги(ТаблицаИтогов, 1);
18 Ёпрст
 
12.04.12
11:14
>>>>РегТовары.УстановитьЗначениеФильтра("Товар",Конт.Товар,1);
>>>>, в итоге на все позиции кроме первой в  ТаблицаИтогов выгружается 0 строк

а подумать ?
19 Ёпрст
 
12.04.12
11:18
(0)
что кажет это ?

      //Рег.Актуальность(1);
       РегТовары = Рег.Товары;
       СписокТоваров = СоздатьОбъект("СписокЗначений");
       Конт.ВыгрузитьТабличнуюЧасть(СписокТоваров,"Товар");
       РегТовары.УстановитьЗначениеФильтра("Товар",СписокТоваров,2);
       Если (Конт.Вид() = "ВозвратОтРеализатора") ИЛИ (Конт.Вид() = "ОтчетРеализатора") Тогда
           РегТовары.УстановитьЗначениеФильтра("Склад",Конт.Реализатор.СкладРеализатора,1);
       Иначе
           РегТовары.УстановитьЗначениеФильтра("Склад",Конт.Склад,1);
       КонецЕсли;
       Если Конт.ИтогиАктуальны() = 0 Тогда
           РегТовары.ВременныйРасчет(1);
           Рег.РассчитатьРегистрыНа(Конт.ТекущийДокумент());
       КонецЕсли;
       РегТовары.ВыгрузитьИтоги(ТаблицаИтогов);
       ТаблицаИтогов.ВыбратьСтроку();
20 SeregaMW
 
12.04.12
11:27
(19)   ТаблицаИтогов.ВыбратьСтроку();

Дает таблицу с товарами из ТЧ, все товары есть
21 Ёпрст
 
12.04.12
11:27
(20) вот и наслаждайся
22 SeregaMW
 
12.04.12
11:29
(21) Спасибо большое ты настоящий друг принимай бабло! Отдал последние 5р. )))
23 Ёпрст
 
12.04.12
11:30
теперь делаем далее:

РегТовары.ВыгрузитьИтоги(ТаблицаИтогов);
//ТаблицаИтогов.ВыбратьСтроку();
 Конт.ВыбратиьСтроки();
 Пока Конт.ПолучитьСтроку() = 1 Цикл
     РегТовары.УстановитьЗначениеФильтра("Товар",Конт.Товар,1);
     РегТовары.ВыгрузитьИтоги(ТаблицаИтогов);
     ТаблицаИтогов.ВыбратьСтроку();
 КонецЦикла;


есть че в ТЗ в цикле ?
24 SeregaMW
 
12.04.12
11:36
(23) Есть только первая строка, на остальные выдает пустую таблицу
25 Ёпрст
 
12.04.12
11:43
а так ?

 РегТовары.ВыгрузитьИтоги(ТаблицаИтогов);
 //ТаблицаИтогов.ВыбратьСтроку();
 Конт.ВыбратиьСтроки();
 Пока Конт.ПолучитьСтроку() = 1 Цикл
     //РегТовары.УстановитьЗначениеФильтра("Товар",Конт.Товар,1);
     РегТовары.УстановитьФильтр(,Конт.Товар,,,,,,,,,); //поставить в нужное место в порядке следования измерения +нужное кол-во зпт
     РегТовары.ВыгрузитьИтоги(ТаблицаИтогов);
     ТаблицаИтогов.ВыбратьСтроку();
 КонецЦикла;
26 SeregaMW
 
12.04.12
11:52
(25)Да так получилось!
Еще раз СПАСИБО!!!!
27 Ёпрст
 
12.04.12
11:57
можешь кстати, и остаток/сводный остаток получать потом