Не правильно считается сумма в запросе (7.7)
14.07.2010
12:41
#11
"Специально для "дельфистов" запрос который будет работать
"//{{ЗАПРОС(Сформировать)
|ОбрабатыватьДокументы НеПроведенные;
|СуммаТекст = Документ.Реализация.СуммаТекст;
|Реализация = Документ.Реализация.ТекущийДокумент;
|СуммаВзаиморасчетов = Документ.Реализация.Курс;
|Функция РеализацияКурсСумма = Сумма(СуммаВзаиморасчетов-СуммаВзаиморасчетов+число(СуммаТекст));
|Группировка Реализация;
|"//}}ЗАПРОС
Замечание.
Сделано на ТИПОВОЙ ТИС77. Добавлено для примера текстовое поле СуммаТекст
ВАЖНО, что сумма забита как 123.23 (через точку). Проверить что проблема не в окрулении можно через Табло: число("123.23")
Если не понятно почему работает:
Чтобы 1С поняла, что нужно использовать числа с точкой нужно выбрать в функции реквизит типа с точкой (нецелый)
PS А вообще Вам лучше переходит на платформу8. Там таких "заморочек" гораздо меньше!
"
"//{{ЗАПРОС(Сформировать)
|ОбрабатыватьДокументы НеПроведенные;
|СуммаТекст = Документ.Реализация.СуммаТекст;
|Реализация = Документ.Реализация.ТекущийДокумент;
|СуммаВзаиморасчетов = Документ.Реализация.Курс;
|Функция РеализацияКурсСумма = Сумма(СуммаВзаиморасчетов-СуммаВзаиморасчетов+число(СуммаТекст));
|Группировка Реализация;
|"//}}ЗАПРОС
Замечание.
Сделано на ТИПОВОЙ ТИС77. Добавлено для примера текстовое поле СуммаТекст
ВАЖНО, что сумма забита как 123.23 (через точку). Проверить что проблема не в окрулении можно через Табло: число("123.23")
Если не понятно почему работает:
Чтобы 1С поняла, что нужно использовать числа с точкой нужно выбрать в функции реквизит типа с точкой (нецелый)
PS А вообще Вам лучше переходит на платформу8. Там таких "заморочек" гораздо меньше!
"
14.07.2010
13:47
#12
> Столкнулся с такой ситуацией: какой-то не хороший редиска $%^&@# создал документ в котором пара реквизитов табличной части имеют тип значения - строка, это реквизиты СуммаСтарая и Разница (как видно тип должен быть все же число).
почему не исправить на число ?
почему не исправить на число ?
14.07.2010
15:43
#13
> почему не исправить на число ?
У нас это хитрый документ КорректировкаОстатковТоваров, писал его не я и с ним часто возникают проблемы... Поэтому сначала погоняю на тренировочной базе...
У нас это хитрый документ КорректировкаОстатковТоваров, писал его не я и с ним часто возникают проблемы... Поэтому сначала погоняю на тренировочной базе...
14.07.2010
16:03
#14
"В документе тип реквизита - Строка, числа забиты с точкой, в запросе |Функция РазницаСумма = Сумма(Число(Разница)); все равно округление до целых.
> PS А вообще Вам лучше переходит на платформу8. Там таких "заморочек" гораздо меньше!
Пока нет ни времени переписывать конфигурацию и обучать сотрудников, ни желания руководства..."
> PS А вообще Вам лучше переходит на платформу8. Там таких "заморочек" гораздо меньше!
Пока нет ни времени переписывать конфигурацию и обучать сотрудников, ни желания руководства..."
14.07.2010
16:30
#15
"> В документе тип реквизита - Строка, числа забиты с точкой, в запросе |Функция РазницаСумма = Сумма(Число(Разница)); все равно округление до целых.
Вы пост наш внимательно прочитали? Запрос видели?
"
Вы пост наш внимательно прочитали? Запрос видели?
"
14.07.2010
18:56
#16
"> Вы пост наш внимательно прочитали? Запрос видели?
Читал внимательно насколько смог. Запрос видел.
> Замечание.
> Сделано на ТИПОВОЙ ТИС77. Добавлено для примера текстовое поле СуммаТекст
> ВАЖНО, что сумма забита как 123.23 (через точку). Проверить что проблема не в окрулении можно через Табло: число("123.23")
У мня нет типовой ТиС на данный момент, коробку куда-то дел, работаем в самописной конфигурации на основе ТиС. В документе у мня не текстовое поле, а реквизит типа Строка, дробные числа в него вводятся с использованием точки, а не запятой.
> Если не понятно почему работает:
> Чтобы 1С поняла, что нужно использовать числа с точкой нужно выбрать в функции реквизит типа с точкой (нецелый)
Вот это поясните. В конфигурации у нас как разделитель целой и дробной части используется именно точка.
> |СуммаТекст = Документ.Реализация.СуммаТекст;
Понятно, создали переменную в запросе, текстовую как у Вас написано.
> |Функция РеализацияКурсСумма = Сумма(СуммаВзаиморасчетов-СуммаВзаиморасчетов+число(СуммаТекст));
Ввели функцию Сумма где еще и вычисляем
> СуммаВзаиморасчетов-СуммаВзаиморасчетов+число(СуммаТекст)
Для преобразования текстовой переменной запроса СуммаТекст в число используется конструкция
> число(СуммаТекст)
Что я не так понял, поясните? Мне в запросе вычислений типа
> СуммаВзаиморасчетов-СуммаВзаиморасчетов+число(СуммаТекст)
производить не надо, а просто конструкция СуммаТекст
> |... = Сумма(Число(СуммаТекст));
Выдает округленный результат, до целых.
Или, что я не так делаю?"
Читал внимательно насколько смог. Запрос видел.
> Замечание.
> Сделано на ТИПОВОЙ ТИС77. Добавлено для примера текстовое поле СуммаТекст
> ВАЖНО, что сумма забита как 123.23 (через точку). Проверить что проблема не в окрулении можно через Табло: число("123.23")
У мня нет типовой ТиС на данный момент, коробку куда-то дел, работаем в самописной конфигурации на основе ТиС. В документе у мня не текстовое поле, а реквизит типа Строка, дробные числа в него вводятся с использованием точки, а не запятой.
> Если не понятно почему работает:
> Чтобы 1С поняла, что нужно использовать числа с точкой нужно выбрать в функции реквизит типа с точкой (нецелый)
Вот это поясните. В конфигурации у нас как разделитель целой и дробной части используется именно точка.
> |СуммаТекст = Документ.Реализация.СуммаТекст;
Понятно, создали переменную в запросе, текстовую как у Вас написано.
> |Функция РеализацияКурсСумма = Сумма(СуммаВзаиморасчетов-СуммаВзаиморасчетов+число(СуммаТекст));
Ввели функцию Сумма где еще и вычисляем
> СуммаВзаиморасчетов-СуммаВзаиморасчетов+число(СуммаТекст)
Для преобразования текстовой переменной запроса СуммаТекст в число используется конструкция
> число(СуммаТекст)
Что я не так понял, поясните? Мне в запросе вычислений типа
> СуммаВзаиморасчетов-СуммаВзаиморасчетов+число(СуммаТекст)
производить не надо, а просто конструкция СуммаТекст
> |... = Сумма(Число(СуммаТекст));
Выдает округленный результат, до целых.
Или, что я не так делаю?"
14.07.2010
22:47
#17
"УФФ. 
Давайте по другому поступим.
В указанном Вами документе (там где поле "СуммаТекст") есть поля типа число с дробью? Если есть, напишите пожалуйста ПОЛНОСТЬЮ свой запрос по Вашему документу из Вашей конфигурации с выборкой и суммированием указанного поля.
Должно выглядеть как то так:
...
|ВашеЧисловоеПоле = Документ.ВашаДокумент.ВашеЧисловоеПоле;
|Функция ВашеЧисловоеПолеСумма = Сумма(ВашеЧисловоеПоле );
...
"
Давайте по другому поступим.
В указанном Вами документе (там где поле "СуммаТекст") есть поля типа число с дробью? Если есть, напишите пожалуйста ПОЛНОСТЬЮ свой запрос по Вашему документу из Вашей конфигурации с выборкой и суммированием указанного поля.
Должно выглядеть как то так:
...
|ВашеЧисловоеПоле = Документ.ВашаДокумент.ВашеЧисловоеПоле;
|Функция ВашеЧисловоеПолеСумма = Сумма(ВашеЧисловоеПоле );
...
"
14.07.2010
22:48
#18
> > почему не исправить на число ?
> У нас это хитрый документ КорректировкаОстатковТоваров, писал его не я и с ним часто возникают проблемы... Поэтому сначала погоняю на тренировочной базе...
чего гонять ... ?
меня и всё - это же по смыслу ясно
> У нас это хитрый документ КорректировкаОстатковТоваров, писал его не я и с ним часто возникают проблемы... Поэтому сначала погоняю на тренировочной базе...
чего гонять ... ?
меня и всё - это же по смыслу ясно
15.07.2010
09:42
#19
Если просто сменить тип реквизита на числовой, то можно потерять данные. Мы же не знаем в каком виде там числа в строку вписаны. Сумеет ли их движок корректно в числа преобразовать? Может там форматированные числа типа "7'436.12"? А может там в строке более одного числа через разделители, не зря же когда то реквизиты сделали все таки строками. Не видя базы сложно сказать, поэтому я бы так смело на движок не полагался в этой задачке
15.07.2010
10:11
#20
> Если просто сменить тип реквизита на числовой, то можно потерять данные. Мы же не знаем в каком виде там числа в строку вписаны. Сумеет ли их движок корректно в числа преобразовать? Может там форматированные числа типа "7'436.12"? А может там в строке более одного числа через разделители, не зря же когда то реквизиты сделали все таки строками. Не видя базы сложно сказать, поэтому я бы так смело на движок не полагался в этой задачке
какие проблемы заменить строку "7'436.12" на строку "7436.12" ?
какие проблемы заменить строку "7'436.12" на строку "7436.12" ?
Читают тему
(гостей: 1)