8.х Как добавить колонку с остатками в СправочникНоменклатура

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем acherey, 1 ноя 2009.

  1. TopicStarter Overlay
    acherey
    Offline

    acherey Опытный в 1С

    Регистрация:
    4 авг 2009
    Сообщения:
    81
    Симпатии:
    0
    Баллы:
    26
    подскажите плизз

    желательно поподробней, я новичок, и сам не разберусь

    вот только что добавил 2 колонки в справочник ( остатки, цена ) а вот как сделать чтобы в них отображались значени, не знаю

    Братцы, спасайте...

    конфигурация. 1С Розница
  2. mialord
    Offline

    mialord Модераторы Команда форума Модератор

    Регистрация:
    31 июл 2009
    Сообщения:
    5.398
    Симпатии:
    40
    Баллы:
    54
    Здраствуйте!

    Там есть Огрооооомный запрос, с уймой вложенных запросов, вам туда. В этот запрос можете добавить свои вычисления, однако я несоветовал бы так издеваться над программой, т.к. этот запрос запускается при каждой активацией строки справочника номенклатура, и если Вы некачественно встроете свои запросы, то будете нервно курить при каждой активацией позиции в справочнике. А так, если захотите, просто пройдитесь по событию ПриАктивации и обрящите то что хотите :unsure:

    Удачи!
  3. TopicStarter Overlay
    acherey
    Offline

    acherey Опытный в 1С

    Регистрация:
    4 авг 2009
    Сообщения:
    81
    Симпатии:
    0
    Баллы:
    26
    mialord
    простите, ничгео не понял, яж дурной сосвем...
    поясните детально, где какой запрос...
    буду искренне зарчно благодарен..
  4. Dmitrij
    Offline

    Dmitrij Опытный в 1С

    Регистрация:
    6 май 2008
    Сообщения:
    844
    Симпатии:
    1
    Баллы:
    26
    Точно не знаю, но может там есть кнопка отображать остатки как в УТ завтра открою посмотрю. Можно как пример взять из УТ
  5. Пеппи
    Offline

    Пеппи Опытный в 1С

    Регистрация:
    26 мар 2009
    Сообщения:
    103
    Симпатии:
    0
    Баллы:
    26
    Может легче посмотреть соответствующие отчеты, которые выводят остатки?
  6. mialord
    Offline

    mialord Модераторы Команда форума Модератор

    Регистрация:
    31 июл 2009
    Сообщения:
    5.398
    Симпатии:
    40
    Баллы:
    54
    Сами напросились, держите :unsure:

    Код:
    ТекстЗапроса = "
    |	ВЫБРАТЬ РАЗРЕШЕННЫЕ
    |		ХарактеристикиНоменклатуры.Ссылка               КАК ХарактеристикаНоменклатуры
    |		" + ?(ОтображатьСклады,", ВложенныйЗапрос.Склад КАК Склад, АдресныйСклад.МестоХранения КАК МестоХранения","") + "
    |		, ВложенныйЗапрос.КоличествоОстаток             КАК КоличествоОстаток
    |		, ВложенныйЗапрос.КоличествоСвободныйОстаток    КАК КоличествоСвободныйОстаток
    |		, ВложенныйЗапрос.КоличествоВРезерве            КАК КоличествоВРезерве
    |		, 0                                             КАК КоличествоСвободныйОстатокВЗаказахПоставщикам
    |";
    
    Если ПолучатьЦены Тогда
    ТекстЗапроса = ТекстЗапроса + "
    |	,
    |	Цены.ФлагУсловийПоставки  КАК ФлагЦены,
    |	ЕСТЬNULL(Цены.Цена, 0.00) КАК Цена,
    |	Цены.Валюта               КАК Валюта,
    |	Цены.ЕдиницаИзмерения     КАК ЕдиницаЦены,
    |	1                         КАК КурсВалюты,
    |	1                         КАК КратностьВалюты,
    |	Цены.ТипЦен               КАК ТИПЦЕН
    |";
    КонецЕсли;
    
    ТекстЗапроса = ТекстЗапроса + "
    |	ИЗ
    |	(
    |		ВЫБРАТЬ
    |			ХарактеристикиНоменклатуры.Ссылка   КАК Ссылка,
    |			ХарактеристикиНоменклатуры.Владелец КАК Владелец
    |		ИЗ
    |			Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
    |		ГДЕ
    |			ХарактеристикиНоменклатуры.Владелец = &Номенклатура
    |
    |		ОБЪЕДИНИТЬ
    |
    |		ВЫБРАТЬ
    |			ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка),
    |			&Номенклатура КАК Владелец
    |
    |		) КАК ХарактеристикиНоменклатуры
    |ЛЕВОЕ СОЕДИНЕНИЕ
    |	(ВЫБРАТЬ
    |		ВложенныйЗапрос.ХарактеристикаНоменклатуры                     КАК ХарактеристикаНоменклатуры
    |		" + ?(ОтображатьСклады,", ВложенныйЗапрос.Склад ","") + "
    |		, СУММА(ВложенныйЗапрос.ТоварыНаСкладахОстатки 
    |				+ ВложенныйЗапрос.ТоварыВРозницеОстатки 
    |				+ ВложенныйЗапрос.ТоварыВНТТОстатки)                   КАК КоличествоОстаток
    |		, СУММА(ВложенныйЗапрос.ТоварыНаСкладахОстатки
    |				+ ВложенныйЗапрос.ТоварыВРозницеОстатки
    |				+ ВложенныйЗапрос.ТоварыВНТТОстатки
    |				- ВложенныйЗапрос.ТоварыВРезервеСкладахОстатки
    |				- ВложенныйЗапрос.ТоварыКПередачеСоСкладовОстатки)     КАК КоличествоСвободныйОстаток
    |		, СУММА(ВложенныйЗапрос.ТоварыВРезервеСкладахОстатки)          КАК КоличествоВРезерве
    |	ИЗ
    |		(ВЫБРАТЬ
    |			ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры          КАК ХарактеристикаНоменклатуры
    |			, ТоварыНаСкладахОстатки.Склад                             КАК Склад
    |			, ТоварыНаСкладахОстатки.КоличествоОстаток                 КАК ТоварыНаСкладахОстатки
    |			, 0                                                        КАК ТоварыВРозницеОстатки
    |			, 0                                                        КАК ТоварыВНТТОстатки
    |			, 0                                                        КАК ТоварыВРезервеСкладахОстатки
    |			, 0                                                        КАК ТоварыКПередачеСоСкладовОстатки
    |		ИЗ
    |			РегистрНакопления.ТоварыНаСкладах.Остатки(, Номенклатура = &Номенклатура" + ОграничениеПоСкладу + ") КАК ТоварыНаСкладахОстатки
    
    |		ОБЪЕДИНИТЬ ВСЕ
    
    |		ВЫБРАТЬ
    |			ТоварыВРозницеОстатки.ХарактеристикаНоменклатуры           КАК ХарактеристикаНомнклатуры
    |			, ТоварыВРозницеОстатки.Склад                              КАК Склад
    |			, 0                                                        КАК ТоварыНаСкладахОстатки
    |			, ТоварыВРозницеОстатки.КоличествоОстаток                  КАК ТоварыВРозницеОстатки
    |			, 0                                                        КАК ТоварыВНТТОстатки
    |			, 0                                                        КАК ТоварыВРезервеСкладахОстатки
    |			, 0                                                        КАК ТоварыКПередачеСоСкладовОстатки
    |		ИЗ
    |			РегистрНакопления.ТоварыВРознице.Остатки(, Номенклатура = &Номенклатура" + ОграничениеПоСкладу + ") КАК ТоварыВРозницеОстатки
    
    |		ОБЪЕДИНИТЬ ВСЕ
    
    |		ВЫБРАТЬ
    |			ТоварыВНТТОстатки.ХарактеристикаНоменклатуры               КАК ХарактеристикаНоменклатуры
    |			, ТоварыВНТТОстатки.Склад                                  КАК Склад
    |			, 0                                                        КАК ТоварыНаСкладахОстаток
    |			, 0                                                        КАК ТоварыВРозницеОстатки
    |			, ТоварыВНТТОстатки.КоличествоОстаток                      КАК ТоварыВНТТОстатки
    |			, 0                                                        КАК ТоварыВРезервеСкладахОстатки
    |			, 0                                                        КАК ТоварыКПередачеСоСкладовОстатки
    |		ИЗ
    |			РегистрНакопления.ТоварыВНТТ.Остатки(, Номенклатура = &Номенклатура" + ОграничениеПоСкладу + ") КАК ТоварыВНТТОстатки
    
    |		ОБЪЕДИНИТЬ ВСЕ
    
    |		ВЫБРАТЬ
    |			ТоварыВРезервеСкладахОстатки.ХарактеристикаНоменклатуры    КАК ХарактеристикаНоменклатуры
    |			, ТоварыВРезервеСкладахОстатки.Склад                       КАК Склад
    |			, 0                                                        КАК ТоварыНаСкладахОстатки
    |			, 0                                                        КАК ТоварыВРозницеОстатки
    |			, 0                                                        КАК ТоварыВНТТОстатки
    |			, ТоварыВРезервеСкладахОстатки.КоличествоОстаток           КАК ТоварыВРезервеСкладахОстатки
    |			, 0                                                        КАК ТоварыКПередачеСоСкладовОстатки
    |		ИЗ
    |			РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(, Номенклатура = &Номенклатура" + ОграничениеПоСкладу + ") КАК ТоварыВРезервеСкладахОстатки
    
    |		ОБЪЕДИНИТЬ ВСЕ
    
    |		ВЫБРАТЬ
    |			ТоварыКПередачеСоСкладовОстатки.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры
    |			, ТоварыКПередачеСоСкладовОстатки.Склад                    КАК Склад
    |			, 0                                                        КАК ТоварыНаСкладахОстатки
    |			, 0                                                        КАК ТоварыВРозницеОстатки
    |			, 0                                                        КАК ТоварыВНТТОстатки
    |			, 0                                                        КАК ТоварыВРезервеСкладахОстатки
    |			, ТоварыКПередачеСоСкладовОстатки.КоличествоОстаток        КАК ТоварыКПередачеСоСкладовОстатки
    |		ИЗ
    |			РегистрНакопления.ТоварыКПередачеСоСкладов.Остатки(, Номенклатура = &Номенклатура" + ОграничениеПоСкладу + ") КАК ТоварыКПередачеСоСкладовОстатки
    
    |		) КАК ВложенныйЗапрос
    |	СГРУППИРОВАТЬ ПО ВложенныйЗапрос.ХарактеристикаНоменклатуры " + ?(ОтображатьСклады,", ВложенныйЗапрос.Склад","") + "
    |	) КАК ВложенныйЗапрос
    |ПО ХарактеристикиНоменклатуры.Ссылка = ВложенныйЗапрос.ХарактеристикаНоменклатуры
    |";
    Если ОтображатьСклады Тогда
    ОграничениеЗапросаПоСкладу = ?(НЕ ЗначениеЗаполнено(СписокСкладов), "", Символы.ПС + "И МестаХраненияНоменклатуры.Склад В (&Склады) " );
    
    ТекстЗапроса = ТекстЗапроса + "
    |	ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ 
    |	МестаХраненияНоменклатуры.МестоХранения КАК МестоХранения,
    |	МестаХраненияНоменклатуры.Склад КАК Склад,
    |	МестаХраненияНоменклатуры.Номенклатура КАК Номенклатура,
    |	МестаХраненияНоменклатуры.Приоритет КАК Приоритет
    |ИЗ
    |	РегистрСведений.МестаХраненияНоменклатуры КАК МестаХраненияНоменклатуры
    |ГДЕ
    |	МестаХраненияНоменклатуры.Номенклатура = &Номенклатура "+ ОграничениеЗапросаПоСкладу + " ) КАК АдресныйСклад
    |	ПО
    |		АдресныйСклад.Склад = ВложенныйЗапрос.Склад
    |";
    
    КонецЕсли;
    Если ПолучатьЦены Тогда
    ТекстЗапроса = ТекстЗапроса + "
    |
    |ЛЕВОЕ СОЕДИНЕНИЕ
    |(
    |ВЫБРАТЬ ЦеныНаБазовыйТип.Номенклатура,
    | 		ЦеныНаБазовыйТип.ХарактеристикаНоменклатуры,
    |		ВЫБОР	КОГДА ЦеныНаБазовыйТип.Рассчитывается
    |				ТОГДА
    |					ВЫБОР	КОГДА ЦеныНаБазовыйТип.СпособРасчета = ЗНАЧЕНИЕ(Перечисление.СпособыРасчетаЦены.ПоПроцентнойНаценкеНаБазовыйТип)
    |							ТОГДА ЕСТЬNULL(ЦеныНаБазовыйТип.Цена, 0.00) + ЕСТЬNULL(ЦеныНаБазовыйТип.Цена, 0.00) * (ЦеныНаБазовыйТип.ПроцентСкидкиНаценки /100)
    |							ИНАЧЕ ЕСТЬNULL(ЦенаПоДиапазону.Цена, 0.00)
    |					КОНЕЦ
    |				ИНАЧЕ ЕСТЬNULL(ЦеныНаБазовыйТип.Цена, 0.00)
    |		КОНЕЦ КАК Цена,
    |		ВЫБОР 	КОГДА ЦеныНаБазовыйТип.Рассчитывается
    |				ТОГДА
    |					ВЫБОР 	КОГДА ЦеныНаБазовыйТип.СпособРасчета = ЗНАЧЕНИЕ(Перечисление.СпособыРасчетаЦены.ПоПроцентнойНаценкеНаБазовыйТип)
    |							ТОГДА ЦеныНаБазовыйТип.Валюта
    |							ИНАЧЕ ЦенаПоДиапазону.Валюта
    |						КОНЕЦ
    |				ИНАЧЕ ЦеныНаБазовыйТип.Валюта
    |		КОНЕЦ КАК Валюта,
    |		ВЫБОР	КОГДА ЦеныНаБазовыйТип.Рассчитывается
    |				ТОГДА
    |					ВЫБОР	КОГДА ЦеныНаБазовыйТип.СпособРасчета = ЗНАЧЕНИЕ(Перечисление.СпособыРасчетаЦены.ПоПроцентнойНаценкеНаБазовыйТип)
    |							ТОГДА ЦеныНаБазовыйТип.ЕдиницаИзмерения
    |							ИНАЧЕ ЦенаПоДиапазону.ЕдиницаИзмерения
    |					КОНЕЦ
    |				ИНАЧЕ ЦеныНаБазовыйТип.ЕдиницаИзмерения
    |		КОНЕЦ КАК ЕдиницаИзмерения,
    |		ЛОЖЬ КАК ФлагУсловийПоставки,
    |		ЦеныНаБазовыйТип.Рассчитывается,
    |		ЦеныНаБазовыйТип.ТипЦенБазовыйДинамический КАК ТипЦен
    | ИЗ
    |(
    |	ВЫБРАТЬ
    |		НоменклатураХарактеристикаТипЦены.Номенклатура,
    |		НоменклатураХарактеристикаТипЦены.ХарактеристикаНоменклатуры,
    |		ВЫБОР 	КОГДА НоменклатураХарактеристикаТипЦены.Рассчитывается
    |				ТОГДА 	ВЫБОР 	КОГДА ЕСТЬNULL(КурсВалют.Кратность, 0.00) = 0 ИЛИ ЕСТЬNULL(КурсВалютДинамическийТип.Курс, 0.00) = 0
    |								ТОГДА 0.00
    |								ИНАЧЕ ЕСТЬNULL(ЕСТЬNULL(ЦеныНоменклатуры.Цена, ЦеныНоменклатурыПустаяХарактеристика.Цена), 0.00)
    |									  * ЕСТЬNULL(КурсВалют.Курс, 0.00)
    |									  * ЕСТЬNULL(КурсВалютДинамическийТип.Кратность, 0.00)
    |									  / КурсВалют.Кратность
    |									  / КурсВалютДинамическийТип.Курс
    |						КОНЕЦ
    |				ИНАЧЕ ЕСТЬNULL(ЦеныНоменклатуры.Цена, ЦеныНоменклатурыПустаяХарактеристика.Цена)
    |		КОНЕЦ КАК Цена,
    |		ВЫБОР 	КОГДА НоменклатураХарактеристикаТипЦены.Рассчитывается
    |				ТОГДА 	ВЫБОР 	КОГДА ЕСТЬNULL(ЦеныНоменклатурыДинамическийТип.СпособРасчетаЦены, ЦеныНоменклатурыПустаяХарактеристикаДинамическийТип.СпособРасчетаЦены) ЕСТЬ NULL
    |				                ТОГДА ТипЦенНоменклаутры.СпособРасчетаЦены
    |				                ИНАЧЕ ЕСТЬNULL(ЦеныНоменклатурыДинамическийТип.СпособРасчетаЦены, ЦеныНоменклатурыПустаяХарактеристикаДинамическийТип.СпособРасчетаЦены)
    |				        КОНЕЦ
    |				ИНАЧЕ NULL
    |		КОНЕЦ КАК СпособРасчета,
    |		ВЫБОР 	КОГДА НоменклатураХарактеристикаТипЦены.Рассчитывается
    |				ТОГДА 	ВЫБОР 	КОГДА ЕСТЬNULL(ЦеныНоменклатурыДинамическийТип.ПроцентСкидкиНаценки, ЦеныНоменклатурыПустаяХарактеристикаДинамическийТип.ПроцентСкидкиНаценки) ЕСТЬ NULL
    |				                ТОГДА ТипЦенНоменклаутры.ПроцентСкидкиНаценки
    |				                ИНАЧЕ ЕСТЬNULL(ЦеныНоменклатурыДинамическийТип.ПроцентСкидкиНаценки, ЦеныНоменклатурыПустаяХарактеристикаДинамическийТип.ПроцентСкидкиНаценки)
    |				        КОНЕЦ
    |				ИНАЧЕ NULL
    |		КОНЕЦ КАК ПроцентСкидкиНаценки,
    |		ВЫБОР 	КОГДА НоменклатураХарактеристикаТипЦены.Рассчитывается
    |				ТОГДА ЕСТЬNULL(ЕСТЬNULL(ЦеныНоменклатурыДинамическийТип.Валюта, ЦеныНоменклатурыПустаяХарактеристикаДинамическийТип.Валюта), ТипЦенНоменклаутры.ВалютаЦены)
    |				ИНАЧЕ ЕСТЬNULL(ЦеныНоменклатуры.Валюта, ЦеныНоменклатурыПустаяХарактеристика.Валюта)
    |		КОНЕЦ КАК Валюта,
    |		КурсВалютДинамическийТип.Валюта КАК ВалютаДинамическийТип,
    |		ЕСТЬNULL(ЕСТЬNULL(ЦеныНоменклатуры.ЕдиницаИзмерения, ЦеныНоменклатурыПустаяХарактеристика.ЕдиницаИзмерения), НоменклатураХарактеристикаТипЦены.ЕдиницаХраненияОстатков) КАК ЕдиницаИзмерения,
    |		НоменклатураХарактеристикаТипЦены.ТипЦен,
    |		НоменклатураХарактеристикаТипЦены.ТипЦенБазовыйДинамический,
    |		НоменклатураХарактеристикаТипЦены.Рассчитывается
    |	ИЗ
    |	(
    |		ВЫБРАТЬ
    |			НоменклатураХарактеристикаТипЦены.Номенклатура,
    |			НоменклатураХарактеристикаТипЦены.ХарактеристикаНоменклатуры,
    |			НоменклатураХарактеристикаТипЦены.ЕдиницаХраненияОстатков КАК ЕдиницаХраненияОстатков,
    |			ВЫБОР 	КОГДА СпрТипЦены.Рассчитывается
    |					ТОГДА СпрТипЦены.БазовыйТипЦен
    |					ИНАЧЕ СпрТипЦены.Ссылка
    |			КОНЕЦ КАК ТипЦен,
    |			СпрТипЦены.Ссылка КАК ТипЦенБазовыйДинамический,
    |			СпрТипЦены.Рассчитывается
    |		ИЗ
    |		(
    |			ВЫБРАТЬ НоменклатураХарактеристика.Номенклатура,
    |					НоменклатураХарактеристика.ХарактеристикаНоменклатуры,
    |					СпрНомеклатура.ЕдиницаХраненияОстатков КАК ЕдиницаХраненияОстатков,
    |					сТипыЦенНоменклатуры.Ссылка КАК ТипЦен
    |			ИЗ
    |			(
    |				ВЫБРАТЬ	
    |					Характеристики.Владелец КАК Номенклатура,
    |					Характеристики.Ссылка КАК ХарактеристикаНоменклатуры
    |				ИЗ
    |					Справочник.ХарактеристикиНоменклатуры КАК Характеристики
    |					ГДЕ Характеристики.Владелец = &Номенклатура
    |				ОБЪЕДИНИТЬ
    |				ВЫБРАТЬ 
    |						&Номенклатура КАК Номенклатура,
    |						ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка) КАК ХарактеристикаНоменклатуры
    |			) КАК НоменклатураХарактеристика
    |			ВНУТРЕННЕЕ СОЕДИНЕНИЕ
    |				Справочник.Номенклатура КАК СпрНомеклатура
    |			ПО
    |				СпрНомеклатура.Ссылка = НоменклатураХарактеристика.Номенклатура
    |			ВНУТРЕННЕЕ СОЕДИНЕНИЕ
    |				Справочник.ТипыЦенНоменклатуры КАК сТипыЦенНоменклатуры
    |			ПО ИСТИНА
    |			ГДЕ
    |				сТипыЦенНоменклатуры.Ссылка В (&ТипыЦен)
    |		) КАК НоменклатураХарактеристикаТипЦены
    |		ВНУТРЕННЕЕ СОЕДИНЕНИЕ
    |			Справочник.ТипыЦенНоменклатуры КАК СпрТипЦены
    |		ПО
    |			СпрТипЦены.Ссылка = НоменклатураХарактеристикаТипЦены.ТипЦен
    |	) КАК НоменклатураХарактеристикаТипЦены
    |	ЛЕВОЕ СОЕДИНЕНИЕ
    |		РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, Номенклатура = &Номенклатура) КАК ЦеныНоменклатуры
    |	ПО
    |		ЦеныНоменклатуры.Номенклатура = НоменклатураХарактеристикаТипЦены.Номенклатура
    |		И ЦеныНоменклатуры.ХарактеристикаНоменклатуры = НоменклатураХарактеристикаТипЦены.ХарактеристикаНоменклатуры
    |		И ЦеныНоменклатуры.ТипЦен = НоменклатураХарактеристикаТипЦены.ТипЦен
    |	ЛЕВОЕ СОЕДИНЕНИЕ
    |		РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, Номенклатура = &Номенклатура) КАК ЦеныНоменклатурыПустаяХарактеристика
    |	ПО
    |		ЦеныНоменклатурыПустаяХарактеристика.Номенклатура = НоменклатураХарактеристикаТипЦены.Номенклатура
    |		И ЦеныНоменклатурыПустаяХарактеристика.ХарактеристикаНоменклатуры = ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка)
    |		И ЦеныНоменклатурыПустаяХарактеристика.ТипЦен = НоменклатураХарактеристикаТипЦены.ТипЦен
    |	ЛЕВОЕ СОЕДИНЕНИЕ
    |		РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, Номенклатура = &Номенклатура) КАК ЦеныНоменклатурыДинамическийТип
    |	ПО
    |		ЦеныНоменклатурыДинамическийТип.Номенклатура = НоменклатураХарактеристикаТипЦены.Номенклатура
    |		И ЦеныНоменклатурыДинамическийТип.ХарактеристикаНоменклатуры = НоменклатураХарактеристикаТипЦены.ХарактеристикаНоменклатуры
    |		И ЦеныНоменклатурыДинамическийТип.ТипЦен = НоменклатураХарактеристикаТипЦены.ТипЦенБазовыйДинамический
    |	ЛЕВОЕ СОЕДИНЕНИЕ
    |		РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, Номенклатура = &Номенклатура) КАК ЦеныНоменклатурыПустаяХарактеристикаДинамическийТип
    |	ПО
    |		ЦеныНоменклатурыПустаяХарактеристикаДинамическийТип.Номенклатура = НоменклатураХарактеристикаТипЦены.Номенклатура
    |		И ЦеныНоменклатурыПустаяХарактеристикаДинамическийТип.ХарактеристикаНоменклатуры = ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка)
    |		И ЦеныНоменклатурыПустаяХарактеристикаДинамическийТип.ТипЦен = НоменклатураХарактеристикаТипЦены.ТипЦенБазовыйДинамический
    |	ЛЕВОЕ СОЕДИНЕНИЕ
    |		РегистрСведений.КурсыВалют.СрезПоследних() КАК КурсВалют
    |	ПО
    |		КурсВалют.Валюта = ЕСТЬNULL(ЦеныНоменклатуры.Валюта, ЦеныНоменклатурыПустаяХарактеристика.Валюта)
    |	ЛЕВОЕ СОЕДИНЕНИЕ
    |		Справочник.ТипыЦенНоменклатуры КАК ТипЦенНоменклаутры
    |	ПО 
    |		ТипЦенНоменклаутры.Ссылка = НоменклатураХарактеристикаТипЦены.ТипЦенБазовыйДинамический
    |	ЛЕВОЕ СОЕДИНЕНИЕ
    |		РегистрСведений.КурсыВалют.СрезПоследних() КАК КурсВалютДинамическийТип
    |	ПО
    |		КурсВалютДинамическийТип.Валюта = 	ВЫБОР 	КОГДА НоменклатураХарактеристикаТипЦены.Рассчитывается И ЕСТЬNULL(ЦеныНоменклатурыДинамическийТип.Валюта, ЦеныНоменклатурыПустаяХарактеристикаДинамическийТип.Валюта) ЕСТЬ NULL
    |													ТОГДА ТипЦенНоменклаутры.ВалютаЦены
    |													ИНАЧЕ ЕСТЬNULL(ЦеныНоменклатурыДинамическийТип.Валюта, ЦеныНоменклатурыПустаяХарактеристикаДинамическийТип.Валюта)
    |											КОНЕЦ
    |) КАК ЦеныНаБазовыйТип
    |//Динамический тип цен
    |ЛЕВОЕ СОЕДИНЕНИЕ
    |(
    |	ВЫБРАТЬ
    |	        ДинамическийТипЦен.Номенклатура
    |	      , ДинамическийТипЦен.ХарактеристикаНоменклатуры
    |	      , ДинамическийТипЦен.ДинамическийТип КАК БазовыйТипЦен
    |	      , ДинамическийТипЦен.ЕдиницаИзмерения КАК ЕдиницаИзмерения
    |	      , ЕСТЬNULL(ЦенаПоДиапазону.Цена, 0.00) КАК Цена
    |	      , ЦенаПоДиапазону.Валюта
    |	ИЗ
    |	(
    |		ВЫБРАТЬ  ЦенаДляРасчетаДиапазона.Номенклатура,
    |			ЦенаДляРасчетаДиапазона.ХарактеристикаНоменклатуры,		
    |	  		ЦенаДляРасчетаДиапазона.ДинамическийТип,
    |	  		МИНИМУМ(ЦенаПоДиапазону.Валюта) КАК Валюта,
    |	  		МИНИМУМ(ЦенаДляРасчетаДиапазона.ЕдиницаИзмерения) КАК ЕдиницаИзмерения,
    |	  		МИНИМУМ(ЦенаПоДиапазону.ВерхняяГраница) КАК Цена
    |	ИЗ
    |	(
    |		ВЫБРАТЬ
    |			НомеклатураХарактеристикаТип.Номенклатура КАК Номенклатура,
    |			НомеклатураХарактеристикаТип.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
    |			ЕСТЬNULL(ЕСТЬNULL(ЦеныБазовые.Цена, ЦеныБазовыеПустаяХарактеристика.Цена), 0.00) КАК Цена,
    |			ЕСТЬNULL(ЦеныБазовые.ТипЦен, ЦеныБазовыеПустаяХарактеристика.ТипЦен) КАК ДинамическийТип,
    |			ЕСТЬNULL(ЦеныБазовые.ЕдиницаИзмерения, ЦеныБазовыеПустаяХарактеристика.ЕдиницаИзмерения) КАК ЕдиницаИзмерения
    |		ИЗ
    |		(
    |			ВЫБРАТЬ	
    |				Характеристики.Владелец КАК Номенклатура,
    |				Характеристики.Ссылка КАК ХарактеристикаНоменклатуры
    |			ИЗ
    |				Справочник.ХарактеристикиНоменклатуры КАК Характеристики
    |			ГДЕ Характеристики.Владелец = &Номенклатура
    |			ОБЪЕДИНИТЬ
    |			ВЫБРАТЬ 
    |					&Номенклатура КАК Номенклатура,
    |					ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка) КАК ХарактеристикаНоменклатуры
    |		) КАК НомеклатураХарактеристикаТип
    |		ЛЕВОЕ СОЕДИНЕНИЕ
    |			РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, Номенклатура = &Номенклатура И (НЕ ТипЦен.Рассчитывается И ТипЦен В (&ТипыЦен))) КАК ЦеныБазовые
    |		ПО
    |			ЦеныБазовые.Номенклатура = НомеклатураХарактеристикаТип.Номенклатура
    |			И ЦеныБазовые.ХарактеристикаНоменклатуры = НомеклатураХарактеристикаТип.ХарактеристикаНоменклатуры
    |		ЛЕВОЕ СОЕДИНЕНИЕ
    |			РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, Номенклатура = &Номенклатура И (НЕ ТипЦен.Рассчитывается И ТипЦен В (&ТипыЦен))) КАК ЦеныБазовыеПустаяХарактеристика
    |		ПО
    |			ЦеныБазовыеПустаяХарактеристика.Номенклатура = НомеклатураХарактеристикаТип.Номенклатура
    |			И ЦеныБазовыеПустаяХарактеристика.ХарактеристикаНоменклатуры = ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка)
    |		ГДЕ
    |			НЕ ЕСТЬNULL(ЦеныБазовые.ТипЦен, ЦеныБазовыеПустаяХарактеристика.ТипЦен) ЕСТЬ NULL
    |	) КАК ЦенаДляРасчетаДиапазона
    |	ЛЕВОЕ СОЕДИНЕНИЕ
    |	(
    |		ВЫБРАТЬ  Диапазон.Валюта
    |				,ТипыЦен.БазовыйТипЦен КАК ТипЦен
    |				, Диапазон.Цена
    |				, Диапазон.ВерхняяГраница
    |		ИЗ
    |			РегистрСведений.ДиапазоныЦенДляНаценки.СрезПоследних(,) КАК Диапазон 
    |		ВНУТРЕННЕЕ СОЕДИНЕНИЕ
    |		(	
    |			ВЫБРАТЬ	ТипЦен
    |					, МАКСИМУМ(Период) КАК Период
    |			ИЗ РегистрСведений.ДиапазоныЦенДляНаценки.СрезПоследних(, ) КАК Диапазон 
    |			СГРУППИРОВАТЬ ПО Диапазон.ТипЦен
    |		) КАК Диапазон2
    |		ПО Диапазон2.ТипЦен = Диапазон.ТипЦен И Диапазон2.Период = Диапазон.Период
    |		ВНУТРЕННЕЕ СОЕДИНЕНИЕ
    |			Справочник.ТипыЦенНоменклатуры КАК ТипыЦен
    |		ПО
    |			ТипыЦен.Ссылка = Диапазон.ТипЦен
    |	) КАК ЦенаПоДиапазону
    |	ПО
    |		ЦенаПоДиапазону.ТипЦен = ЦенаДляРасчетаДиапазона.ДинамическийТип
    |		И ЦенаПоДиапазону.ВерхняяГраница > ЦенаДляРасчетаДиапазона.Цена
    |	ГДЕ
    |		НЕ ЦенаПоДиапазону.ВерхняяГраница ЕСТЬ NULL	
    |	СГРУППИРОВАТЬ ПО ЦенаДляРасчетаДиапазона.ДинамическийТип
    |					, ЦенаДляРасчетаДиапазона.ХарактеристикаНоменклатуры
    |					, ЦенаДляРасчетаДиапазона.Номенклатура	
    
    |	) КАК ДинамическийТипЦен
    |	ВНУТРЕННЕЕ СОЕДИНЕНИЕ
    |	(	
    |		ВЫБРАТЬ  Диапазон.Валюта
    |				, ТипыЦен.БазовыйТипЦен КАК ТипЦен
    |				, Диапазон.Цена
    |				, Диапазон.ВерхняяГраница
    |		ИЗ
    |			РегистрСведений.ДиапазоныЦенДляНаценки.СрезПоследних(,) КАК Диапазон 
    |		ВНУТРЕННЕЕ СОЕДИНЕНИЕ
    |			Справочник.ТипыЦенНоменклатуры КАК ТипыЦен
    |		ПО
    |			ТипыЦен.Ссылка = Диапазон.ТипЦен
    |	) КАК ЦенаПоДиапазону
    |	ПО
    |		ЦенаПоДиапазону.ТипЦен = ДинамическийТипЦен.ДинамическийТип
    |		И ЦенаПоДиапазону.ВерхняяГраница = ДинамическийТипЦен.Цена
    |) КАК ЦенаПоДиапазону
    |ПО
    |	ЦенаПоДиапазону.БазовыйТипЦен = ЦеныНаБазовыйТип.ТипЦен
    |	И ЦенаПоДиапазону.Номенклатура = ЦеныНаБазовыйТип.Номенклатура
    |	И ЦенаПоДиапазону.ХарактеристикаНоменклатуры = ЦеныНаБазовыйТип.ХарактеристикаНоменклатуры
    |ГДЕ
    |	ВЫБОР	КОГДА ЦеныНаБазовыйТип.Рассчитывается
    |			ТОГДА
    |				ВЫБОР 	КОГДА ЦеныНаБазовыйТип.СпособРасчета = ЗНАЧЕНИЕ(Перечисление.СпособыРасчетаЦены.ПоПроцентнойНаценкеНаБазовыйТип)
    |						ТОГДА ЕСТЬNULL(ЦеныНаБазовыйТип.Цена, 0.00) + ЕСТЬNULL(ЦеныНаБазовыйТип.Цена, 0.00) * (ЦеныНаБазовыйТип.ПроцентСкидкиНаценки /100)
    |						ИНАЧЕ ЕСТЬNULL(ЦенаПоДиапазону.Цена, 0.00)
    |				КОНЕЦ
    |			ИНАЧЕ ЕСТЬNULL(ЦеныНаБазовыйТип.Цена, 0.00)
    |	КОНЕЦ > 0
    |) КАК Цены
    |ПО
    |	Цены.Номенклатура = ХарактеристикиНоменклатуры.Владелец
    |	И Цены.ХарактеристикаНоменклатуры = ХарактеристикиНоменклатуры.Ссылка
    |";
    КонецЕсли;
    ТекстЗапроса = ТекстЗапроса + "
    |		ОБЪЕДИНИТЬ ВСЕ
    
    |		ВЫБРАТЬ
    |			ЗаказаныйТовар.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры
    |			 " + ?(ОтображатьСклады,", ""НеВыводить"" КАК Склад, ""НеВыводить"" КАК МестоХранения ","") + "
    |			, 0 КАК КоличествоОстаток
    |			, 0 КАК КоличествоСвободныйОстаток
    |			, 0 КАК КоличествоВРезерве
    |			, ЗаказаныйТовар.КоличествоОстаток КАК КоличествоСвободныйОстатокВЗаказахПоставщикам";
    Если ПолучатьЦены Тогда
    ТекстЗапроса = ТекстЗапроса + "
    |	,
    |	0  КАК ФлагЦены,
    |	0 КАК Цена,
    |	0 КАК Валюта,
    |	0 КАК ЕдиницаЦены,
    |	0 КАК КурсВалюты,
    |	0 КАК КратностьВалюты,
    |	NULL КАК ТИПЦЕН";
    КонецЕсли;
    ТекстЗапроса = ТекстЗапроса + "
    |		ИЗ
    |			(ВЫБРАТЬ
    |				ЗаказыПоставщикамОстатки.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры
    |				, СУММА(ЕСТЬNULL(ЗаказыПоставщикамОстатки.КоличествоОстаток, 0.00)
    |						-
    |						ЕСТЬNULL(РазмещениеЗаказовПокупателейОстатки.КоличествоОстаток,0.00)
    |				) 	КАК КоличествоОстаток
    |			ИЗ
    |				РегистрНакопления.ЗаказыПоставщикам.Остатки(, Номенклатура = &Номенклатура) КАК ЗаказыПоставщикамОстатки
    |			ЛЕВОЕ СОЕДИНЕНИЕ
    |				РегистрНакопления.РазмещениеЗаказовПокупателей.Остатки(, Номенклатура = &Номенклатура) КАК РазмещениеЗаказовПокупателейОстатки
    |			ПО
    |				РазмещениеЗаказовПокупателейОстатки.ЗаказПоставщику = ЗаказыПоставщикамОстатки.ЗаказПоставщику
    |				СГРУППИРОВАТЬ ПО ЗаказыПоставщикамОстатки.ХарактеристикаНоменклатуры
    |			) КАК ЗаказаныйТовар
    |		ГДЕ ЕСТЬNULL(ЗаказаныйТовар.КоличествоОстаток , 0.00) > 0
    |";
    
    Если ОтображатьСклады Тогда
    ТекстЗапроса = ТекстЗапроса + "
    |	УПОРЯДОЧИТЬ ПО
    |		ХарактеристикаНоменклатуры,
    |		Склад
    |		//,АдресныйСклад.Приоритет
    |	ИТОГИ 	СУММА(КоличествоСвободныйОстатокВЗаказахПоставщикам) ПО
    |	ХарактеристикаНоменклатуры,
    |	Склад,
    |	МестоХранения
    |";
    <span style='cursor: pointer; color:red' Onclick="window.open('http://www.1c-pro.ru/wiki/index.php/иначе')">	Иначе	</span>
    ТекстЗапроса = ТекстЗапроса + "
    |	УПОРЯДОЧИТЬ ПО
    |		ХарактеристикаНоменклатуры, КоличествоСвободныйОстатокВЗаказахПоставщикам Убыв
    | ";
    КонецЕсли;
    
    Запрос.Текст = ТекстЗапроса;
    РезультатЗапроса = Запрос.Выполнить();
    
  7. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Еще вариант в этой теме

Поделиться этой страницей