Форум OlegON > Программы и оборудование для автоматизации торговли > Системы автоматизации торговли > Бэк-офисы платформы 1С

Ошибка деления на 0 при расчете себестоимости : Бэк-офисы платформы 1С

19.03.2024 14:15


07.03.2017 14:55
Tigra_N
 
Доброе время суток.
Установили Розница 2.1.9.12 (сделаны некоторые изменения в конфигурации). Магазин работал некоторое время без проблем, был настроен автоматический расчет себестоимости. Автоматический расчет по разным причинам не рассчитывался, приходилось создавать документ расчета вручную. С 1-ого декабря прошлого года при создании документа расчета как вручную, так и регламентным заданием появляется ошибка (см. рис).
Пробовал найти причину ошибки с помощью отладчика и выяснил, что ошибка возникает при исполнении запроса в общем модуле ЗапасыСервер в функции ПоправкаПоСборкамТоваров.
В интернете читал, что проблему можно найти с помощью обработки Консоль Запросов, но не умею пока пользоваться чудом).
Подскажите как быть? куда копать?
Миниатюры
Нажмите на изображение для увеличения
Название: Error_RT_21.jpg
Просмотров: 395
Размер:	142.8 Кб
ID:	8245  
07.03.2017 17:58
KirillHome
 
В идеале - действительно копать в сторону отладчика и

То есть с помощью отладчика мы видим текст запроса (а зачастую - и параметры).
А с помощью консоли запросов - смотрим, а что у нас на самом деле происходит.

Можно попробовать бросить запрос сюда (если он не на СКД - то так даже проще будет).
09.03.2017 12:14
Tigra_N
 
Опытным путем, т.е. выпытыванием пользователей выяснил, что последний расчет себестоимости проводился вручную и с изменением даты и времени на сервере. Изменили дату и время на последний день прошлого месяца и провели документ расчета себестоимости. После этого и возникла проблема.
Вот текст запроса:
Запрос = Новый Запрос;
Код:
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
	Запрос.УстановитьПараметр("ТаблицаПриемник", ТаблицаПриемник);
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	РезультатКомплект.Магазин,
	|	РезультатКомплект.Номенклатура,
	|	РезультатКомплект.Характеристика,
	|	РезультатКомплект.КоличествоКомплектов КАК КоличествоКомплектов,
	|	РезультатКомплект.Сумма
	|ПОМЕСТИТЬ РезультатКомплект
	|ИЗ
	|	&ТаблицаПриемник КАК РезультатКомплект
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	СебестоимостьСоСборкой.Магазин,
	|	СебестоимостьСоСборкой.Номенклатура,
	|	СебестоимостьСоСборкой.Характеристика,
	|	СУММА(СебестоимостьСоСборкой.КоличествоПеремещение) КАК КоличествоПеремещение,
	|	СУММА(СебестоимостьСоСборкой.Количество) КАК Количество,
	|	СУММА(СебестоимостьСоСборкой.СуммаОборот) КАК СуммаОборот,
	|	СУММА(СебестоимостьСоСборкой.СуммаОборот) / СУММА(СебестоимостьСоСборкой.Количество) КАК Стоимость
	|ИЗ
	|	(ВЫБРАТЬ
	|		СебестоимостьПоступлений.Магазин КАК Магазин,
	|		СебестоимостьПоступлений.Номенклатура КАК Номенклатура,
	|		СебестоимостьПоступлений.Характеристика КАК Характеристика,
	|		СебестоимостьПоступлений.КоличествоПеремещение КАК КоличествоПеремещение,
	|		СебестоимостьПоступлений.Количество КАК Количество,
	|		СебестоимостьПоступлений.СуммаОборот КАК СуммаОборот
	|	ИЗ
	|		СебестоимостьПоступлений КАК СебестоимостьПоступлений
	|	
	|	ОБЪЕДИНИТЬ ВСЕ
	|	
	|	ВЫБРАТЬ
	|		РезультатКомплект.Магазин,
	|		РезультатКомплект.Номенклатура,
	|		РезультатКомплект.Характеристика,
	|		0,
	|		МАКСИМУМ(РезультатКомплект.КоличествоКомплектов),
	|		СУММА(РезультатКомплект.Сумма)
	|	ИЗ
	|		РезультатКомплект КАК РезультатКомплект
	|	
	|	СГРУППИРОВАТЬ ПО
	|		РезультатКомплект.Номенклатура,
	|		РезультатКомплект.Характеристика,
	|		РезультатКомплект.Магазин
	|) КАК СебестоимостьСоСборкой
	|
	|СГРУППИРОВАТЬ ПО
	|	СебестоимостьСоСборкой.Магазин,
	|	СебестоимостьСоСборкой.Характеристика,
	|	СебестоимостьСоСборкой.Номенклатура";
	
	Результат = Запрос.Выполнить().Выгрузить();
	Возврат Результат;
09.03.2017 13:15
Shift
 
Цитата:
СУММА(СебестоимостьСоСборкой.СуммаОборот) / СУММА(СебестоимостьСоСборкой.Количество) КАК Стоимость
Возможно количество 0, вот и падает.
Если Это так, то можно попробовать:
Цитата:
"ВЫБРАТЬ
| РезультатКомплект.Магазин,
| РезультатКомплект.Номенклатура,
| РезультатКомплект.Характеристика,
| РезультатКомплект.КоличествоКомплектов КАК КоличествоКомплектов,
| РезультатКомплект.Сумма
|ПОМЕСТИТЬ РезультатКомплект
|ИЗ
| &ТаблицаПриемник КАК РезультатКомплект
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| СебестоимостьСоСборкой.Магазин,
| СебестоимостьСоСборкой.Номенклатура,
| СебестоимостьСоСборкой.Характеристика,
| СУММА(СебестоимостьСоСборкой.КоличествоПеремещение) КАК КоличествоПеремещение,
| СУММА(СебестоимостьСоСборкой.Количество) КАК Количество,
| СУММА(СебестоимостьСоСборкой.СуммаОборот) КАК СуммаОборот
| //СУММА(СебестоимостьСоСборкой.СуммаОборот) / СУММА(СебестоимостьСоСборкой.Количество) КАК Стоимость
| ПОМЕСТИТЬ вт
|ИЗ
| (ВЫБРАТЬ
| СебестоимостьПоступлений.Магазин КАК Магазин,
| СебестоимостьПоступлений.Номенклатура КАК Номенклатура,
| СебестоимостьПоступлений.Характеристика КАК Характеристика,
| СебестоимостьПоступлений.КоличествоПеремещение КАК КоличествоПеремещение,
| СебестоимостьПоступлений.Количество КАК Количество,
| СебестоимостьПоступлений.СуммаОборот КАК СуммаОборот
| ИЗ
| СебестоимостьПоступлений КАК СебестоимостьПоступлений
|
| ОБЪЕДИНИТЬ ВСЕ
|
| ВЫБРАТЬ
| РезультатКомплект.Магазин,
| РезультатКомплект.Номенклатура,
| РезультатКомплект.Характеристика,
| 0,
| МАКСИМУМ(РезультатКомплект.КоличествоКомплектов),
| СУММА(РезультатКомплект.Сумма)
| ИЗ
| РезультатКомплект КАК РезультатКомплект
|
| СГРУППИРОВАТЬ ПО
| РезультатКомплект.Номенклатура,
| РезультатКомплект.Характеристика,
| РезультатКомплект.Магазин
|) КАК СебестоимостьСоСборкой
|
|СГРУППИРОВАТЬ ПО
| СебестоимостьСоСборкой.Магазин,
| СебестоимостьСоСборкой.Характеристика,
| СебестоимостьСоСборкой.Номенклатура
|;
|ВЫБРАТЬ
| Магазин, Номенклатура, Характеристика,КоличествоПеремещение,Количество,СуммаОборот,
| ВЫБОР КОГДА Количество<>0 ТОГДА СуммаОборот/Количество ИНАЧЕ СуммаОборот КАК Стоимость
| ИЗ вт";
09.03.2017 13:32
Tigra_N
 
Цитата:
Shift | //СУММА(СебестоимостьСоСборкой.СуммаОборот) / СУММА(СебестоимостьСоСборкой.Количество) КАК Стоимость
я пробовал вместо деления сделать операцию умножения, в итоге в документ загружаются позиции номенклатуры с нулевой себестоимостью.
Миниатюры
Нажмите на изображение для увеличения
Название: Error_RT_21.png
Просмотров: 325
Размер:	78.8 Кб
ID:	8248  
09.03.2017 13:36
Tigra_N
 
Цитата:
Shift |ВЫБРАТЬ
| Магазин, Номенклатура, Характеристика,КоличествоПеремещение,Количество,СуммаОборот,
| ВЫБОР КОГДА Количество<>0 ТОГДА СуммаОборот/Количество ИНАЧЕ СуммаОборот КАК Стоимость
| ИЗ вт";
я попробовал ваш запрос, но мне выдается ошибка см. рис
Миниатюры
Нажмите на изображение для увеличения
Название: Error_RT_21.png
Просмотров: 326
Размер:	16.1 Кб
ID:	8249  
09.03.2017 13:38
Tigra_N
 
думаю проблема кроется не в количестве, а в том, что документы были проведены задним числом.
я писал выше:

Цитата:
Tigra_N последний расчет себестоимости проводился вручную и с изменением даты и времени на сервере. Изменили дату и время на последний день прошлого месяца и провели документ расчета себестоимости
09.03.2017 14:49
KirillHome
 
Цитата:
Tigra_N Опытным путем, т.е. выпытыванием пользователей выяснил, что последний расчет себестоимости проводился вручную и с изменением даты и времени на сервере. Изменили дату и время на последний день прошлого месяца и провели документ расчета себестоимости. После этого и возникла проблема.
Вот текст запроса...
Поменять запрос на запрос с проверкой деления на 0
Код:
	Запрос = Новый Запрос;
	Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
	Запрос.УстановитьПараметр("ТаблицаПриемник", ТаблицаПриемник);
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	РезультатКомплект.Магазин,
	|	РезультатКомплект.Номенклатура,
	|	РезультатКомплект.Характеристика,
	|	РезультатКомплект.КоличествоКомплектов КАК КоличествоКомплектов,
	|	РезультатКомплект.Сумма
	|ПОМЕСТИТЬ РезультатКомплект
	|ИЗ
	|	&ТаблицаПриемник КАК РезультатКомплект
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	СебестоимостьСоСборкой.Магазин,
	|	СебестоимостьСоСборкой.Номенклатура,
	|	СебестоимостьСоСборкой.Характеристика,
	|	СУММА(СебестоимостьСоСборкой.КоличествоПеремещение) КАК КоличествоПеремещение,
	|	СУММА(СебестоимостьСоСборкой.Количество) КАК Количество,
	|	СУММА(СебестоимостьСоСборкой.СуммаОборот) КАК СуммаОборот,
	|	ВЫБОР КОГДА СУММА(СебестоимостьСоСборкой.Количество) <> 0 ТОГДА
	|		СУММА(СебестоимостьСоСборкой.СуммаОборот) / СУММА(СебестоимостьСоСборкой.Количество)
	|	ИНАЧЕ 0 КАК Стоимость
	|ИЗ
	|	(ВЫБРАТЬ
	|		СебестоимостьПоступлений.Магазин КАК Магазин,
	|		СебестоимостьПоступлений.Номенклатура КАК Номенклатура,
	|		СебестоимостьПоступлений.Характеристика КАК Характеристика,
	|		СебестоимостьПоступлений.КоличествоПеремещение КАК КоличествоПеремещение,
	|		СебестоимостьПоступлений.Количество КАК Количество,
	|		СебестоимостьПоступлений.СуммаОборот КАК СуммаОборот
	|	ИЗ
	|		СебестоимостьПоступлений КАК СебестоимостьПоступлений
	|	
	|	ОБЪЕДИНИТЬ ВСЕ
	|	
	|	ВЫБРАТЬ
	|		РезультатКомплект.Магазин,
	|		РезультатКомплект.Номенклатура,
	|		РезультатКомплект.Характеристика,
	|		0,
	|		МАКСИМУМ(РезультатКомплект.КоличествоКомплектов),
	|		СУММА(РезультатКомплект.Сумма)
	|	ИЗ
	|		РезультатКомплект КАК РезультатКомплект
	|	
	|	СГРУППИРОВАТЬ ПО
	|		РезультатКомплект.Номенклатура,
	|		РезультатКомплект.Характеристика,
	|		РезультатКомплект.Магазин
	|) КАК СебестоимостьСоСборкой
	|
	|СГРУППИРОВАТЬ ПО
	|	СебестоимостьСоСборкой.Магазин,
	|	СебестоимостьСоСборкой.Характеристика,
	|	СебестоимостьСоСборкой.Номенклатура";
	
	Результат = Запрос.Выполнить().Выгрузить();
	Возврат Результат;
09.03.2017 14:51
KirillHome
 
И ещё - в отладчике имеет смысл посмотреть на содержимое таблицы ТаблицаПриемник
09.03.2017 16:12
Shift
 
По поводу ошибки, перед "КАК Стоимость" забыл "КОНЕЦ" поставить, должно быть: "КОНЕЦ КАК Стоимость".
Часовой пояс GMT +3, время: 14:15.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.