Деление в запросе

1. Derek777 4 20.02.20 16:26 Сейчас в теме
Добрый день.

пишу функцию в запросе:
ВТ_Данные.Вес12 / &КолвоДнейМомент * &КолвоДней / ВТ_Данные.ВесПлан

Не срабатывает деление на ВТ_Данные.ВесПлан.
По отдельности все срабатывает ВТ_Данные.Вес12 / &КолвоДнейМомент * &КолвоДней есть значение.
Вывожу отдельно ВТ_Данные.ВесПлан, так же все выводится. Пол дня уже убил.... завис на одной функции.......
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. SyachinS 20.02.20 16:28 Сейчас в теме
У вас возможно в запросе используется группировка, а операция деления производится в записи "как есть"
3. Derek777 4 20.02.20 16:30 Сейчас в теме
(2)Группировок нет

вот это деление ведь срабатывает ВТ_Данные.Вес12 / &КолвоДнейМомент * &КолвоДней
11. ben19791010 21.02.20 06:39 Сейчас в теме
(3)
&КолвоДнейМомент * &КолвоДней
это выражение может быт равно нулю?
27. Fioxoz 17.10.23 08:44 Сейчас в теме
(2)
А как быть, если используется группировка?
4. FilippovRI 73 20.02.20 16:34 Сейчас в теме
проверку на isnull добавить
dehro; Derek777; +2 Ответить
5. Derek777 4 20.02.20 16:36 Сейчас в теме
(4)Точно... по ходу надо завязывать на сегодня..........
6. Derek777 4 20.02.20 20:47 Сейчас в теме
(4)
Что то я погорячился с ответом...

написал так: ВТ_Данные.Вес12 / &КолвоДнейМомент * &КолвоДней / ЕСТЬNULL(ВТ_Данные.ВесПлан, 1)

ВТ_Данные.ВесПлан теперь всегда NULL. Рядом колонка в нее выводится нормальное значение. Но в качестве делителя никак не работает...
7. karamazoff 111 20.02.20 21:08 Сейчас в теме
может поможет скобки поставить?
( ВТ_Данные.Вес12 / &КолвоДнейМомент * &КолвоДней )/ ЕСТЬNULL(ВТ_Данные.ВесПлан, 1)
а то возможно она не понимает в какой момент 2-й раз делить...
8. Derek777 4 20.02.20 21:18 Сейчас в теме
(7) Пробовал. Он их сам убирает
9. Derek777 4 20.02.20 22:52 Сейчас в теме
Если например пишу: 1000 / ВТ_Данные.ВесПлан. Отрабатывает норм.
Бред какой то ничего не понимаю......
22. AlexO 135 22.02.20 16:33 Сейчас в теме
(9)так не-число вот наверное:
&КолвоДнейМомент
10. karamazoff 111 20.02.20 23:11 Сейчас в теме
ну, если забить на оптимизацию, сделайте этот запрос во временную таблицу с
ВТ_Данные.Вес12 / &КолвоДнейМомент * &КолвоДней
а в следующей выборке поделите полученное на
ЕСТЬNULL(ВТ_Данные.ВесПлан, 1)
12. Derek777 4 21.02.20 10:12 Сейчас в теме
(10)Пробовал.... не помогло
13. Derek777 4 21.02.20 10:24 Сейчас в теме
(12)
ВЫБРАТЬ РАЗРЕШЕННЫЕ
	Продажи.Период,
	Продажи.Регистратор,
	Продажи.НомерСтроки,
	Продажи.Активность,
	Продажи.Номенклатура,
	Продажи.Организация,
	Продажи.Контрагент,
	Продажи.Количество КАК КоличествоПрошлыГод,
	Продажи.Стоимость КАК СтоимостьПрошлыйГод,
	Продажи.Вес КАК ВесПрошлыйГод,
	Продажи.МоментВремени
ПОМЕСТИТЬ ВТ_ПрошлыйГод
ИЗ
	РегистрНакопления.Продажи КАК Продажи
ГДЕ
	Продажи.Период МЕЖДУ &ДатаНачПрошлыйГод И &ДатаКонПрошлыйГод
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
	Продажи.Период,
	Продажи.Регистратор,
	Продажи.НомерСтроки,
	Продажи.Активность,
	Продажи.Контрагент,
	Продажи.Номенклатура,
	Продажи.Организация,
	Продажи.Количество КАК КоличествоПрошлыйМес,
	Продажи.Стоимость КАК СтоимостьПрошлыйМес,
	Продажи.Вес КАК ВесПрошлыйМес,
	Продажи.МоментВремени
ПОМЕСТИТЬ ВТ_ПрошлыйМес
ИЗ
	РегистрНакопления.Продажи КАК Продажи
ГДЕ
	Продажи.Период МЕЖДУ &ДатаНачПрошлыйМес И &ДатаКонПрошлыйМес
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
	ПланПродаж.Период,
	ПланПродаж.Регистратор,
	ПланПродаж.НомерСтроки,
	ПланПродаж.Активность,
	ПланПродаж.Контрагент,
	ПланПродаж.Номенклатура,
	ПланПродаж.Организация,
	ПланПродаж.Количество КАК КоличествоПлан,
	ПланПродаж.Вес КАК ВесПлан,
	ПланПродаж.Стоимость КАК СтоимостьПлан,
	ПланПродаж.МоментВремени
ПОМЕСТИТЬ ВТ_План
ИЗ
	РегистрНакопления.ПланПродаж КАК ПланПродаж
ГДЕ
	ПланПродаж.ПериодПланирования МЕЖДУ &ДатаНачала И &ДатаОкончания
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
	Продажи.Период,
	Продажи.Регистратор,
	Продажи.НомерСтроки,
	Продажи.Активность,
	Продажи.Номенклатура,
	Продажи.Организация,
	Продажи.Контрагент,
	Продажи.Количество КАК Количество11,
	Продажи.Стоимость КАК Стоимость11,
	Продажи.Вес КАК Вес11,
	Продажи.МоментВремени
ПОМЕСТИТЬ ВТ_ТекМесяц11
ИЗ
	РегистрНакопления.Продажи КАК Продажи
ГДЕ
	Продажи.Период МЕЖДУ &ДатаНачала И КОНЕЦПЕРИОДА(ДОБАВИТЬКДАТЕ(&ДатаОкончания, ДЕНЬ, -2), ДЕНЬ)
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
	Продажи.Период,
	Продажи.Регистратор,
	Продажи.НомерСтроки,
	Продажи.Активность,
	Продажи.Контрагент,
	Продажи.Номенклатура,
	Продажи.Организация,
	Продажи.Количество КАК Количество12,
	Продажи.Стоимость КАК Стоимость12,
	Продажи.Вес КАК Вес12,
	Продажи.МоментВремени,
	Продажи.Вес / &КолвоДнейМомент * &КолвоДней КАК ВыполнениеВес
ПОМЕСТИТЬ ВТ_ТекМесяц12
ИЗ
	РегистрНакопления.Продажи КАК Продажи
ГДЕ
	Продажи.Период МЕЖДУ &ДатаНачала И КОНЕЦПЕРИОДА(ДОБАВИТЬКДАТЕ(&ДатаОкончания, ДЕНЬ, -1), ДЕНЬ)
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
	ВТ_ПрошлыйГод.Период,
	ВТ_ПрошлыйГод.Регистратор,
	ВТ_ПрошлыйГод.НомерСтроки,
	ВТ_ПрошлыйГод.Активность,
	ВТ_ПрошлыйГод.Номенклатура,
	ВТ_ПрошлыйГод.Организация,
	ВТ_ПрошлыйГод.Контрагент,
	ВТ_ПрошлыйГод.МоментВремени,
	ВТ_ПрошлыйГод.КоличествоПрошлыГод,
	ВТ_ПрошлыйГод.СтоимостьПрошлыйГод,
	ВТ_ПрошлыйГод.ВесПрошлыйГод,
	NULL КАК КоличествоПрошлыйМес,
	NULL КАК СтоимостьПрошлыйМес,
	NULL КАК ВесПрошлыйМес,
	NULL КАК КоличествоПлан,
	NULL КАК ВесПлан,
	NULL КАК СтоимостьПлан,
	NULL КАК Количество11,
	NULL КАК Стоимость11,
	NULL КАК Вес11,
	NULL КАК Количество12,
	NULL КАК Стоимость12,
	NULL КАК Вес12,
	NULL КАК ВыполнениеВес
ПОМЕСТИТЬ ВТ_Данные
ИЗ
	ВТ_ПрошлыйГод КАК ВТ_ПрошлыйГод

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	ВТ_ПрошлыйМес.Период,
	ВТ_ПрошлыйМес.Регистратор,
	ВТ_ПрошлыйМес.НомерСтроки,
	ВТ_ПрошлыйМес.Активность,
	ВТ_ПрошлыйМес.Номенклатура,
	ВТ_ПрошлыйМес.Организация,
	ВТ_ПрошлыйМес.Контрагент,
	ВТ_ПрошлыйМес.МоментВремени,
	NULL,
	NULL,
	NULL,
	ВТ_ПрошлыйМес.КоличествоПрошлыйМес,
	ВТ_ПрошлыйМес.СтоимостьПрошлыйМес,
	ВТ_ПрошлыйМес.ВесПрошлыйМес,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL
ИЗ
	ВТ_ПрошлыйМес КАК ВТ_ПрошлыйМес

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	ВТ_План.Период,
	ВТ_План.Регистратор,
	ВТ_План.НомерСтроки,
	ВТ_План.Активность,
	ВТ_План.Номенклатура,
	ВТ_План.Организация,
	ВТ_План.Контрагент,
	ВТ_План.МоментВремени,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	ВТ_План.КоличествоПлан,
	ВТ_План.ВесПлан,
	ВТ_План.СтоимостьПлан,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL
ИЗ
	ВТ_План КАК ВТ_План

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	ВТ_ТекМесяц11.Период,
	ВТ_ТекМесяц11.Регистратор,
	ВТ_ТекМесяц11.НомерСтроки,
	ВТ_ТекМесяц11.Активность,
	ВТ_ТекМесяц11.Номенклатура,
	ВТ_ТекМесяц11.Организация,
	ВТ_ТекМесяц11.Контрагент,
	ВТ_ТекМесяц11.МоментВремени,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	ВТ_ТекМесяц11.Количество11,
	ВТ_ТекМесяц11.Стоимость11,
	ВТ_ТекМесяц11.Вес11,
	NULL,
	NULL,
	NULL,
	NULL
ИЗ
	ВТ_ТекМесяц11 КАК ВТ_ТекМесяц11

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
	ВТ_ТекМесяц12.Период,
	ВТ_ТекМесяц12.Регистратор,
	ВТ_ТекМесяц12.НомерСтроки,
	ВТ_ТекМесяц12.Активность,
	ВТ_ТекМесяц12.Номенклатура,
	ВТ_ТекМесяц12.Организация,
	ВТ_ТекМесяц12.Контрагент,
	ВТ_ТекМесяц12.МоментВремени,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	NULL,
	ВТ_ТекМесяц12.Количество12,
	ВТ_ТекМесяц12.Стоимость12,
	ВТ_ТекМесяц12.Вес12,
	ВТ_ТекМесяц12.ВыполнениеВес
ИЗ
	ВТ_ТекМесяц12 КАК ВТ_ТекМесяц12
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
	ВТ_Данные.Период,
	ВТ_Данные.Регистратор,
	ВТ_Данные.НомерСтроки,
	ВТ_Данные.Активность,
	ВТ_Данные.Номенклатура,
	ВТ_Данные.Организация,
	ВТ_Данные.Контрагент,
	ВТ_Данные.МоментВремени,
	ВТ_Данные.КоличествоПрошлыГод,
	ВТ_Данные.СтоимостьПрошлыйГод,
	ВТ_Данные.ВесПрошлыйГод,
	ВТ_Данные.КоличествоПрошлыйМес,
	ВТ_Данные.СтоимостьПрошлыйМес,
	ВТ_Данные.ВесПрошлыйМес,
	ВТ_Данные.КоличествоПлан,
	ВТ_Данные.ВесПлан,
	ВТ_Данные.СтоимостьПлан,
	ВТ_Данные.Количество11,
	ВТ_Данные.Стоимость11,
	ВТ_Данные.Вес11,
	ВТ_Данные.Количество12,
	ВТ_Данные.Стоимость12,
	ВТ_Данные.Вес12,
	ЕСТЬNULL(ВТ_Данные.Вес12, 0) - ЕСТЬNULL(ВТ_Данные.Вес11, 0) КАК ОтгруженноЗаСуткиВес,
	ЕСТЬNULL(ВТ_Данные.Стоимость12, 0) - ЕСТЬNULL(ВТ_Данные.Стоимость11, 0) КАК ОтгруженноЗаСуткиСтоимость,
	(ВЫРАЗИТЬ(ВТ_Данные.ВыполнениеВес КАК ЧИСЛО(15, 2))) / ВТ_Данные.ВесПлан КАК ВыполнениеПланаВес,
	ВТ_Данные.Стоимость12 / &КолвоДнейМомент * &КолвоДней / ЕСТЬNULL(ВТ_Данные.СтоимостьПлан, 1) КАК ВыполнениеПланаСтоимость,
	ВТ_Данные.ВыполнениеВес
ИЗ
	ВТ_Данные КАК ВТ_Данные
Показать
14. Sashares 35 21.02.20 10:27 Сейчас в теме
(13)Действительно, что тут может быть не так?
Откуда же мог взяться Null?
*сарказм*
15. antz 21.02.20 10:31 Сейчас в теме
(13) Лучше в запросах в объединении ставить не null'ы, а нули. Потом это все сгруппировать и просуммировать. Потом уже умножать и делить.
16. Sashares 35 21.02.20 10:35 Сейчас в теме
(15)В запросе регистратор, номер строки и момент времени.
17. Derek777 4 21.02.20 11:08 Сейчас в теме
(16)
И так что надо сделать? Добавить 0. Сгруппировать до момента деления?
18. Sashares 35 21.02.20 11:18 Сейчас в теме
(17)Убрать из запросов поля, которые не нужны, и которые отличаются в разных запросах - регистратор, номер строки, момент времени.
Период привести к единообразию, начало месяца, там, или с какой периодичностью нужны данные.
Сгруппировать по измерениям, числовые поля просуммировать.
После этого уже делить.
Derek777; +1 Ответить
19. Derek777 4 21.02.20 11:55 Сейчас в теме
(18)Получилось....

Да и регистры разные и группировок не было... огромное спасибо..... мне таких полей еще 6 надо сделать....
20. Sashares 35 21.02.20 11:57 Сейчас в теме
23. AlexO 135 22.02.20 16:34 Сейчас в теме
(19)вы бы лучше поля проверяли, которые в операциях вычисления в запросе используете.
А так - постоянно будете получать ошибки, не здесь, так в другом месте.
21. AlexO 135 22.02.20 16:31 Сейчас в теме
у 1С нет неявных преобразований типов в запросе (только примитивы, и то - только явно указанные). У них вообще с преобразованиями все плохо. Поэтому если вместо числа - параметр (поле), попадается не числовое, возникает ошибка.
24. user1845273 19.11.22 18:03 Сейчас в теме
Одной из характеристик корабля является величина, рассчитываемая как половина куба калибра его главных орудий (mw). Определить с точностью до 2 десятичных знаков среднее значение mw для кораблей и других судов каждой страны, у которой есть сведения в базе данных. Вывести: Страна, mw.
Что-то не верно выводятся две страны
ВЫБРАТЬ
классыкораблей.Страна,
ВЫРАЗИТЬ(СРЕДНЕЕ(классыкораблей.КалибрОрудий * классыкораблей.КалибрОрудий * классыкораблей.КалибрОрудий / 2) КАК ЧИСЛО(10, 2)) КАК mw
ИЗ
Справочник.КлассыКораблей КАК классыкораблей
ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
Корабли.КлассКорабля.Страна КАК КлассКорабляСтрана
ИЗ
Справочник.Корабли КАК Корабли

СГРУППИРОВАТЬ ПО
Корабли.КлассКорабля.Страна) КАК ВложенныйЗапрос
ПО (классыкораблей.Страна = ВложенныйЗапрос.КлассКорабляСтрана)

СГРУППИРОВАТЬ ПО
классыкораблей.Страна
25. user1831019 19.11.22 18:23 Сейчас в теме
(24) Не стесняйтесь - пишите во всех темах. Нам интересно.
26. user1845273 19.11.22 18:43 Сейчас в теме
(25) случайно получилось, что тут вышло
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот