|
v7: Рег.ВыгрузитьИтоги(тз) <> Запрос.Выгрузить(тз,,0) | ☑ | ||
---|---|---|---|---|
0
Zhuravlik
06.08.12
✎
17:04
|
Не пойму...
В конфе только один документ прихода. Заранее известно, что общий итог - 280, ресурс "Количество", измерение - "Вагон". Рег = СоздатьОбъект("Регистр.АвтомобилиВДороге"); тзОстатки = СоздатьОбъект("ТаблицаЗначений"); Рег.ВыгрузитьИтоги(тзОстатки); тзОстатки.Свернуть("Вагон", "Количество"); На выходе - тз, 28 строчек, по каждой "Количество"- 9. Причем если сообщаю тзОстатки.Итог("Количество") - возвращается 280. Если делаю запросом: Запрос = СоздатьОбъект("Запрос"); ДатаТА = ПолучитьДатуТА(); ТекстЗапроса = " |Период с ДатаТА по ДатаТА; |Без Итогов; |Вагон = Регистр.АвтомобилиВДороге.Вагон; |Группировка Вагон Без Групп; |кол = Регистр.АвтомобилиВДороге.Количество; |Функция Количество = КонОст(кол); |"; Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда Возврат; КонецЕсли; тзОстатки = СоздатьОбъект("ТаблицаЗначений"); Запрос.Выгрузить(тзОстатки,,0); Все как надо, на выходе - тз, 28 строчек, по каждой "Количество"- 10. Что я делаю не так? Почему в первом варианте по строкам количество - 9 (неправильно 9*28 = 252, должно быть 280), а с запросом все как надо? |
|||
1
Ёпрст
06.08.12
✎
17:08
|
>>>На выходе - тз, 28 строчек, по каждой "Количество"- 9.
как проверил, если утверждаешь, что тзОстатки.Итог("Количество") = 280 ? |
|||
2
Zhuravlik
06.08.12
✎
17:10
|
(1) тзОстатки.ВыбратьСтроку(). И я это делаю для отбора в форме списка справочника, там в поле "Остаток" тоже девятки выходят (как раз из этой тз).
|
|||
3
Ёпрст
06.08.12
✎
17:14
|
а так ?
Рег = СоздатьОбъект("Регистр.АвтомобилиВДороге"); т = СоздатьОбъект("ТаблицаЗначений"); Рег.ВыгрузитьИтоги(т); т.Свернуть("Вагон", "Количество"); т.выбратьСтроку() ? |
|||
4
Ёпрст
06.08.12
✎
17:14
|
мот у тебя тупо формат установлен где либо на колонку ? а 9 - это от переполнения разряда показывает
|
|||
5
Zhuravlik
06.08.12
✎
17:16
|
(3) То же самое.
|
|||
6
Zhuravlik
06.08.12
✎
17:16
|
(4) Нет, я же тз создаю непосредственно перед выгрузкой, код такой же, как и здесь.
|
|||
7
КонецЦикла
06.08.12
✎
17:17
|
А если для запроса посмотреть что содержится в ТЗ?
Ну и типа сравнить, вроде не такая уж сложность |
|||
8
Ёпрст
06.08.12
✎
17:17
|
скриншот покажи
этого: Рег = СоздатьОбъект("Регистр.АвтомобилиВДороге"); т = СоздатьОбъект("ТаблицаЗначений"); Рег.ВыгрузитьИтоги(т); т.выбратьСтроку(); и этого т.Свернуть("Вагон", "Количество"); т.выбратьСтроку(); |
|||
9
Zhuravlik
06.08.12
✎
17:19
|
(8) Не поместится в скриншот полностью, сделаю только шапку?
|
|||
10
NS
06.08.12
✎
17:20
|
Ресурс количество в регистре какой имеет тип и длину?
|
|||
11
КонецЦикла
06.08.12
✎
17:20
|
Мне кажется в запросе одна строчка лишняя :)
|
|||
12
NS
06.08.12
✎
17:21
|
(11) Да, первая.
|
|||
13
Ёпрст
06.08.12
✎
17:25
|
(10) число, длина 1 поди
:)))) |
|||
14
Ёпрст
06.08.12
✎
17:27
|
тогда бы и запрос вернул "9"-ки.. там приведение точности функции из её аргумента- переменной..
|
|||
15
Zhuravlik
06.08.12
✎
17:27
|
(8)
http://s45.radikal.ru/i108/1208/05/e1bd7f64a884.jpg - До свертки http://s018.radikal.ru/i506/1208/e1/97783e7d9855.jpg - после свертки (10)(13) Да, Число, длина - 1. (13) А что, это неправильно? |
|||
16
NS
06.08.12
✎
17:28
|
(15) Для чего человеку дана голова?
|
|||
17
Zhuravlik
06.08.12
✎
17:28
|
Сделал полное тестирование только что, тоже самое...
|
|||
18
Ёпрст
06.08.12
✎
17:28
|
(15) еще бы!
|
|||
19
NS
06.08.12
✎
17:28
|
Как ты думаешь число 10 влезает в "число" длины 1?
|
|||
20
Ёпрст
06.08.12
✎
17:29
|
(16) что бы в неё есть :)
(17) нахрена ?! увеличь разрядность в регистре и всего лишь. |
|||
21
Zhuravlik
06.08.12
✎
17:32
|
(19) (20) Сейчас попробую.
Я думал, что разрядность ресурса нужна для последнего измерения, а при накоплении итогов достаточно свернуть и все... А почему же запрос тогда норм. отрабатывает? |
|||
22
NS
06.08.12
✎
17:33
|
(21) Потому что при выгрузке в ТЗ тип колонки берется из типа в регистре.
А Запрос хитро рассчитывает. |
|||
23
Ёпрст
06.08.12
✎
17:36
|
в запросе тоже (точность , так 100%) из типа аргумента функции
|
|||
24
Zhuravlik
06.08.12
✎
17:37
|
(19)(20) Да, все работает если разрядность увеличить...
А ведь должно так сработать? Рег = СоздатьОбъект("Регистр.АвтомобилиВДороге"); тзОстатки = СоздатьОбъект("ТаблицаЗначений"); Рег.ВыгрузитьИтоги(тзОстатки); тзОстатки.УстановитьПараметрыКолонки(2,"Число", 5, 0); тзОстатки.Свернуть("Вагон", "Количество"); При разрядности 1,0 тоже выдает девятки. |
|||
25
Zhuravlik
06.08.12
✎
17:44
|
Вот так поехало)
Рег = СоздатьОбъект("Регистр.АвтомобилиВДороге"); тзОстатки = СоздатьОбъект("ТаблицаЗначений"); Рег.ВыгрузитьИтоги(тзОстатки); тзОстатки.УстановитьПараметрыКолонки("Количество","Число", 5, 0); тзОстатки.Свернуть("Вагон", "Количество"); Спасибо всем за помощь. |
|||
26
NS
06.08.12
✎
17:48
|
(23) Ничего подобного.
Ресурс количество - длина 15 точность 5. Запрос=создатьобъект("Запрос"); ТекстЗапроса="номенклатура=регистр.РезервыNS.Номенклатура; |кол=регистр.РезервыNS.количество; |Функция колич=коност(кол); |Группировка номенклатура без групп; без итогов;"; Запрос.Выполнить(ТекстЗапроса); ТЗ=создатьобъект("ТаблицаЗначений"); Запрос.Выгрузить(ТЗ,0,0); тип=""; Длина=""; точность=""; ТЗ.ПолучитьПараметрыКолонки("колич",тип,длина,точность); сообщить(""+тип+" "+длина+" "+точность); Число 17 5 На два увеличил длину запрос. |
|||
27
Ёпрст
06.08.12
✎
17:50
|
(26) ну, значит только точность берёт.
|
|||
28
Ёпрст
06.08.12
✎
17:50
|
из переменной текста запроса
|
|||
29
NS
06.08.12
✎
17:51
|
Точность - да, из неё.
|
|||
30
Zhuravlik
06.08.12
✎
17:57
|
(28)(29) А как сильно напрягает конфу, если я там разрядность увеличу? Просто основная задача этого регистра - это именно поштучный учет, эти остатки - единичный случай. Стоит ли из-за одной строчки кода увеличивать разрядность ресурса в данном случае?
|
|||
31
NS
06.08.12
✎
17:57
|
(30) вообще не напрягает.
|
|||
32
Zhuravlik
06.08.12
✎
18:06
|
(31) т.е. если по регистру в течение скажем года было 100 000 движений, то что при разрядности (1:0), что при разрядности (15:2) файл будет занимать одно и тоже место? И в самой базе не будет заметно разницы при проведении?
|
|||
33
NS
06.08.12
✎
18:13
|
(32) Да, почти. Посмотри таблицу - у тебя измерения намного больше места занимают чем ресурсы.
|
|||
34
Эльниньо
06.08.12
✎
20:39
|
В RA 1.0 хватит. А RG?
|
|||
35
hhhh
06.08.12
✎
23:03
|
(32) действительно, головой совсем не думаешь. 100000 * 15 = 1500000. Это 1,5 мегабайта. Никто и не заметит, еще и смеятся будут, что ты из-за 100 килобайт здесь так паришься.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |