Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
25 ноя 2024, 14:58

Непонятно, что выдает запрос

Автор Михаил Демин, 25 окт 2015, 18:44

0 Пользователей и 1 гость просматривают эту тему.

Михаил Демин

Прошу сильно не пинать.... Только неделю изучаю 1с 8.2. Хочу сделать в 1с.Розница чтоб рассчитывалась  себестоимость по средней. Вот такая формула (СтараяСебестоимость*СтароеКоличество+Количество*Цена)/(СтароеКоличество+Количество)

Для получения всего количества по всем складам магазина делаю выборку

                   ВЫБРАТЬ
                   | СУММА(ТоварыНаСкладахОстатки.КоличествоОстаток) КАК КоличествоОстаток
                   |ИЗ
                   | РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
                   | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Склады КАК Склады
                   | ПО ТоварыНаСкладахОстатки.Склад = Склады.Ссылка
                   |ГДЕ
                   | Склады.Магазин = &Магазин
                   | И ТоварыНаСкладахОстатки.Номенклатура = &Номенклатура
                   | И ТоварыНаСкладахОстатки.Характеристика = &Характеристика


Если есть остаток то выборка отрабатывает хорошо, а вот если остатка нет, то выборка выдает непонятно что. И выскакивает ошибка с преобразованием типов. Что я делаю не так?

Luzer1C

Халамбалам.

Михаил Демин

Ошибка при выполнении обработчика - 'ОбработкаПроведения'
по причине:
{Документ.ОприходованиеТоваров.МодульОбъекта(105)}: Преобразование значения к типу Число не может быть выполнено
НоваяСебестоимость=(оЦена*оКоличество+СтараяСебестоимость*СтароеКоличество)/(СтароеКоличество+оКоличество);


СтароеКоличество при нулевом остатке на складах магазина - не число. И он не может его преобразовать. Получаю так
СтароеКоличество=Выборка.КоличествоОстаток;

Пробовал добавить "И КоличествоОстаток >=0" - не помогло.

vitasw

В запросе используйте конструкцию вида:
|    СУММА(ЕстьNull(ТоварыНаСкладахОстатки.КоличествоОстаток,0))

Vladimir_Sh

Цитата: Михаил Демин от 26 окт 2015, 10:44
Ошибка при выполнении обработчика - 'ОбработкаПроведения'
по причине:
{Документ.ОприходованиеТоваров.МодульОбъекта(105)}: Преобразование значения к типу Число не может быть выполнено
НоваяСебестоимость=(оЦена*оКоличество+СтараяСебестоимость*СтароеКоличество)/(СтароеКоличество+оКоличество);


СтароеКоличество при нулевом остатке на складах магазина - не число. И он не может его преобразовать. Получаю так
СтароеКоличество=Выборка.КоличествоОстаток;

Пробовал добавить "И КоличествоОстаток >=0" - не помогло.


Перепишите строку поля КоличествоОстаток в запросе вот так:
СУММА(ЕСТЬNULL(ТоварыНаСкладахОстатки.КоличествоОстаток, 0)) КАК КоличествоОстаток

Тогда поле КоличествоОстаток гарантированно в случае пустого значения будет равно 0
Добавлено: 26 окт 2015, 10:53


vitasw, прошу прощения за дубль. отвлекся не увидел что вы уже ответили.
Если я Вам помог, нажми - Спасибо!

Михаил Демин

Немного изменил запрос и все заработало. Спасибо всем.
ЕСТЬNULL(СУММА(ТоварыНаСкладахОстатки.КоличествоОстаток), 0) КАК КоличествоОстаток

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск