Не правильно считается сумма в запросе (7.7)
15.07.2010
10:14
#21
Я может непонятно изъяснился, имел ввиду вот что. Есть два способа перехода от строковых реквизитов к числовым:
1. Просто поменять в конфигураторе тип реквизита с "строка" на "число". При этом система сама сделает преобразование как сумеет.
2. Сделать как я написал выше, то есть, создать вспомогательные реквизиты типа "число", распарсить строки самостоятельно и положить в них числовые значения.
Вот я и проголосовал за "способ №2"
1. Просто поменять в конфигураторе тип реквизита с "строка" на "число". При этом система сама сделает преобразование как сумеет.
2. Сделать как я написал выше, то есть, создать вспомогательные реквизиты типа "число", распарсить строки самостоятельно и положить в них числовые значения.
Вот я и проголосовал за "способ №2"
15.07.2010
13:11
#23
" ТекстЗапроса =
"//{{ЗАПРОС(Сформировать)
|Период с ВыбНачПериода по ВыбКонПериода;
|ЗДок = Документ.КорректировкаОстатковТоваров.ТекущийДокумент;
|Основание = Документ.КорректировкаОстатковТоваров.Основание;
|Товар = Документ.КорректировкаОстатковТоваров.Товар;
|Склад = Документ.КорректировкаОстатковТоваров.Склад;
|Признак = Документ.КорректировкаОстатковТоваров.Признак;
|Остаток = Документ.КорректировкаОстатковТоваров.Остаток;
|НовыйОст = Документ.КорректировкаОстатковТоваров.НовыйОст;
|Разница = Документ.КорректировкаОстатковТоваров.Разница;
|Сумма = Документ.КорректировкаОстатковТоваров.Сумма;
|СуммаСт = Документ.КорректировкаОстатковТоваров.СуммаСт;
|Цена = Документ.КорректировкаОстатковТоваров.Цена;
|Функция НовыйОстСумма = Сумма(НовыйОст);
|Функция СуммаСумма = Сумма(Сумма);
|Функция СуммаСтСумма = Сумма(СуммаСт);
|Функция ОстатокСумма = Сумма(Остаток);
|Функция РазницаСумма = Сумма(Разница);
|Группировка Товар;
|Условие(Остаток <> НовыйОст);
|"//}}ЗАПРОС
;
Остаток, НовыйОст - Тип Число, длина 15, точность 3
Сумма - Тип число, длина 19, точность 2
СуммаСт, Разница - Тип Строка, длина 10
Еще, что-нибудь?"
"//{{ЗАПРОС(Сформировать)
|Период с ВыбНачПериода по ВыбКонПериода;
|ЗДок = Документ.КорректировкаОстатковТоваров.ТекущийДокумент;
|Основание = Документ.КорректировкаОстатковТоваров.Основание;
|Товар = Документ.КорректировкаОстатковТоваров.Товар;
|Склад = Документ.КорректировкаОстатковТоваров.Склад;
|Признак = Документ.КорректировкаОстатковТоваров.Признак;
|Остаток = Документ.КорректировкаОстатковТоваров.Остаток;
|НовыйОст = Документ.КорректировкаОстатковТоваров.НовыйОст;
|Разница = Документ.КорректировкаОстатковТоваров.Разница;
|Сумма = Документ.КорректировкаОстатковТоваров.Сумма;
|СуммаСт = Документ.КорректировкаОстатковТоваров.СуммаСт;
|Цена = Документ.КорректировкаОстатковТоваров.Цена;
|Функция НовыйОстСумма = Сумма(НовыйОст);
|Функция СуммаСумма = Сумма(Сумма);
|Функция СуммаСтСумма = Сумма(СуммаСт);
|Функция ОстатокСумма = Сумма(Остаток);
|Функция РазницаСумма = Сумма(Разница);
|Группировка Товар;
|Условие(Остаток <> НовыйОст);
|"//}}ЗАПРОС
;
Остаток, НовыйОст - Тип Число, длина 15, точность 3
Сумма - Тип число, длина 19, точность 2
СуммаСт, Разница - Тип Строка, длина 10
Еще, что-нибудь?"
15.07.2010
13:16
#24
"> ТекстЗапроса =
> "//{{ЗАПРОС(Сформировать)
> |Период с ВыбНачПериода по ВыбКонПериода;
> |ЗДок = Документ.КорректировкаОстатковТоваров.ТекущийДокумент;
> |Основание = Документ.КорректировкаОстатковТоваров.Основание;
> |Товар = Документ.КорректировкаОстатковТоваров.Товар;
> |Склад = Документ.КорректировкаОстатковТоваров.Склад;
> |Признак = Документ.КорректировкаОстатковТоваров.Признак;
> |Остаток = Документ.КорректировкаОстатковТоваров.Остаток;
> |НовыйОст = Документ.КорректировкаОстатковТоваров.НовыйОст;
> |Разница = Документ.КорректировкаОстатковТоваров.Разница;
> |Сумма = Документ.КорректировкаОстатковТоваров.Сумма;
> |СуммаСт = Документ.КорректировкаОстатковТоваров.СуммаСт;
> |Цена = Документ.КорректировкаОстатковТоваров.Цена;
> |Функция НовыйОстСумма = Сумма(НовыйОст);
> |Функция СуммаСумма = Сумма(Сумма);
> |Функция СуммаСтСумма = Сумма(СуммаСт);
> |Функция ОстатокСумма = Сумма(Остаток);
> |Функция РазницаСумма = Сумма(Разница);
> |Группировка Товар;
> |Условие(Остаток <> НовыйОст);
> |"//}}ЗАПРОС
> ;
>
>
> Остаток, НовыйОст - Тип Число, длина 15, точность 3
> Сумма - Тип число, длина 19, точность 2
> СуммаСт, Разница - Тип Строка, длина 10
>
> Еще, что-нибудь?
Отлично теперь замените в запросе строчку
...
|Функция РазницаСумма = Сумма(Разница);
...
на
...
|Функция РазницаСумма = Сумма(Остаток-Остаток+число(Разница));
...
И посмотрите на результат.
"
> "//{{ЗАПРОС(Сформировать)
> |Период с ВыбНачПериода по ВыбКонПериода;
> |ЗДок = Документ.КорректировкаОстатковТоваров.ТекущийДокумент;
> |Основание = Документ.КорректировкаОстатковТоваров.Основание;
> |Товар = Документ.КорректировкаОстатковТоваров.Товар;
> |Склад = Документ.КорректировкаОстатковТоваров.Склад;
> |Признак = Документ.КорректировкаОстатковТоваров.Признак;
> |Остаток = Документ.КорректировкаОстатковТоваров.Остаток;
> |НовыйОст = Документ.КорректировкаОстатковТоваров.НовыйОст;
> |Разница = Документ.КорректировкаОстатковТоваров.Разница;
> |Сумма = Документ.КорректировкаОстатковТоваров.Сумма;
> |СуммаСт = Документ.КорректировкаОстатковТоваров.СуммаСт;
> |Цена = Документ.КорректировкаОстатковТоваров.Цена;
> |Функция НовыйОстСумма = Сумма(НовыйОст);
> |Функция СуммаСумма = Сумма(Сумма);
> |Функция СуммаСтСумма = Сумма(СуммаСт);
> |Функция ОстатокСумма = Сумма(Остаток);
> |Функция РазницаСумма = Сумма(Разница);
> |Группировка Товар;
> |Условие(Остаток <> НовыйОст);
> |"//}}ЗАПРОС
> ;
>
>
> Остаток, НовыйОст - Тип Число, длина 15, точность 3
> Сумма - Тип число, длина 19, точность 2
> СуммаСт, Разница - Тип Строка, длина 10
>
> Еще, что-нибудь?
Отлично теперь замените в запросе строчку
...
|Функция РазницаСумма = Сумма(Разница);
...
на
...
|Функция РазницаСумма = Сумма(Остаток-Остаток+число(Разница));
...
И посмотрите на результат.
"
15.07.2010
13:30
#25
"> Отлично теперь замените в запросе строчку
> ...
> |Функция РазницаСумма = Сумма(Разница);
> ...
> на
> ...
> |Функция РазницаСумма = Сумма(Остаток-Остаток+число(Разница));
> ...
>
> И посмотрите на результат.
=80
И таки да, действительно, работает!!!
Спасибо!
Никогда не сталкивался с таким эффектом, кто бы подумал, буду знать."
> ...
> |Функция РазницаСумма = Сумма(Разница);
> ...
> на
> ...
> |Функция РазницаСумма = Сумма(Остаток-Остаток+число(Разница));
> ...
>
> И посмотрите на результат.
=80
И таки да, действительно, работает!!!
Спасибо!
Никогда не сталкивался с таким эффектом, кто бы подумал, буду знать."
Читают тему
(гостей: 1)