16.03.2017 18:42
Dim
 
не в том месте стоит точка останова? надо смотреть после выгрузки результата запроса в таблицу
16.03.2017 19:59
Tigra_N
 
Код:
Код:
Функция ПоправкаПоСборкамТоваров(СтруктураПериод, МенеджерВременныхТаблиц, НастройкаСпособаУчета)
	
	ТаблицаПриемник = Новый ТаблицаЗначений;
	ТаблицаПриемник.Колонки.Добавить("Магазин", Новый ОписаниеТипов("СправочникСсылка.Магазины"));
	ТаблицаПриемник.Колонки.Добавить("Номенклатура", Новый ОписаниеТипов("СправочникСсылка.Номенклатура"));
	ТаблицаПриемник.Колонки.Добавить("Характеристика", Новый ОписаниеТипов("СправочникСсылка.ХарактеристикиНоменклатуры"));
	ТаблицаПриемник.Колонки.Добавить("КоличествоКомплектов", ОбщегоНазначенияРТКлиентСервер.ПолучитьОписаниеТиповЧисла(15, 3));
	ТаблицаПриемник.Колонки.Добавить("Сумма", ОбщегоНазначенияРТКлиентСервер.ПолучитьОписаниеТиповЧисла(15, 2));
	
	Запрос = Новый Запрос;
	Запрос.Текст =
	"ВЫБРАТЬ
	|	СборкаТоваров.Ссылка,
	|	СборкаТоваров.ВидОперации,
	|	СборкаТоваров.Магазин,
	|	СборкаТоваров.Дата КАК Период
	|ИЗ
	|	Документ.СборкаТоваров КАК СборкаТоваров
	|ГДЕ
	|	СборкаТоваров.Проведен
	|	И СборкаТоваров.Дата МЕЖДУ &НачалоПериода И &КонецПериода
	|";
	
	Запрос.УстановитьПараметр("КонецПериода", СтруктураПериод.КонецПериода);
	Запрос.УстановитьПараметр("НачалоПериода", СтруктураПериод.НачалоПериода);
	
	РезультатЗапроса = Запрос.Выполнить();
	Выборка = РезультатЗапроса.Выбрать();
	
	Пока Выборка.Следующий() Цикл
		
		// Сборка из комплектующих
		Если Выборка.ВидОперации = Перечисления.ВидыОперацийКомплектацияНоменклатуры.Комплектация Тогда
			
			Запрос = Новый Запрос;
			Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
			Запрос.Текст = 
			"ВЫБРАТЬ
			|	СборкаТоваровТовары.Ссылка.Магазин,
			|	СборкаТоваровТовары.Ссылка.Номенклатура КАК Номенклатура,
			|	СборкаТоваровТовары.Ссылка.Характеристика КАК Характеристика,
			|	СборкаТоваровТовары.Ссылка.Количество КАК КоличествоКомплектов,
			|	СборкаТоваровТовары.Номенклатура КАК НоменклатураКомплектующая,
			|	СборкаТоваровТовары.Характеристика КАК ХарактеристикаКомплектующая,
			|	СборкаТоваровТовары.Количество
			|ПОМЕСТИТЬ Комплектующие
			|ИЗ
			|	Документ.СборкаТоваров.Товары КАК СборкаТоваровТовары
			|ГДЕ
			|	СборкаТоваровТовары.Ссылка = &Ссылка
			|	И НЕ СборкаТоваровТовары.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Услуга)
			|;
			|
			|////////////////////////////////////////////////////////////////////////////////
			|ВЫБРАТЬ
			|	Комплектующие.Магазин,
			|	Комплектующие.Номенклатура,
			|	Комплектующие.Характеристика,
			|	Комплектующие.КоличествоКомплектов,
			|	Комплектующие.НоменклатураКомплектующая,
			|	Комплектующие.ХарактеристикаКомплектующая,
			|	Комплектующие.Количество,
			|	0 КАК Цена,
			|	Комплектующие.Количество * ЕСТЬNULL(СебестоимостьПоступлений.Стоимость, 0) КАК Сумма,
			|	ВЫБОР
			|		КОГДА Себестоимость.Период ЕСТЬ НЕ NULL 
			|				И СебестоимостьПустойМагазин.Период ЕСТЬ НЕ NULL 
			|			ТОГДА ВЫБОР
			|					КОГДА Себестоимость.Период >= СебестоимостьПустойМагазин.Период
			|						ТОГДА Себестоимость.Цена
			|					ИНАЧЕ СебестоимостьПустойМагазин.Цена
			|				КОНЕЦ
			|		ИНАЧЕ ВЫБОР
			|				КОГДА Себестоимость.Период ЕСТЬ НЕ NULL 
			|					ТОГДА Себестоимость.Цена
			|				ИНАЧЕ СебестоимостьПустойМагазин.Цена
			|			КОНЕЦ
			|	КОНЕЦ КАК СебестоимостьИзРегистра
			|ПОМЕСТИТЬ Результат
			|ИЗ
			|	Комплектующие КАК Комплектующие
			|		ЛЕВОЕ СОЕДИНЕНИЕ СебестоимостьПоступлений КАК СебестоимостьПоступлений
			|		ПО Комплектующие.Магазин = СебестоимостьПоступлений.Магазин
			|			И Комплектующие.НоменклатураКомплектующая = СебестоимостьПоступлений.Номенклатура
			|			И Комплектующие.ХарактеристикаКомплектующая = СебестоимостьПоступлений.Характеристика
			|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СебестоимостьНоменклатуры.СрезПоследних(&НачалоПериода, Магазин <> ЗНАЧЕНИЕ(Справочник.Магазины.ПустаяСсылка)) КАК Себестоимость
			|		ПО Комплектующие.Магазин = Себестоимость.Магазин
			|			И Комплектующие.НоменклатураКомплектующая = Себестоимость.Номенклатура
			|			И Комплектующие.ХарактеристикаКомплектующая = Себестоимость.Характеристика
			|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СебестоимостьНоменклатуры.СрезПоследних(&НачалоПериода, Магазин = ЗНАЧЕНИЕ(Справочник.Магазины.ПустаяСсылка)) КАК СебестоимостьПустойМагазин
			|		ПО Комплектующие.НоменклатураКомплектующая = СебестоимостьПустойМагазин.Номенклатура
			|			И Комплектующие.ХарактеристикаКомплектующая = СебестоимостьПустойМагазин.Характеристика
			|;
			|
			|////////////////////////////////////////////////////////////////////////////////
			|ВЫБРАТЬ
			|	Результат.Магазин,
			|	Результат.Номенклатура,
			|	Результат.Характеристика,
			|	Результат.КоличествоКомплектов,
			|	Результат.НоменклатураКомплектующая,
			|	Результат.ХарактеристикаКомплектующая,
			|	Результат.Количество,
			|	Результат.Цена,
			|	ВЫБОР
			|		КОГДА Результат.Сумма = 0
			|			ТОГДА Результат.Количество * Результат.СебестоимостьИзРегистра
			|		ИНАЧЕ Результат.Сумма
			|	КОНЕЦ КАК Сумма
			|ИЗ
			|	Результат КАК Результат
			|;
			|
			|////////////////////////////////////////////////////////////////////////////////
			|ВЫБРАТЬ
			|	ТаблицаТовары.Номенклатура КАК Номенклатура,
			|	ТаблицаТовары.Характеристика КАК Характеристика,
			|	ТаблицаТовары.Количество КАК Количество
			|ПОМЕСТИТЬ Услуги
			|ИЗ
			|	Документ.СборкаТоваров.Товары КАК ТаблицаТовары
			|ГДЕ
			|	ТаблицаТовары.Ссылка = &Ссылка
			|	И ТаблицаТовары.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Услуга)
			|;
			|
			|////////////////////////////////////////////////////////////////////////////////
			|ВЫБРАТЬ
			|	ЕСТЬNULL(Себестоимость.Номенклатура, СебестоимостьПустойМагазин.Номенклатура) КАК Номенклатура,
			|	ЕСТЬNULL(Себестоимость.Характеристика, СебестоимостьПустойМагазин.Характеристика) КАК Характеристика,
			|	ВЫБОР
			|		КОГДА Себестоимость.Период ЕСТЬ НЕ NULL 
			|				И СебестоимостьПустойМагазин.Период ЕСТЬ НЕ NULL 
			|			ТОГДА ВЫБОР
			|					КОГДА Себестоимость.Период >= СебестоимостьПустойМагазин.Период
			|						ТОГДА Себестоимость.Цена
			|					ИНАЧЕ СебестоимостьПустойМагазин.Цена
			|				КОНЕЦ
			|		ИНАЧЕ ВЫБОР
			|				КОГДА Себестоимость.Период ЕСТЬ НЕ NULL 
			|					ТОГДА Себестоимость.Цена
			|				ИНАЧЕ СебестоимостьПустойМагазин.Цена
			|			КОНЕЦ
			|	КОНЕЦ КАК Себестоимость
			|ПОМЕСТИТЬ СтоимостьУслуг
			|ИЗ
			|	РегистрСведений.СебестоимостьНоменклатуры.СрезПоследних(
			|			&Период,
			|			Магазин = &Магазин
			|				И НЕ Регистратор = &Ссылка
			|				И (Номенклатура, Характеристика) В
			|					(ВЫБРАТЬ РАЗЛИЧНЫЕ
			|						Услуги.Номенклатура,
			|						Услуги.Характеристика
			|					ИЗ
			|						Услуги КАК Услуги)) КАК Себестоимость
			|		ПОЛНОЕ СОЕДИНЕНИЕ РегистрСведений.СебестоимостьНоменклатуры.СрезПоследних(
			|				&Период,
			|				Магазин = ЗНАЧЕНИЕ(Справочник.Магазины.ПустаяСсылка)
			|					И НЕ Регистратор = &Ссылка
			|					И (Номенклатура, Характеристика) В
			|						(ВЫБРАТЬ РАЗЛИЧНЫЕ
			|							Услуги.Номенклатура,
			|							Услуги.Характеристика
			|						ИЗ
			|							Услуги КАК Услуги)) КАК СебестоимостьПустойМагазин
			|		ПО Себестоимость.Номенклатура = СебестоимостьПустойМагазин.Номенклатура
			|			И Себестоимость.Характеристика = СебестоимостьПустойМагазин.Характеристика
			|;
			|
			|////////////////////////////////////////////////////////////////////////////////
			|ВЫБРАТЬ
			|	Услуги.Номенклатура КАК Услуга,
			|	ЕСТЬNULL(Услуги.Количество, 0) * СтоимостьУслуг.Себестоимость КАК Сумма
			|ИЗ
			|	Услуги КАК Услуги
			|		ЛЕВОЕ СОЕДИНЕНИЕ СтоимостьУслуг КАК СтоимостьУслуг
			|		ПО Услуги.Номенклатура = СтоимостьУслуг.Номенклатура
			|			И Услуги.Характеристика = СтоимостьУслуг.Характеристика
			|;
			|
			|////////////////////////////////////////////////////////////////////////////////
			|УНИЧТОЖИТЬ Комплектующие
			|;
			|
			|////////////////////////////////////////////////////////////////////////////////
			|УНИЧТОЖИТЬ Результат
			|;
			|
			|////////////////////////////////////////////////////////////////////////////////
			|УНИЧТОЖИТЬ СтоимостьУслуг
			|;
			|
			|////////////////////////////////////////////////////////////////////////////////
			|УНИЧТОЖИТЬ Услуги";
			
			Запрос.УстановитьПараметр("Ссылка", Выборка.Ссылка);
			Запрос.УстановитьПараметр("Магазин", Выборка.Магазин);
			Запрос.УстановитьПараметр("Период", Выборка.Период);
			Запрос.УстановитьПараметр("НачалоПериода", СтруктураПериод.НачалоПериода); 
			
			
			РезультатЗапроса = Запрос.ВыполнитьПакет();
			РезультатКомплект = РезультатЗапроса[2].Выгрузить();
			РезультатУслуги = РезультатЗапроса[5];
			
			Если НЕ РезультатУслуги.Пустой() И НастройкаСпособаУчета.РаспределятьСтоимостьУслуг Тогда
				
				РаспределитьУслугиНаСебестоимость(РезультатУслуги.Выгрузить(), НастройкаСпособаУчета.ПравилоРаспределения, РезультатКомплект, Перечисления.СпособыУчетаСебестоимости.АвтономныйУчетСредняяВзвешенная);
				
				Если ТаблицаПриемник = Неопределено Тогда
					ТаблицаПриемник = РезультатКомплект;
				Иначе
					ОбщегоНазначенияРТ.ЗагрузитьВТаблицуЗначений(РезультатКомплект, ТаблицаПриемник, Ложь);
				КонецЕсли;
			Иначе
				
				Если ТаблицаПриемник = Неопределено Тогда
					ТаблицаПриемник = РезультатКомплект;
				Иначе
					ОбщегоНазначенияРТ.ЗагрузитьВТаблицуЗначений(РезультатКомплект, ТаблицаПриемник, Ложь);
				КонецЕсли;
				
			КонецЕсли;
			
		Иначе // Разборка на комплектующие
			
			Запрос = Новый Запрос;
			Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
			Запрос.Текст = 
			"ВЫБРАТЬ
			|	СборкаТоваров.Магазин,
			|	СборкаТоваров.Номенклатура,
			|	СборкаТоваров.Характеристика,
			|	СборкаТоваров.Количество
			|ПОМЕСТИТЬ Шапка
			|ИЗ
			|	Документ.СборкаТоваров КАК СборкаТоваров
			|ГДЕ
			|	СборкаТоваров.Ссылка = &Ссылка
			|;
			|
			|////////////////////////////////////////////////////////////////////////////////
			|ВЫБРАТЬ
			|	Шапка.Номенклатура,
			|	Шапка.Характеристика,
			|	Шапка.Количество,
			|	ЕСТЬNULL(СебестоимостьПоступлений.Стоимость, 0) КАК Себестоимость
			|ИЗ
			|	Шапка КАК Шапка
			|		ЛЕВОЕ СОЕДИНЕНИЕ СебестоимостьПоступлений КАК СебестоимостьПоступлений
			|		ПО Шапка.Магазин = СебестоимостьПоступлений.Магазин
			|			И Шапка.Номенклатура = СебестоимостьПоступлений.Номенклатура
			|			И Шапка.Характеристика = СебестоимостьПоступлений.Характеристика
			|;
			|
			|////////////////////////////////////////////////////////////////////////////////
			|ВЫБРАТЬ
			|	СборкаТоваровТовары.Ссылка.Магазин КАК Магазин,
			|	СборкаТоваровТовары.Номенклатура КАК Номенклатура,
			|	СборкаТоваровТовары.Характеристика КАК Характеристика,
			|	СборкаТоваровТовары.ДоляСтоимости,
			|	СборкаТоваровТовары.Количество КАК Количество,
			|	0 КАК Цена,
			|	0 КАК Сумма,
			|	СборкаТоваровТовары.Ссылка.Номенклатура КАК НоменклатураКомплектующая,
			|	СборкаТоваровТовары.Ссылка.Характеристика КАК ХарактеристикаКомплектующая,
			|	СборкаТоваровТовары.Количество КАК КоличествоКомплектов
			|ИЗ
			|	Документ.СборкаТоваров.Товары КАК СборкаТоваровТовары
			|ГДЕ
			|	СборкаТоваровТовары.Ссылка = &Ссылка
			|	И НЕ СборкаТоваровТовары.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Услуга)
			|;
			|
			|////////////////////////////////////////////////////////////////////////////////
			|ВЫБРАТЬ
			|	ТаблицаТовары.Номенклатура КАК Номенклатура,
			|	ТаблицаТовары.Характеристика КАК Характеристика,
			|	ТаблицаТовары.Количество КАК Количество
			|ПОМЕСТИТЬ Услуги
			|ИЗ
			|	Документ.СборкаТоваров.Товары КАК ТаблицаТовары
			|ГДЕ
			|	ТаблицаТовары.Ссылка = &Ссылка
			|	И ТаблицаТовары.Номенклатура.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Услуга)
			|;
			|
			|////////////////////////////////////////////////////////////////////////////////
			|ВЫБРАТЬ
			|	ЕСТЬNULL(Себестоимость.Номенклатура, СебестоимостьПустойМагазин.Номенклатура) КАК Номенклатура,
			|	ЕСТЬNULL(Себестоимость.Характеристика, СебестоимостьПустойМагазин.Характеристика) КАК Характеристика,
			|	ВЫБОР
			|		КОГДА Себестоимость.Период ЕСТЬ НЕ NULL 
			|				И СебестоимостьПустойМагазин.Период ЕСТЬ НЕ NULL 
			|			ТОГДА ВЫБОР
			|					КОГДА Себестоимость.Период >= СебестоимостьПустойМагазин.Период
			|						ТОГДА Себестоимость.Цена
			|					ИНАЧЕ СебестоимостьПустойМагазин.Цена
			|				КОНЕЦ
			|		ИНАЧЕ ВЫБОР
			|				КОГДА Себестоимость.Период ЕСТЬ НЕ NULL 
			|					ТОГДА Себестоимость.Цена
			|				ИНАЧЕ СебестоимостьПустойМагазин.Цена
			|			КОНЕЦ
			|	КОНЕЦ КАК Себестоимость
			|ПОМЕСТИТЬ СтоимостьУслуг
			|ИЗ
			|	РегистрСведений.СебестоимостьНоменклатуры.СрезПоследних(
			|			&Период,
			|			Магазин = &Магазин
			|				И НЕ Регистратор = &Ссылка
			|				И (Номенклатура, Характеристика) В
			|					(ВЫБРАТЬ РАЗЛИЧНЫЕ
			|						Услуги.Номенклатура,
			|						Услуги.Характеристика
			|					ИЗ
			|						Услуги КАК Услуги)) КАК Себестоимость
			|		ПОЛНОЕ СОЕДИНЕНИЕ РегистрСведений.СебестоимостьНоменклатуры.СрезПоследних(
			|				&Период,
			|				Магазин = ЗНАЧЕНИЕ(Справочник.Магазины.ПустаяСсылка)
			|					И НЕ Регистратор = &Ссылка
			|					И (Номенклатура, Характеристика) В
			|						(ВЫБРАТЬ РАЗЛИЧНЫЕ
			|							Услуги.Номенклатура,
			|							Услуги.Характеристика
			|						ИЗ
			|							Услуги КАК Услуги)) КАК СебестоимостьПустойМагазин
			|		ПО Себестоимость.Номенклатура = СебестоимостьПустойМагазин.Номенклатура
			|			И Себестоимость.Характеристика = СебестоимостьПустойМагазин.Характеристика
			|;
			|
			|////////////////////////////////////////////////////////////////////////////////
			|ВЫБРАТЬ
			|	Услуги.Номенклатура КАК Услуга,
			|	ЕСТЬNULL(Услуги.Количество, 0) * СтоимостьУслуг.Себестоимость КАК Сумма
			|ИЗ
			|	Услуги КАК Услуги
			|		ЛЕВОЕ СОЕДИНЕНИЕ СтоимостьУслуг КАК СтоимостьУслуг
			|		ПО Услуги.Номенклатура = СтоимостьУслуг.Номенклатура
			|			И Услуги.Характеристика = СтоимостьУслуг.Характеристика
			|;
			|
			|////////////////////////////////////////////////////////////////////////////////
			|УНИЧТОЖИТЬ Шапка
			|;
			|////////////////////////////////////////////////////////////////////////////////
			|УНИЧТОЖИТЬ СтоимостьУслуг
			|;
			|////////////////////////////////////////////////////////////////////////////////
			|УНИЧТОЖИТЬ Услуги";

			Запрос.УстановитьПараметр("Ссылка", Выборка.Ссылка);
			Запрос.УстановитьПараметр("Магазин", Выборка.Магазин);
			Запрос.УстановитьПараметр("Период", Выборка.Период);

			РезультатЗапроса = Запрос.ВыполнитьПакет();
			
			ТаблицаСтоимостьКомплекта = РезультатЗапроса[1].Выгрузить();
			РезультатКомплект = РезультатЗапроса[2].Выгрузить();
			РезультатУслуги = РезультатЗапроса[5];
			
			
			РаспределитьСебестоимостьПоДолямСтоимости(ТаблицаСтоимостьКомплекта, РезультатКомплект);
			
			Если НЕ РезультатУслуги.Пустой() И НастройкаСпособаУчета.РаспределятьСтоимостьУслуг Тогда
				
				РаспределитьУслугиНаСебестоимость(РезультатУслуги.Выгрузить(), НастройкаСпособаУчета.ПравилоРаспределения,
													РезультатКомплект, Перечисления.СпособыУчетаСебестоимости.АвтономныйУчетСредняяВзвешенная);
			КонецЕсли;
			
			ОбщегоНазначенияРТ.ЗагрузитьВТаблицуЗначений(РезультатКомплект, ТаблицаПриемник, Ложь);
				
		КонецЕсли;
		
	КонецЦикла;
	
	Запрос = Новый Запрос;
	Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
	Запрос.УстановитьПараметр("ТаблицаПриемник", ТаблицаПриемник);
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	РезультатКомплект.Магазин,
	|	РезультатКомплект.Номенклатура,
	|	РезультатКомплект.Характеристика,
	|	РезультатКомплект.КоличествоКомплектов КАК КоличествоКомплектов,
	|	РезультатКомплект.Сумма
	|ПОМЕСТИТЬ РезультатКомплект
	|ИЗ
	|	&ТаблицаПриемник КАК РезультатКомплект
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	СебестоимостьСоСборкой.Магазин,
	|	СебестоимостьСоСборкой.Номенклатура,
	|	СебестоимостьСоСборкой.Характеристика,
	|	СУММА(СебестоимостьСоСборкой.КоличествоПеремещение) КАК КоличествоПеремещение,
	|	СУММА(СебестоимостьСоСборкой.Количество) КАК Количество,
	|	СУММА(СебестоимостьСоСборкой.СуммаОборот) КАК СуммаОборот,
	|	ВЫБОР КОГДА СУММА(СебестоимостьСоСборкой.Количество) <> 0 ТОГДА
	|		СУММА(СебестоимостьСоСборкой.СуммаОборот) / СУММА(СебестоимостьСоСборкой.Количество)
	|	ИНАЧЕ 0 КОНЕЦ КАК Стоимость
	|ИЗ
	|	(ВЫБРАТЬ
	|		СебестоимостьПоступлений.Магазин КАК Магазин,
	|		СебестоимостьПоступлений.Номенклатура КАК Номенклатура,
	|		СебестоимостьПоступлений.Характеристика КАК Характеристика,
	|		СебестоимостьПоступлений.КоличествоПеремещение КАК КоличествоПеремещение,
	|		СебестоимостьПоступлений.Количество КАК Количество,
	|		СебестоимостьПоступлений.СуммаОборот КАК СуммаОборот
	|	ИЗ
	|		СебестоимостьПоступлений КАК СебестоимостьПоступлений
	|	
	|	ОБЪЕДИНИТЬ ВСЕ
	|	
	|	ВЫБРАТЬ
	|		РезультатКомплект.Магазин,
	|		РезультатКомплект.Номенклатура,
	|		РезультатКомплект.Характеристика,
	|		0,
	|		МАКСИМУМ(РезультатКомплект.КоличествоКомплектов),
	|		СУММА(РезультатКомплект.Сумма)
	|	ИЗ
	|		РезультатКомплект КАК РезультатКомплект
	|	
	|	СГРУППИРОВАТЬ ПО
	|		РезультатКомплект.Номенклатура,
	|		РезультатКомплект.Характеристика,
	|		РезультатКомплект.Магазин
	|) КАК СебестоимостьСоСборкой
	|
	|СГРУППИРОВАТЬ ПО
	|	СебестоимостьСоСборкой.Магазин,
	|	СебестоимостьСоСборкой.Характеристика,
	|	СебестоимостьСоСборкой.Номенклатура";
	
	Результат = Запрос.Выполнить().Выгрузить();
	Возврат Результат;
	
КонецФункции

мне кончено стыдно за за такое сообщение, но все же ))))
16.03.2017 20:45
Dim
 
после последнего цикла ПЕРЕД последним запросом нужно поставить точку останова и посмотреть, что в таблице
17.03.2017 12:24
Tigra_N
 
Цитата:
после последнего цикла ПЕРЕД последним запросом нужно поставить точку останова и посмотреть, что в таблице
т.е. перед
Код:
КонецЦикла;
	
	Запрос = Новый Запрос;
	Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
	Запрос.УстановитьПараметр("ТаблицаПриемник", ТаблицаПриемник);
	Запрос.Текст = 
	"ВЫБРАТЬ
?
17.03.2017 13:12
Dim
 
например на этой строке

Цитата:
Запрос.УстановитьПараметр("ТаблицаПриемник", ТаблицаПриемник);
18.03.2017 11:02
Tigra_N
 
Цитата:
например на этой строке
Количество элементов: 0
таблица пустая, никаких значений
18.03.2017 11:19
Dim
 
в другом месте деления на ноль возникнуть не может. значит где-то в другой процедуре смотри. вообще отладчиком пошагово проходи
18.03.2017 11:44
KirillHome
 
Ну, хорошо, предположим, что "ТаблицаПриемник" - пустая.

Переделываем последний запрос (удаляем обращение к этой таблице)

Было так:

Код:
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	РезультатКомплект.Магазин,
	|	РезультатКомплект.Номенклатура,
	|	РезультатКомплект.Характеристика,
	|	РезультатКомплект.КоличествоКомплектов КАК КоличествоКомплектов,
	|	РезультатКомплект.Сумма
	|ПОМЕСТИТЬ РезультатКомплект
	|ИЗ
	|	&ТаблицаПриемник КАК РезультатКомплект
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	СебестоимостьСоСборкой.Магазин,
	|	СебестоимостьСоСборкой.Номенклатура,
	|	СебестоимостьСоСборкой.Характеристика,
	|	СУММА(СебестоимостьСоСборкой.КоличествоПеремещение) КАК КоличествоПеремещение,
	|	СУММА(СебестоимостьСоСборкой.Количество) КАК Количество,
	|	СУММА(СебестоимостьСоСборкой.СуммаОборот) КАК СуммаОборот,
	|	ВЫБОР КОГДА СУММА(СебестоимостьСоСборкой.Количество) <> 0 ТОГДА
	|		СУММА(СебестоимостьСоСборкой.СуммаОборот) / СУММА(СебестоимостьСоСборкой.Количество)
	|	ИНАЧЕ 0 КОНЕЦ КАК Стоимость
	|ИЗ
	|	(ВЫБРАТЬ
	|		СебестоимостьПоступлений.Магазин КАК Магазин,
	|		СебестоимостьПоступлений.Номенклатура КАК Номенклатура,
	|		СебестоимостьПоступлений.Характеристика КАК Характеристика,
	|		СебестоимостьПоступлений.КоличествоПеремещение КАК КоличествоПеремещение,
	|		СебестоимостьПоступлений.Количество КАК Количество,
	|		СебестоимостьПоступлений.СуммаОборот КАК СуммаОборот
	|	ИЗ
	|		СебестоимостьПоступлений КАК СебестоимостьПоступлений
	|	
	|	ОБЪЕДИНИТЬ ВСЕ
	|	
	|	ВЫБРАТЬ
	|		РезультатКомплект.Магазин,
	|		РезультатКомплект.Номенклатура,
	|		РезультатКомплект.Характеристика,
	|		0,
	|		МАКСИМУМ(РезультатКомплект.КоличествоКомплектов),
	|		СУММА(РезультатКомплект.Сумма)
	|	ИЗ
	|		РезультатКомплект КАК РезультатКомплект
	|	
	|	СГРУППИРОВАТЬ ПО
	|		РезультатКомплект.Номенклатура,
	|		РезультатКомплект.Характеристика,
	|		РезультатКомплект.Магазин
	|) КАК СебестоимостьСоСборкой
	|
	|СГРУППИРОВАТЬ ПО
	|	СебестоимостьСоСборкой.Магазин,
	|	СебестоимостьСоСборкой.Характеристика,
	|	СебестоимостьСоСборкой.Номенклатура";
	
	Результат = Запрос.Выполнить().Выгрузить();
	Возврат Результат;


Делаем, к примеру, так:

Код:
	Запрос = Новый Запрос;
	Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
	Запрос.УстановитьПараметр("ТаблицаПриемник", ТаблицаПриемник);
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	СебестоимостьСоСборкой.Магазин,
	|	СебестоимостьСоСборкой.Номенклатура,
	|	СебестоимостьСоСборкой.Характеристика,
	|	СУММА(СебестоимостьСоСборкой.КоличествоПеремещение) КАК КоличествоПеремещение,
	|	СУММА(СебестоимостьСоСборкой.Количество) КАК Количество,
	|	СУММА(СебестоимостьСоСборкой.СуммаОборот) КАК СуммаОборот,
	|	ВЫБОР КОГДА СУММА(СебестоимостьСоСборкой.Количество) <> 0 ТОГДА
	|		СУММА(СебестоимостьСоСборкой.СуммаОборот) / СУММА(СебестоимостьСоСборкой.Количество)
	|	ИНАЧЕ 0 КОНЕЦ КАК Стоимость
	|ИЗ
	|	(ВЫБРАТЬ
	|		СебестоимостьПоступлений.Магазин КАК Магазин,
	|		СебестоимостьПоступлений.Номенклатура КАК Номенклатура,
	|		СебестоимостьПоступлений.Характеристика КАК Характеристика,
	|		СебестоимостьПоступлений.КоличествоПеремещение КАК КоличествоПеремещение,
	|		СебестоимостьПоступлений.Количество КАК Количество,
	|		СебестоимостьПоступлений.СуммаОборот КАК СуммаОборот
	|	ИЗ
	|		СебестоимостьПоступлений КАК СебестоимостьПоступлений
	|	) КАК СебестоимостьСоСборкой
	|
	|СГРУППИРОВАТЬ ПО
	|	СебестоимостьСоСборкой.Магазин,
	|	СебестоимостьСоСборкой.Характеристика,
	|	СебестоимостьСоСборкой.Номенклатура";
	
	Результат = Запрос.Выполнить().Выгрузить();
	Возврат Результат;
18.03.2017 15:53
Tigra_N
 
в принципе, не заметил никакой разницы при изменении запроса. "ТаблицаПриемник" так же пустая.

Цитата:
в другом месте деления на ноль возникнуть не может. значит где-то в другой процедуре смотри. вообще отладчиком пошагово проходи
может я скопирую сюда весь код модуля?

KirillHome, подскажи, пожалуйста, как скрыть код под спойлер.
18.03.2017 18:07
OlegON
 
Цитата:
Tigra_N код под спойлер
расширенный режим и кнопка

вопросы по форуму задаются в соответствующем разделе

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