|
v7: Данные не попадают в ТЗ | ☑ | ||
---|---|---|---|---|
0
OASU
22.04.12
✎
16:56
|
Есть сегодня здесь хоть кто-нить?
Отчет. В запросе делаю выборку. Из запроса помещаю данные в ТЗ: ТЗ.НоваяСтрока(); ТЗ.Номенк = Запрос.Номенклатура; ТЗ.Сумма2 = Запрос.Стоимость; и т.д. Делаю это в цикле по грппировке, через отладчик проверяю, данные заносятся, не пустые. После делаю еще один отбор по дкументу, тоже в цикле и из этой выборки получаю другие данные и тоже добавляю их в ТЗ: ТЗ.НоваяСтрока(); ТЗ.Номенк = Док.Номенклатура; ТЗ.Сумма = Док.Сумма; Затем сворачиваю: ТЗ.Свернуть(....); выбрать строки и получить строку...и т.д. СуммаТаб = ТЗ.Сумма; СуммаФакт = ТЗ.Сумма2; .... В отчет заполняется только СуммаТаб, а СуммаФакт = 0. Что не так то? |
|||
1
andrewks
22.04.12
✎
16:58
|
"Что не так то?" что-то не так. в коде. в каком-то из них. а может, сразу в обоих
|
|||
2
OASU
22.04.12
✎
17:00
|
мне кажется что значения = 0, как-то мешают свернуть таблицу
|
|||
3
Voronve
22.04.12
✎
17:01
|
Затем сворачиваю: ТЗ.Свернуть(....);
Полностью это. и полностью структуру таблицы |
|||
4
andrewks
22.04.12
✎
17:02
|
значения = 0, совершенно не мешают свернуть таблицу
какая типизация у колонок? |
|||
5
OASU
22.04.12
✎
17:02
|
(3) ТЗ.Свернуть("Номенклатура", "Сумма, Сумма2");
|
|||
6
OASU
22.04.12
✎
17:03
|
(4) Справочник и Число
|
|||
7
Злопчинский
22.04.12
✎
17:04
|
очевидно, что автор что-то не договоаривает
|
|||
8
OASU
22.04.12
✎
17:05
|
ТЗ.ВыбратьСтроки();
Пока ТЗ.ПолучитьСтроку()=1 Цикл Если ТЗ.Сумма=0 Тогда продолжить; КонецЕсли; ... Вот если убрать это условие, то и СуммаТаб выходит =0 в таблице. |
|||
9
AlexWolf
22.04.12
✎
17:06
|
(8) начни копировать со строк тз = создатьобъект("таблицазначений")
|
|||
10
OASU
22.04.12
✎
17:18
|
(9)
ТЗ = СоздатьОбъект("ТаблицаЗначений"); ТЗ.НоваяКолонка("Номенк", "Справочник.Номенклатура"); ТЗ.НоваяКолонка("Сумма", "Число",15,2); ТЗ.НоваяКолонка("Сумма2", "Число",15,2); ТЗ.НоваяКолонка("СуммаД", "Число",15,2); ДокСчет = СоздатьОБъект("Документ.Счет"); //****************************************************************************************************************** Запрос = СоздатьОбъект("Запрос"); ТекстЗапроса = "//{{ЗАПРОС(Сформировать) |Период с НачДата по КонДата; |Обрабатывать НеПомеченныеНаУдаление; |Стоимость = Регистр.Себестоимость.Стоимость; |Номенклатура = Регистр.Себестоимость.Номенклатура; |Функция Себестоимость = Сумма(Стоимость); |Группировка Номенклатура упорядочить по Номенклатура.Наименование; |Условие(ПУстоеЗначение(Номенклатура) = 0); |";//}}ЗАПРОС // Если ошибка в запросе, то выход из процедуры Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли; Пока Запрос.Группировка(1) = 1 Цикл ТЗ.НоваяСтрока(); ТЗ.Номенк = Запрос.Номенклатура; Если Запрос.Номенклатура = Константа.ОсновнойФ Тогда ТЗ.Сумма2 = Запрос.Стоимость; Иначе ТЗ.СуммаД = Запрос.Стоимость; КонецЕсли; КонецЦикла; //****************************************************************************************************************** ДокСчет.ВыбратьДокументы(НачДата,КонДата); Пока ДокСчет.ПолучитьДокумент()=1 Цикл Если ДокСчет.ПометкаУдаления()=1 Тогда Продолжить; КонецЕсли; СуммаПоСчету = ДокСчет.Итог("Всего"); ТЗ.НоваяСтрока(); ТЗ.Номенк = ДокСчет.Номенклатура; ТЗ.Сумма = СуммаПоСчету; КонецЦикла; //--------------------------------------------------------------------------------------------------------------- ТЗ.Свернуть("Номенк","Сумма, СуммаД, Сумма2"); ТЗ.ВыбратьСтроки(); Пока ТЗ.ПолучитьСтроку()=1 цикл Если (ТЗ.Сумма = 0) Тогда продолжить; КонецЕсли; НоменклатураТаб = ТЗ.Номенк; СуммаТаб = ТЗ.Сумма; СуммаДТаб = ТЗ.СуммаД; Сумма2Таб = ТЗ.Сумма2; Таб.ВывестиСекцию("Строка"); КонецЦикла; |
|||
11
Злопчинский
22.04.12
✎
17:20
|
|Обрабатывать НеПомеченныеНаУдаление; - лишнее, убрать
|
|||
12
Злопчинский
22.04.12
✎
17:20
|
ТЗ.Сумма2 - будет заполнено - в лучшем случае! - для одной строки ТЗ
|
|||
13
Злопчинский
22.04.12
✎
17:21
|
Пока ДокСчет.ПолучитьДокумент()=1 Цикл
- возможно не стоит брать в ТЗ НЕПРОВЕДЕННЫЕ документы.. |
|||
14
Злопчинский
22.04.12
✎
17:22
|
выводы
а) - не заполнена константа Константа.ОсновнойФ б) - в выборке по запросу нет номенклатуры, которая = указанной константе |
|||
15
andrewks
22.04.12
✎
17:25
|
(10) открой для себя УстановитьФильтр()
|
|||
16
OASU
22.04.12
✎
17:26
|
(14) Замечания учтены, не помогло.
"а) - не заполнена константа Константа.ОсновнойФ" - заполнена, факт. б) - в выборке по запросу нет номенклатуры, которая = указанной константе" - в отлдачике ТЗ.Сумма2 и ТЗ.СуммаД заполняются согласно условию. |
|||
17
Злопчинский
22.04.12
✎
17:28
|
ну тогда в отладчике перед исполнением оператора свертки выполни в табло
ТЗ.ВыбратьСтроку(,"до свертки") - переключись в предприятие и посмотри... выполни свертку и снова переключись в предприятие и посмотри. |
|||
18
Злопчинский
22.04.12
✎
17:29
|
Правильно ли я понял что ТЗ.Сумма2 - отлична от нуля всего в однйо строке ТЗ..?
|
|||
19
OASU
22.04.12
✎
17:30
|
(18) Да.
ТЗ.Свернуть("Номенк","Сумма, СуммаД, Сумма2"); ТЗ.ВыбратьСтроки(); Пока ТЗ.ПолучитьСтроку()=1 цикл Если (ТЗ.Сумма = 0) Тогда продолжить; КонецЕсли; если это заменить на ТЗ.Сумма2 = 0, тогда Сумма2 в таблице заполняется, а сумма наоборот становится = 0 |
|||
20
Злопчинский
22.04.12
✎
17:30
|
наверное все-таки в результатах запроса надо брать
Запрос.Себестоимость; а не Запрос.Стоимость; . ??? |
|||
21
SmallDog
22.04.12
✎
17:32
|
никогго нет, извини
|
|||
22
Злопчинский
22.04.12
✎
17:33
|
если в документе у тебя номенклатура, которой нет в запросе - а это запросто.. то на выводе будут только строки где сумма- какое-то число, а сумма2 и суммаД = 0
|
|||
23
OASU
22.04.12
✎
17:33
|
(20) |Стоимость = Регистр.Себестоимость.Стоимость;
в смысле "Запрос.Себестоимость", переменная ведь обозначена |
|||
24
Злопчинский
22.04.12
✎
17:33
|
с интересом ждем результатов экспериментов...
|
|||
25
andrewks
22.04.12
✎
17:34
|
я так и не понял, какие претензии к Свернуть()
|
|||
26
Злопчинский
22.04.12
✎
17:35
|
у тебя в регистре
Товар1 - 100 руб Товар2 - 50 руб Товар1 - 30 руб. . на выходе ЗАПРОСА у тебя будет Товар1 - 130 руб (ФУНКЦИЯ СУММА!) Товар2 - 50 руб. |
|||
27
OASU
22.04.12
✎
17:36
|
(22) ну похоже что так оно и получается, а как с эти бороться?
|
|||
28
Злопчинский
22.04.12
✎
17:36
|
(25) у него неверная интепретация ожидаемого и действительного - он считает что они должны солвпадать, а на самом деле это не так. и ожидаемое - НЕВРНО.
|
|||
29
Злопчинский
22.04.12
✎
17:36
|
(27) вестимо как - написать ПРАВИЛЬНО!!!!!!
|
|||
30
Злопчинский
22.04.12
✎
17:36
|
а что является ПРАВИЛЬНЫМ в твоей задаче - я хз...
|
|||
31
Злопчинский
22.04.12
✎
17:37
|
для начала в выводе закомментарь
Если (ТЗ.Сумма = 0) Тогда продолжить; КонецЕсли; . и втыкай в получившийся результат до просветления |
|||
32
Злопчинский
22.04.12
✎
17:38
|
заодно повтыкай в (26)
|
|||
33
OASU
22.04.12
✎
17:40
|
(25) если запрос делает правильную выборку и выборка по Доку делает правильную выборку, и все это помещает в ТЗ, сворачивает результат и результат не верный...
|
|||
34
Злопчинский
22.04.12
✎
17:47
|
(33) трындишь, вероятность 99%. давай доступ по тимвьюверу - ид и пароль на [email protected] - будем вместе смотреть - там работы на совсем немного - ЧУДЕС НЕ БЫВАЕТ
|
|||
35
Злопчинский
22.04.12
✎
17:49
|
в (10) неврное извлечение результатов запроса
. Если Запрос.Номенклатура = Константа.ОсновнойФ Тогда ТЗ.Сумма2 = Запрос.Стоимость; Иначе ТЗ.СуммаД = Запрос.Стоимость; КонецЕсли; . надо Если Запрос.Номенклатура = Константа.ОсновнойФ Тогда ТЗ.Сумма2 = Запрос.Себестоимость; Иначе ТЗ.СуммаД = Запрос.Себестоимость; КонецЕсли; |
|||
36
OASU
22.04.12
✎
17:50
|
(17) в отладчике посмотрела ТЗ.ВыбратьСтроку, по крайней мере данные есть все, после свертки тоже все есть но она не свернутая вроде.
высылаю. |
|||
37
Злопчинский
22.04.12
✎
17:51
|
ок. жду
|
|||
38
Злопчинский
22.04.12
✎
17:51
|
(36) просто попался частный случай, когда все строки в тз - уникальные
|
|||
39
Злопчинский
22.04.12
✎
17:52
|
ошибка в принципе написана в (28)
|
|||
40
Злопчинский
22.04.12
✎
17:55
|
||||
41
Злопчинский
22.04.12
✎
18:57
|
Вопрос закрыт.
причина - в (22) + свертка не происходила из-за того что в свертке прсиутсовала еще одна колонка с неуникальными данными - т.е. в (10) приведен не полный код. . |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |