|
Условие на кусок кода в запросе в 1С, аналог IF в SQL? | ☑ | ||
---|---|---|---|---|
0
pvase
04.06.19
✎
12:22
|
Суть задачи, надо в запросе (СКД) выполнять или не выполнять часть кода, в зависимости от параметра. В MS SQL достаточно написать так:
DECLARE @Param1 AS Int SET @Param1 = 2 IF @Param1 = 1 BEGIN PRINT('Helo Word') END ELSE BEGIN PRINT('Helo Word2') END Есть ли подобное в 1С запросе? Суть вопроса, надо в зваисивости от параметра выполнять часть кода или нет (а точнее заполнять еще одну промежуточную таблицу или нет). Можно ли такое реализовать в 1С средствами запроса и СКД? |
|||
1
shuhard
04.06.19
✎
12:25
|
(0) временные таблички + колонка в ней + связь по колонке на следующем этапе
|
|||
2
НачинающийВ1С
04.06.19
✎
12:25
|
(0) Выбор когда тогда ?
|
|||
3
pvase
04.06.19
✎
12:28
|
Суть вопроса, немного глубже. Отчет Финансовый результат со своими аналитиками. В нем есть незаполненные аналитики (из регистров), так вот, надо в отчете, когда пользователь ставит отметку "Распределить" выполнялся еще один кусок кода, который будет распределять (а это фактически еще один запрос с временной таблицей и ее заполнение в другую временную таблицу для получения окончательного варианта).
|
|||
4
Джинн
04.06.19
✎
12:28
|
CASE
|
|||
5
pvase
04.06.19
✎
12:34
|
Вот ввесь запрос:
// Получаем данные ВЫБРАТЬ РАЗРЕШЕННЫЕ инф_ДоходыОбороты.СтатьяДохода.РазделФинРезультата КАК Характер, инф_ДоходыОбороты.ПериодМесяц КАК Период, инф_ДоходыОбороты.ПериодПолугодие КАК ПериодПолугодие, инф_ДоходыОбороты.ПериодГод КАК ПериодГод, инф_ДоходыОбороты.НоменклатурнаяГруппа КАК НоменклатурнаяГруппа, инф_ДоходыОбороты.СтатьяДохода.БА_ВидДеятельности КАК ВидДеятельности, инф_ДоходыОбороты.СтатьяДохода КАК Статья, инф_ДоходыОбороты.Подразделение КАК Подразделение, инф_ДоходыОбороты.СуммаПриход КАК Сумма ПОМЕСТИТЬ ВТ_ФинРезВрем ИЗ РегистрНакопления.инф_Доходы.Обороты(НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ), КОНЕЦПЕРИОДА(&КонецПериода, ДЕНЬ), Авто, ) КАК инф_ДоходыОбороты ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ЗатратыОбороты.СтатьяЗатрат.РазделФинРезультата, ЗатратыОбороты.ПериодМесяц, ЗатратыОбороты.ПериодПолугодие, ЗатратыОбороты.ПериодГод, ЗатратыОбороты.НоменклатурнаяГруппа, ЗатратыОбороты.СтатьяЗатрат.БА_ВидДеятельности, ЗатратыОбороты.СтатьяЗатрат, ЗатратыОбороты.Подразделение, ЗатратыОбороты.СуммаПриход ИЗ РегистрНакопления.Затраты.Обороты(НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ), КОНЕЦПЕРИОДА(&КонецПериода, ДЕНЬ), Авто, ) КАК ЗатратыОбороты ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ЗНАЧЕНИЕ(Справочник.РазделыФинРезультата.Себестоимость), ПродажиСебестоимостьОбороты.ПериодМесяц, ПродажиСебестоимостьОбороты.ПериодПолугодие, ПродажиСебестоимостьОбороты.ПериодГод, ПродажиСебестоимостьОбороты.Номенклатура.НоменклатурнаяГруппаЗатрат, ПродажиСебестоимостьОбороты.БА_СтатьяЗатрат.БА_ВидДеятельности, ПродажиСебестоимостьОбороты.БА_СтатьяЗатрат, ПродажиСебестоимостьОбороты.Подразделение, ПродажиСебестоимостьОбороты.СтоимостьОборот ИЗ РегистрНакопления.ПродажиСебестоимость.Обороты(НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ), КОНЕЦПЕРИОДА(&КонецПериода, ДЕНЬ), Авто, ) КАК ПродажиСебестоимостьОбороты ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ВремДоходы.Характер, ВремДоходы.Период, ВремДоходы.ПериодПолугодие, ВремДоходы.ПериодГод, ВремДоходы.НоменклатурнаяГруппа, ВремДоходы.ВидДеятельности, ВремДоходы.Статья, ВремДоходы.Подразделение, СУММА(ВремДоходы.Сумма) ИЗ (ВЫБРАТЬ ЗНАЧЕНИЕ(Справочник.РазделыФинРезультата.ПрибыльОтПродаж) КАК Характер, инф_ДоходыОбороты.ПериодМесяц КАК Период, инф_ДоходыОбороты.ПериодПолугодие КАК ПериодПолугодие, инф_ДоходыОбороты.ПериодГод КАК ПериодГод, инф_ДоходыОбороты.НоменклатурнаяГруппа КАК НоменклатурнаяГруппа, инф_ДоходыОбороты.СтатьяДохода.БА_ВидДеятельности КАК ВидДеятельности, инф_ДоходыОбороты.СтатьяДохода КАК Статья, инф_ДоходыОбороты.Подразделение КАК Подразделение, инф_ДоходыОбороты.СуммаПриход КАК Сумма ИЗ РегистрНакопления.инф_Доходы.Обороты(НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ), КОНЕЦПЕРИОДА(&КонецПериода, ДЕНЬ), Авто, ) КАК инф_ДоходыОбороты ГДЕ инф_ДоходыОбороты.СтатьяДохода.РазделФинРезультата = ЗНАЧЕНИЕ(Справочник.РазделыФинРезультата.ДоходыОтПродаж) ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ЗНАЧЕНИЕ(Справочник.РазделыФинРезультата.ПрибыльОтПродаж), ПродажиСебестоимостьОбороты.ПериодМесяц, ПродажиСебестоимостьОбороты.ПериодПолугодие, ПродажиСебестоимостьОбороты.ПериодГод, ПродажиСебестоимостьОбороты.Номенклатура.НоменклатурнаяГруппаЗатрат, ПродажиСебестоимостьОбороты.БА_СтатьяЗатрат.БА_ВидДеятельности, ПродажиСебестоимостьОбороты.БА_СтатьяЗатрат, ПродажиСебестоимостьОбороты.Подразделение, -ПродажиСебестоимостьОбороты.СтоимостьОборот ИЗ РегистрНакопления.ПродажиСебестоимость.Обороты(НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ), КОНЕЦПЕРИОДА(&КонецПериода, ДЕНЬ), Авто, ) КАК ПродажиСебестоимостьОбороты) КАК ВремДоходы СГРУППИРОВАТЬ ПО ВремДоходы.Характер, ВремДоходы.Период, ВремДоходы.ПериодПолугодие, ВремДоходы.ПериодГод, ВремДоходы.НоменклатурнаяГруппа, ВремДоходы.ВидДеятельности, ВремДоходы.Статья, ВремДоходы.Подразделение ; // Распределяем ВЫБОР КОГДА &Распределить ТОГДА //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ РАЗРЕШЕННЫЕ ТабРаспределения.Характер КАК Характер, ТабРаспределения.Период КАК Период, ТабРаспределения.ПериодПолугодие КАК ПериодПолугодие, ТабРаспределения.ПериодГод КАК ПериодГод, ТабРаспределения.ВидДеятельности КАК ВидДеятельности, ТабРаспределения.Статья КАК Статья, ВЫБОР КОГДА ТабРаспределения.НоменклатурнаяГруппа = ЗНАЧЕНИЕ(Справочник.НоменклатурныеГруппы.ПустаяСсылка) ИЛИ ТабРаспределения.НоменклатурнаяГруппа ЕСТЬ NULL ТОГДА инф_Коэффициенты2.Аналитика ИНАЧЕ ТабРаспределения.НоменклатурнаяГруппа КОНЕЦ КАК НоменклатурнаяГруппа, ВЫБОР КОГДА ТабРаспределения.Подразделение = ЗНАЧЕНИЕ(Справочник.Подразделения.ПустаяСсылка) ИЛИ ТабРаспределения.Подразделение ЕСТЬ NULL ТОГДА инф_КоэффициентыПодр.Аналитика ИНАЧЕ ТабРаспределения.Подразделение КОНЕЦ КАК Подразделение, ВЫБОР КОГДА (ТабРаспределения.Подразделение = ЗНАЧЕНИЕ(Справочник.Подразделения.ПустаяСсылка) ИЛИ ТабРаспределения.Подразделение ЕСТЬ NULL) И НЕ инф_КоэффициентыПодр.Коэффициент ЕСТЬ NULL ТОГДА ВЫБОР КОГДА (ТабРаспределения.НоменклатурнаяГруппа = ЗНАЧЕНИЕ(Справочник.НоменклатурныеГруппы.ПустаяСсылка) ИЛИ ТабРаспределения.НоменклатурнаяГруппа ЕСТЬ NULL) И НЕ инф_Коэффициенты2.Коэффициент ЕСТЬ NULL ТОГДА ТабРаспределения.Сумма * инф_Коэффициенты2.Коэффициент / 100 * инф_КоэффициентыПодр.Коэффициент / 100 ИНАЧЕ ТабРаспределения.Сумма * инф_КоэффициентыПодр.Коэффициент / 100 КОНЕЦ ИНАЧЕ ВЫБОР КОГДА (ТабРаспределения.НоменклатурнаяГруппа = ЗНАЧЕНИЕ(Справочник.НоменклатурныеГруппы.ПустаяСсылка) ИЛИ ТабРаспределения.НоменклатурнаяГруппа ЕСТЬ NULL) И НЕ инф_Коэффициенты2.Коэффициент ЕСТЬ NULL ТОГДА ТабРаспределения.Сумма * инф_Коэффициенты2.Коэффициент / 100 ИНАЧЕ ТабРаспределения.Сумма КОНЕЦ КОНЕЦ КАК Сумма ПОМЕСТИТЬ ВТ_ФинРез ИЗ (ВЫБРАТЬ ВТФинРезВнутр.Характер КАК Характер, ВТФинРезВнутр.НоменклатурнаяГруппа КАК НоменклатурнаяГруппа, ВТФинРезВнутр.Статья КАК Статья, ВТФинРезВнутр.Подразделение КАК Подразделение, ВТФинРезВнутр.Период КАК Период, ВТФинРезВнутр.ПериодПолугодие КАК ПериодПолугодие, ВТФинРезВнутр.ПериодГод КАК ПериодГод, ВТФинРезВнутр.Сумма КАК Сумма, ВТФинРезВнутр.ВидДеятельности КАК ВидДеятельности, МАКСИМУМ(инф_Коэффициенты.Период) КАК ПериодКоэф ИЗ ВТ_ФинРезВрем КАК ВТФинРезВнутр ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.инф_КоэффициентыРаспределенияКурсовыхРазниц КАК инф_Коэффициенты ПО (инф_Коэффициенты.Период <= ВТФинРезВнутр.Период) СГРУППИРОВАТЬ ПО ВТФинРезВнутр.Характер, ВТФинРезВнутр.НоменклатурнаяГруппа, ВТФинРезВнутр.Статья, ВТФинРезВнутр.Подразделение, ВТФинРезВнутр.Период, ВТФинРезВнутр.ПериодПолугодие, ВТФинРезВнутр.ПериодГод, ВТФинРезВнутр.Сумма, ВТФинРезВнутр.ВидДеятельности) КАК ТабРаспределения ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.инф_КоэффициентыРаспределенияКурсовыхРазниц КАК инф_Коэффициенты2 ПО (инф_Коэффициенты2.Период = ТабРаспределения.ПериодКоэф) И (ТИПЗНАЧЕНИЯ(инф_Коэффициенты2.Аналитика) = ТИП(Справочник.НоменклатурныеГруппы)) И (ТабРаспределения.НоменклатурнаяГруппа = ЗНАЧЕНИЕ(Справочник.НоменклатурныеГруппы.ПустаяСсылка)) ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.инф_КоэффициентыРаспределенияКурсовыхРазниц КАК инф_КоэффициентыПодр ПО (инф_КоэффициентыПодр.Период = ТабРаспределения.ПериодКоэф) И (ТИПЗНАЧЕНИЯ(инф_КоэффициентыПодр.Аналитика) = ТИП(Справочник.Подразделения)) И (ТабРаспределения.Подразделение = ЗНАЧЕНИЕ(Справочник.Подразделения.ПустаяСсылка)) ИНАЧЕ ВЫБРАТЬ РАЗРЕШЕННЫЕ ВТ_ФинРезВрем.Характер КАК Характер, ВТ_ФинРезВрем.Период КАК Период, ВТ_ФинРезВрем.ПериодПолугодие КАК ПериодПолугодие, ВТ_ФинРезВрем.ПериодГод КАК ПериодГод, ВТ_ФинРезВрем.НоменклатурнаяГруппа КАК НоменклатурнаяГруппа, ВТ_ФинРезВрем.ВидДеятельности КАК ВидДеятельности, ВТ_ФинРезВрем.Статья КАК Статья, ВТ_ФинРезВрем.Подразделение КАК Подразделение, ВТ_ФинРезВрем.Сумма КАК Сумма ПОМЕСТИТЬ ВТ_ФинРезВрем ИЗ ВТ_ФинРезВрем ; // Итоговый результат ВЫБРАТЬ РАЗРЕШЕННЫЕ ВТ_ФинРез.Характер КАК Характер, ВТ_ФинРез.Период КАК Период, ВТ_ФинРез.ПериодПолугодие КАК ПериодПолугодие, ВТ_ФинРез.ПериодГод КАК ПериодГод, ВТ_ФинРез.НоменклатурнаяГруппа КАК НоменклатурнаяГруппа, ВТ_ФинРез.ВидДеятельности КАК ВидДеятельности, ВТ_ФинРез.Статья КАК Статья, ВТ_ФинРез.Подразделение КАК Подразделение, ВТ_ФинРез.Сумма КАК Сумма ИЗ ВТ_ФинРез ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ Значение(Справочник.РазделыФинРезультата.ФинРезультат) КАК Характер, ВТ_ФинРез.Период КАК Период, ВТ_ФинРез.ПериодПолугодие КАК ПериодПолугодие, ВТ_ФинРез.ПериодГод КАК ПериодГод, ВТ_ФинРез.НоменклатурнаяГруппа КАК НоменклатурнаяГруппа, ВТ_ФинРез.ВидДеятельности КАК ВидДеятельности, ВТ_ФинРез.Статья КАК Статья, ВТ_ФинРез.Подразделение КАК Подразделение, ВТ_ФинРез.Сумма КАК Сумма ИЗ ВТ_ФинРез ГДЕ ВТ_ФинРез.Характер = Значение(Справочник.РазделыФинРезультата.ПрибыльОтПродаж) Или ВТ_ФинРез.Характер = Значение(Справочник.РазделыФинРезультата.ПрочиеДоходы) ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ Значение(Справочник.РазделыФинРезультата.ФинРезультат) КАК Характер, ВТ_ФинРез.Период КАК Период, ВТ_ФинРез.ПериодПолугодие КАК ПериодПолугодие, ВТ_ФинРез.ПериодГод КАК ПериодГод, ВТ_ФинРез.НоменклатурнаяГруппа КАК НоменклатурнаяГруппа, ВТ_ФинРез.ВидДеятельности КАК ВидДеятельности, ВТ_ФинРез.Статья КАК Статья, ВТ_ФинРез.Подразделение КАК Подразделение, -ВТ_ФинРез.Сумма КАК Сумма ИЗ ВТ_ФинРез ГДЕ ВТ_ФинРез.Характер = Значение(Справочник.РазделыФинРезультата.Затраты) Или ВТ_ФинРез.Характер = Значение(Справочник.РазделыФинРезультата.Аммортизация) |
|||
6
pvase
04.06.19
✎
12:35
|
Надо по значению переменной или распределять или не распределять. Если туда пихать ВЫБОР - тогда это будет монстр, а не запрос.
|
|||
7
los_hooliganos
04.06.19
✎
12:36
|
(6) ГДЕ &флРаспределять
|
|||
8
los_hooliganos
04.06.19
✎
12:36
|
(7) В зависимости истина или ложь запрос будет выполнен или будет пустой
|
|||
9
pvase
04.06.19
✎
12:39
|
Что-то форум побил запрос, выкладываю повторно:
<++code> // Получаем данные ВЫБРАТЬ РАЗРЕШЕННЫЕ инф_ДоходыОбороты.СтатьяДохода.РазделФинРезультата КАК Характер, инф_ДоходыОбороты.ПериодМесяц КАК Период, инф_ДоходыОбороты.ПериодПолугодие КАК ПериодПолугодие, инф_ДоходыОбороты.ПериодГод КАК ПериодГод, инф_ДоходыОбороты.НоменклатурнаяГруппа КАК НоменклатурнаяГруппа, инф_ДоходыОбороты.СтатьяДохода.БА_ВидДеятельности КАК ВидДеятельности, инф_ДоходыОбороты.СтатьяДохода КАК Статья, инф_ДоходыОбороты.Подразделение КАК Подразделение, инф_ДоходыОбороты.СуммаПриход КАК Сумма ПОМЕСТИТЬ ВТ_ФинРезВрем ИЗ РегистрНакопления.инф_Доходы.Обороты(НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ), КОНЕЦПЕРИОДА(&КонецПериода, ДЕНЬ), Авто, ) КАК инф_ДоходыОбороты ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ЗатратыОбороты.СтатьяЗатрат.РазделФинРезультата, ЗатратыОбороты.ПериодМесяц, ЗатратыОбороты.ПериодПолугодие, ЗатратыОбороты.ПериодГод, ЗатратыОбороты.НоменклатурнаяГруппа, ЗатратыОбороты.СтатьяЗатрат.БА_ВидДеятельности, ЗатратыОбороты.СтатьяЗатрат, ЗатратыОбороты.Подразделение, ЗатратыОбороты.СуммаПриход ИЗ РегистрНакопления.Затраты.Обороты(НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ), КОНЕЦПЕРИОДА(&КонецПериода, ДЕНЬ), Авто, ) КАК ЗатратыОбороты ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ЗНАЧЕНИЕ(Справочник.РазделыФинРезультата.Себестоимость), ПродажиСебестоимостьОбороты.ПериодМесяц, ПродажиСебестоимостьОбороты.ПериодПолугодие, ПродажиСебестоимостьОбороты.ПериодГод, ПродажиСебестоимостьОбороты.Номенклатура.НоменклатурнаяГруппаЗатрат, ПродажиСебестоимостьОбороты.БА_СтатьяЗатрат.БА_ВидДеятельности, ПродажиСебестоимостьОбороты.БА_СтатьяЗатрат, ПродажиСебестоимостьОбороты.Подразделение, ПродажиСебестоимостьОбороты.СтоимостьОборот ИЗ РегистрНакопления.ПродажиСебестоимость.Обороты(НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ), КОНЕЦПЕРИОДА(&КонецПериода, ДЕНЬ), Авто, ) КАК ПродажиСебестоимостьОбороты ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ВремДоходы.Характер, ВремДоходы.Период, ВремДоходы.ПериодПолугодие, ВремДоходы.ПериодГод, ВремДоходы.НоменклатурнаяГруппа, ВремДоходы.ВидДеятельности, ВремДоходы.Статья, ВремДоходы.Подразделение, СУММА(ВремДоходы.Сумма) ИЗ (ВЫБРАТЬ ЗНАЧЕНИЕ(Справочник.РазделыФинРезультата.ПрибыльОтПродаж) КАК Характер, инф_ДоходыОбороты.ПериодМесяц КАК Период, инф_ДоходыОбороты.ПериодПолугодие КАК ПериодПолугодие, инф_ДоходыОбороты.ПериодГод КАК ПериодГод, инф_ДоходыОбороты.НоменклатурнаяГруппа КАК НоменклатурнаяГруппа, инф_ДоходыОбороты.СтатьяДохода.БА_ВидДеятельности КАК ВидДеятельности, инф_ДоходыОбороты.СтатьяДохода КАК Статья, инф_ДоходыОбороты.Подразделение КАК Подразделение, инф_ДоходыОбороты.СуммаПриход КАК Сумма ИЗ РегистрНакопления.инф_Доходы.Обороты(НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ), КОНЕЦПЕРИОДА(&КонецПериода, ДЕНЬ), Авто, ) КАК инф_ДоходыОбороты ГДЕ инф_ДоходыОбороты.СтатьяДохода.РазделФинРезультата = ЗНАЧЕНИЕ(Справочник.РазделыФинРезультата.ДоходыОтПродаж) ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ЗНАЧЕНИЕ(Справочник.РазделыФинРезультата.ПрибыльОтПродаж), ПродажиСебестоимостьОбороты.ПериодМесяц, ПродажиСебестоимостьОбороты.ПериодПолугодие, ПродажиСебестоимостьОбороты.ПериодГод, ПродажиСебестоимостьОбороты.Номенклатура.НоменклатурнаяГруппаЗатрат, ПродажиСебестоимостьОбороты.БА_СтатьяЗатрат.БА_ВидДеятельности, ПродажиСебестоимостьОбороты.БА_СтатьяЗатрат, ПродажиСебестоимостьОбороты.Подразделение, -ПродажиСебестоимостьОбороты.СтоимостьОборот ИЗ РегистрНакопления.ПродажиСебестоимость.Обороты(НАЧАЛОПЕРИОДА(&НачалоПериода, ДЕНЬ), КОНЕЦПЕРИОДА(&КонецПериода, ДЕНЬ), Авто, ) КАК ПродажиСебестоимостьОбороты) КАК ВремДоходы СГРУППИРОВАТЬ ПО ВремДоходы.Характер, ВремДоходы.Период, ВремДоходы.ПериодПолугодие, ВремДоходы.ПериодГод, ВремДоходы.НоменклатурнаяГруппа, ВремДоходы.ВидДеятельности, ВремДоходы.Статья, ВремДоходы.Подразделение ; // Распределяем ВЫБОР КОГДА &Распределить ТОГДА //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ РАЗРЕШЕННЫЕ ТабРаспределения.Характер КАК Характер, ТабРаспределения.Период КАК Период, ТабРаспределения.ПериодПолугодие КАК ПериодПолугодие, ТабРаспределения.ПериодГод КАК ПериодГод, ТабРаспределения.ВидДеятельности КАК ВидДеятельности, ТабРаспределения.Статья КАК Статья, ВЫБОР КОГДА ТабРаспределения.НоменклатурнаяГруппа = ЗНАЧЕНИЕ(Справочник.НоменклатурныеГруппы.ПустаяСсылка) ИЛИ ТабРаспределения.НоменклатурнаяГруппа ЕСТЬ NULL ТОГДА инф_Коэффициенты2.Аналитика ИНАЧЕ ТабРаспределения.НоменклатурнаяГруппа КОНЕЦ КАК НоменклатурнаяГруппа, ВЫБОР КОГДА ТабРаспределения.Подразделение = ЗНАЧЕНИЕ(Справочник.Подразделения.ПустаяСсылка) ИЛИ ТабРаспределения.Подразделение ЕСТЬ NULL ТОГДА инф_КоэффициентыПодр.Аналитика ИНАЧЕ ТабРаспределения.Подразделение КОНЕЦ КАК Подразделение, ВЫБОР КОГДА (ТабРаспределения.Подразделение = ЗНАЧЕНИЕ(Справочник.Подразделения.ПустаяСсылка) ИЛИ ТабРаспределения.Подразделение ЕСТЬ NULL) И НЕ инф_КоэффициентыПодр.Коэффициент ЕСТЬ NULL ТОГДА ВЫБОР КОГДА (ТабРаспределения.НоменклатурнаяГруппа = ЗНАЧЕНИЕ(Справочник.НоменклатурныеГруппы.ПустаяСсылка) ИЛИ ТабРаспределения.НоменклатурнаяГруппа ЕСТЬ NULL) И НЕ инф_Коэффициенты2.Коэффициент ЕСТЬ NULL ТОГДА ТабРаспределения.Сумма * инф_Коэффициенты2.Коэффициент / 100 * инф_КоэффициентыПодр.Коэффициент / 100 ИНАЧЕ ТабРаспределения.Сумма * инф_КоэффициентыПодр.Коэффициент / 100 КОНЕЦ ИНАЧЕ ВЫБОР КОГДА (ТабРаспределения.НоменклатурнаяГруппа = ЗНАЧЕНИЕ(Справочник.НоменклатурныеГруппы.ПустаяСсылка) ИЛИ ТабРаспределения.НоменклатурнаяГруппа ЕСТЬ NULL) И НЕ инф_Коэффициенты2.Коэффициент ЕСТЬ NULL ТОГДА ТабРаспределения.Сумма * инф_Коэффициенты2.Коэффициент / 100 ИНАЧЕ ТабРаспределения.Сумма КОНЕЦ КОНЕЦ КАК Сумма ПОМЕСТИТЬ ВТ_ФинРез ИЗ (ВЫБРАТЬ ВТФинРезВнутр.Характер КАК Характер, ВТФинРезВнутр.НоменклатурнаяГруппа КАК НоменклатурнаяГруппа, ВТФинРезВнутр.Статья КАК Статья, ВТФинРезВнутр.Подразделение КАК Подразделение, ВТФинРезВнутр.Период КАК Период, ВТФинРезВнутр.ПериодПолугодие КАК ПериодПолугодие, ВТФинРезВнутр.ПериодГод КАК ПериодГод, ВТФинРезВнутр.Сумма КАК Сумма, ВТФинРезВнутр.ВидДеятельности КАК ВидДеятельности, МАКСИМУМ(инф_Коэффициенты.Период) КАК ПериодКоэф ИЗ ВТ_ФинРезВрем КАК ВТФинРезВнутр ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.инф_КоэффициентыРаспределенияКурсовыхРазниц КАК инф_Коэффициенты ПО (инф_Коэффициенты.Период <= ВТФинРезВнутр.Период) СГРУППИРОВАТЬ ПО ВТФинРезВнутр.Характер, ВТФинРезВнутр.НоменклатурнаяГруппа, ВТФинРезВнутр.Статья, ВТФинРезВнутр.Подразделение, ВТФинРезВнутр.Период, ВТФинРезВнутр.ПериодПолугодие, ВТФинРезВнутр.ПериодГод, ВТФинРезВнутр.Сумма, ВТФинРезВнутр.ВидДеятельности) КАК ТабРаспределения ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.инф_КоэффициентыРаспределенияКурсовыхРазниц КАК инф_Коэффициенты2 ПО (инф_Коэффициенты2.Период = ТабРаспределения.ПериодКоэф) И (ТИПЗНАЧЕНИЯ(инф_Коэффициенты2.Аналитика) = ТИП(Справочник.НоменклатурныеГруппы)) И (ТабРаспределения.НоменклатурнаяГруппа = ЗНАЧЕНИЕ(Справочник.НоменклатурныеГруппы.ПустаяСсылка)) ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.инф_КоэффициентыРаспределенияКурсовыхРазниц КАК инф_КоэффициентыПодр ПО (инф_КоэффициентыПодр.Период = ТабРаспределения.ПериодКоэф) И (ТИПЗНАЧЕНИЯ(инф_КоэффициентыПодр.Аналитика) = ТИП(Справочник.Подразделения)) И (ТабРаспределения.Подразделение = ЗНАЧЕНИЕ(Справочник.Подразделения.ПустаяСсылка)) ИНАЧЕ ВЫБРАТЬ РАЗРЕШЕННЫЕ ВТ_ФинРезВрем.Характер КАК Характер, ВТ_ФинРезВрем.Период КАК Период, ВТ_ФинРезВрем.ПериодПолугодие КАК ПериодПолугодие, ВТ_ФинРезВрем.ПериодГод КАК ПериодГод, ВТ_ФинРезВрем.НоменклатурнаяГруппа КАК НоменклатурнаяГруппа, ВТ_ФинРезВрем.ВидДеятельности КАК ВидДеятельности, ВТ_ФинРезВрем.Статья КАК Статья, ВТ_ФинРезВрем.Подразделение КАК Подразделение, ВТ_ФинРезВрем.Сумма КАК Сумма ПОМЕСТИТЬ ВТ_ФинРезВрем ИЗ ВТ_ФинРезВрем ; // Итоговый результат ВЫБРАТЬ РАЗРЕШЕННЫЕ ВТ_ФинРез.Характер КАК Характер, ВТ_ФинРез.Период КАК Период, ВТ_ФинРез.ПериодПолугодие КАК ПериодПолугодие, ВТ_ФинРез.ПериодГод КАК ПериодГод, ВТ_ФинРез.НоменклатурнаяГруппа КАК НоменклатурнаяГруппа, ВТ_ФинРез.ВидДеятельности КАК ВидДеятельности, ВТ_ФинРез.Статья КАК Статья, ВТ_ФинРез.Подразделение КАК Подразделение, ВТ_ФинРез.Сумма КАК Сумма ИЗ ВТ_ФинРез ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ Значение(Справочник.РазделыФинРезультата.ФинРезультат) КАК Характер, ВТ_ФинРез.Период КАК Период, ВТ_ФинРез.ПериодПолугодие КАК ПериодПолугодие, ВТ_ФинРез.ПериодГод КАК ПериодГод, ВТ_ФинРез.НоменклатурнаяГруппа КАК НоменклатурнаяГруппа, ВТ_ФинРез.ВидДеятельности КАК ВидДеятельности, ВТ_ФинРез.Статья КАК Статья, ВТ_ФинРез.Подразделение КАК Подразделение, ВТ_ФинРез.Сумма КАК Сумма ИЗ ВТ_ФинРез ГДЕ ВТ_ФинРез.Характер = Значение(Справочник.РазделыФинРезультата.ПрибыльОтПродаж) Или ВТ_ФинРез.Характер = Значение(Справочник.РазделыФинРезультата.ПрочиеДоходы) ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ Значение(Справочник.РазделыФинРезультата.ФинРезультат) КАК Характер, ВТ_ФинРез.Период КАК Период, ВТ_ФинРез.ПериодПолугодие КАК ПериодПолугодие, ВТ_ФинРез.ПериодГод КАК ПериодГод, ВТ_ФинРез.НоменклатурнаяГруппа КАК НоменклатурнаяГруппа, ВТ_ФинРез.ВидДеятельности КАК ВидДеятельности, ВТ_ФинРез.Статья КАК Статья, ВТ_ФинРез.Подразделение КАК Подразделение, -ВТ_ФинРез.Сумма КАК Сумма ИЗ ВТ_ФинРез ГДЕ ВТ_ФинРез.Характер = Значение(Справочник.РазделыФинРезультата.Затраты) Или ВТ_ФинРез.Характер = Значение(Справочник.РазделыФинРезультата.Аммортизация) <--code> |
|||
10
pvase
04.06.19
✎
12:40
|
&флРаспределять - это параметр в СКД, на форме пользователь проставляет: Истина или Ложь.
|
|||
11
craxx
04.06.19
✎
12:43
|
(0) Через пакетный запрос и ВЫБОР КОГДА все это прекрасно можно запилить.
|
|||
12
los_hooliganos
04.06.19
✎
13:23
|
(10) Это по другому сделать так
ПервыйЗапрос ГДЕ &флРаспределять Объединить ВСЕ ВторойЗапрос ГДЕ НЕ &флРаспределять |
|||
13
los_hooliganos
04.06.19
✎
13:27
|
(12) В зависимости от параметра будет выполнен либо первый запрос либо второй и все это во временную таблицу.
|
|||
14
bolobol
04.06.19
✎
13:42
|
(13) Да ладно! Выполнятся же оба! Это ж 1С!
|
|||
15
DrZombi
гуру
04.06.19
✎
13:45
|
(0) Напиши свой Общий модуль, при формировании СКД поставь галочку "Использовать внешние функции"
И в Выражениях засунь свою функцию, которая на основе результата запроса будет получать свой запрос. Работает это творение не так быстро, но работает. :) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |