|
v7: Пустые строки в отчете | ☑ | ||
---|---|---|---|---|
0
Gangar
01.10.12
✎
18:33
|
Подскажите, телепаты, почему в печатной форме выводит пустые строки?
ТЗ = 0; ТЗ = СоздатьОбъект("ТаблицаЗначений"); ТЗ.НоваяКолонка("ТоварСВ"); ТЗ.НоваяКолонка("КолвоСВ"); ТЗ.НоваяКолонка("ТоварПН"); ТЗ.НоваяКолонка("КолвоПН"); Заявка.ВыбратьСтроки(); Пока Заявка.ПолучитьСтроку() = 1 Цикл ТЗ.ТоварСВ = Заявка.Товар; ТЗ.КолвоСВ = Заявка.Количество; Если ПрихДок.Выбран() = 1 Тогда ПрихДок.ВыбратьСтроки(); Пока ПрихДок.ПолучитьСтроку() = 1 Цикл Если Заявка.Товар = ПрихДок.Товар Тогда ТЗ.ТоварПН = ПрихДок.Товар; ТЗ.КолвоПН = ПрихДок.Количество; КонецЕсли; КонецЦикла; КонецЕсли; ТЗ.Свернуть("ТоварСВ,ТоварПН","КолвоСВ,КолвоПН"); ТЗ.ВыбратьСтроки(); Пока ТЗ.ПолучитьСтроку() = 1 Цикл ТоварСВ = ТЗ.ТоварСВ.ТекущаяСтрока(); КолвоСВ = ТЗ.КолвоСВ.ТекущаяСтрока(); ТоварПН = ТЗ.ТоварПН.ТекущаяСтрока(); КолвоПН = ТЗ.КолвоПН.ТекущаяСтрока(); КонецЦикла; Таб.ВывестиСекцию("Товар"); КонецЦикла; |
|||
1
Wobland
01.10.12
✎
18:34
|
Таб.ВывестиСекцию("Товар"); где-то не там
|
|||
2
Oleg_Kag
01.10.12
✎
18:35
|
Таб.ВывестиСекцию("Товар");
Внести во второй цикл перед КОнецЦикла |
|||
3
zladenuw
01.10.12
✎
18:35
|
(1) мда тяжелый понедельник
|
|||
4
Wobland
01.10.12
✎
18:36
|
(3) да уж, непростой ;)
|
|||
5
del123
01.10.12
✎
18:39
|
А зачем везде ТекущаяСтрока()?
|
|||
6
Gangar
01.10.12
✎
18:41
|
количество строк выводит как надо, но в строках тишина...
|
|||
7
Gangar
01.10.12
✎
18:42
|
(5)
Хоть с ней хоть без - эффект один. |
|||
8
zladenuw
01.10.12
✎
18:43
|
(6) ты вообще читаешь что тебе пишут или нет ?
(2) уже дали ответ. что за люди. им советуешь. |
|||
9
Gangar
01.10.12
✎
18:48
|
(8)
Тогда вообще ничего не выводит. Но спасибо, конечно. |
|||
10
del123
01.10.12
✎
18:48
|
а где в ТЗ добавляешь строку??
|
|||
11
del123
01.10.12
✎
18:49
|
+(10) по идее это надо за цикл перебора строк документа вынести
ТЗ.Свернуть("ТоварСВ,ТоварПН","КолвоСВ,КолвоПН"); ТЗ.ВыбратьСтроки(); Пока ТЗ.ПолучитьСтроку() = 1 Цикл ТоварСВ = ТЗ.ТоварСВ.ТекущаяСтрока(); КолвоСВ = ТЗ.КолвоСВ.ТекущаяСтрока(); ТоварПН = ТЗ.ТоварПН.ТекущаяСтрока(); КолвоПН = ТЗ.КолвоПН.ТекущаяСтрока(); Таб.ВывестиСекцию("Товар"); КонецЦикла; |
|||
12
Gangar
01.10.12
✎
18:51
|
(10)
Бинго! Понедельник, такой понедельник... |
|||
13
Oleg_Kag
01.10.12
✎
18:56
|
Пока Заявка.ПолучитьСтроку() = 1 Цикл
Если ПрихДок.Выбран() = 1 Тогда ПрихДок.ВыбратьСтроки(); Пока ПрихДок.ПолучитьСтроку() = 1 Цикл Если Заявка.Товар = ПрихДок.Товар Тогда ТЗ.НоваяСтрока() ТЗ.ТоварСВ = Заявка.Товар; ТЗ.КолвоСВ = Заявка.Количество; ТЗ.ТоварПН = ПрихДок.Товар; ТЗ.КолвоПН = ПрихДок.Количество; КонецЕсли; КонецЦикла; КонецЕсли; ТЗ.Свернуть("ТоварСВ,ТоварПН","КолвоСВ,КолвоПН"); ТЗ.ВыбратьСтроки(); Пока ТЗ.ПолучитьСтроку() = 1 Цикл ТоварСВ = ТЗ.ТоварСВ; КолвоСВ = ТЗ.КолвоСВ; ТоварПН = ТЗ.ТоварПН; КолвоПН = ТЗ.КолвоПН; Таб.ВывестиСекцию("Товар"); КонецЦикла; КонецЦикла; |
|||
14
Oleg_Kag
01.10.12
✎
18:59
|
Руки мне оторвать :(
Пока Заявка.ПолучитьСтроку() = 1 Цикл Если ПрихДок.Выбран() = 1 Тогда ПрихДок.ВыбратьСтроки(); Пока ПрихДок.ПолучитьСтроку() = 1 Цикл Если Заявка.Товар = ПрихДок.Товар Тогда ТЗ.НоваяСтрока() ТЗ.ТоварСВ = Заявка.Товар; ТЗ.КолвоСВ = Заявка.Количество; ТЗ.ТоварПН = ПрихДок.Товар; ТЗ.КолвоПН = ПрихДок.Количество; КонецЕсли; КонецЦикла; ТЗ.Свернуть("ТоварСВ,ТоварПН","КолвоСВ,КолвоПН"); ТЗ.ВыбратьСтроки(); Пока ТЗ.ПолучитьСтроку() = 1 Цикл ТоварСВ = ТЗ.ТоварСВ; КолвоСВ = ТЗ.КолвоСВ; ТоварПН = ТЗ.ТоварПН; КолвоПН = ТЗ.КолвоПН; Таб.ВывестиСекцию("Товар"); КонецЦикла; Иначе Сообщить("Не выбран документ поступления..."); КонецЕсли; КонецЦикла; |
|||
15
Oleg_Kag
01.10.12
✎
19:04
|
Всё...почитал код - понял задачу...
13 и 14 будет, работать, но НЕ оптимально |
|||
16
Gangar
01.10.12
✎
19:07
|
(15)
Копать в сторону прямых запросов? |
|||
17
Gangar
01.10.12
✎
19:12
|
(15)
Странно как то работает. Если в доке строк больше одной выводит полную херню. |
|||
18
Gangar
02.10.12
✎
01:07
|
Чую, что ошибка раньше где-то. В ДНК, скорее всего...
Заявка = СоздатьОбъект("Документ.СчетВходящий"); Заявка.ВыбратьДокументы(ВыбНачПериода,ВыбКонПериода); Пока Заявка.ПолучитьДокумент() = 1 Цикл ЗаявкаПеч = Заявка.ТекущийДокумент(); //Получаем Приходную Накладную ПрихДок = СоздатьОбъект("Документ"); ПрихДок.ВыбратьПодчиненныеДокументы(,,ЗаявкаПеч); Пока ПрихДок.ПолучитьДокумент() = 1 Цикл Если ПрихДок.Выбран() = 1 Тогда Если ПрихДок.Вид()="ПриходнаяНакладная" Тогда ПрихДокПеч = ПрихДок.ТекущийДокумент(); КонецЕсли; КонецЕсли; КонецЦикла; Таб.ВывестиСекцию("Документ"); ТЗ = СоздатьОбъект("ТаблицаЗначений"); ТЗ.НоваяКолонка("ТоварСВ"); ТЗ.НоваяКолонка("КолвоСВ"); ТЗ.НоваяКолонка("ТоварПН"); ТЗ.НоваяКолонка("КолвоПН"); Пока ЗаявкаПеч.ПолучитьСтроку() = 1 Цикл Если ПрихДокПеч.Выбран() = 1 Тогда ПрихДокПеч.ВыбратьСтроки(); Пока ПрихДокПеч.ПолучитьСтроку() = 1 Цикл Если ЗаявкаП.Товар = ПрихДокПеч.Товар Тогда ТЗ.НоваяСтрока(); ТЗ.ТоварСВ = ЗаявкаПеч.Товар; ТЗ.КолвоСВ = ЗаявкаПеч.Количество; ТЗ.ТоварПН = ПрихДокПеч.Товар; ТЗ.КолвоПН = ПрихДокПеч.Количество; КонецЕсли; КонецЦикла; ТЗ.Свернуть("ТоварСВ,ТоварПН","КолвоСВ,КолвоПН"); ТЗ.ВыбратьСтроки(); Пока ТЗ.ПолучитьСтроку() = 1 Цикл ТоварСВ = ТЗ.ТоварСВ; КолвоСВ = ТЗ.КолвоСВ; ТоварПН = ТЗ.ТоварПН; КолвоПН = ТЗ.КолвоПН; Таб.ВывестиСекцию("Товар"); КонецЦикла; Иначе Сообщить("Нету подчиненных документов..."); КонецЕсли; КонецЦикла; КонецЦикла; В таблице не правильно отображает данные если подчиненного документа нету или строк в документах больше одной. |
|||
19
GreyAngel
02.10.12
✎
09:23
|
1. Перебираются все документы, включая помеченные на удаление.
2. ПрихДокПеч нигде не очищается. Если подчиненного документа не найдено, то в переменной останется ссылка на предыдущий документ. 3. Зачем нужны два поля (ТоварСВ и ТоварПН) если в них помещаются исключительно одинаковые значения? 4. ТЗ нигде не очищается и при этом ПОЛНОСТЬЮ выводится после считывания КАЖДОЙ строки заявки. Таки да, скорее всего в ДНК :) |
|||
20
Gangar
02.10.12
✎
12:13
|
(19)
Спасибо, все заработало. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |