Страницы: 1
RSS
Как в запросе без использования параметров установить отбор по нескольким видам субконто
 

Коллеги, добрый день. Необходимо в запросе без использования параметров установить отбор по нескольким видам субконто. Например, для отбора по виду субконто «контрагенты» используется запрос:

  ХозрасчетныйОбороты.Счет,

  ХозрасчетныйОбороты.Субконто1

ИЗ

  РегистрБухгалтерии.Хозрасчетный.Обороты(, , , , ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконтоХозрасчетные.Контрагенты), , , ) КАК ХозрасчетныйОбороты

Как этот отбор установить проще всего? Заранее спасибо!

 
Цитата
Светлана написал:
Коллеги, добрый день. Необходимо в запросе без использования параметров установить отбор по нескольким видам субконто. Например, для отбора по виду субконто «контрагенты» используется запрос:     ХозрасчетныйОбороты.Счет,     ХозрасчетныйОбороты.Субконто1  ИЗ     РегистрБухгалтерии.Хозрасчетный.Обороты(, , , , ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконтоХозрасчетные.Контрагенты), , , ) КАК ХозрасчетныйОбороты  Как этот отбор установить проще всего? Заранее спасибо!
Попробуйте передать массив субконто. Там вообще порядок никакой роли не играет, а именно как вы будете в массе задавать, так они и будут располагаться. Массив задать можно через параметры.

Вид субконто - массив, порядок в массиве определяет порядок вытаскиваемых субконто1, субконто2, то есть Контрагент, Договор. В итоге у вас Субконто1 будет всегда контрагент, Субконто2 - договор. И не важно, как они на счетах располагаются.

 
Цитата
Светлана написал:
Коллеги, добрый день. Необходимо в запросе без использования параметров установить отбор по нескольким видам субконто. Например, для отбора по виду субконто «контрагенты» используется запрос:     ХозрасчетныйОбороты.Счет,     ХозрасчетныйОбороты.Субконто1  ИЗ     РегистрБухгалтерии.Хозрасчетный.Обороты(, , , , ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконтоХозрасчетные.Контрагенты), , , ) КАК ХозрасчетныйОбороты  Как этот отбор установить проще всего? Заранее спасибо!
Смотрите, можно же еще вот так сделать

ВЫБРАТЬ

  ЗаказыПокупателейОбороты.ЗаказПокупателя,

  ЗаказыПокупателейОбороты.КоличествоОборот,

  ЗаказыПокупателейОбороты.СуммаУпрОборот

ИЗ

  РегистрНакопления.ЗаказыПокупателей.Обороты(, , , ЗаказПокупателя.ТипЗаказа В (ЗНАЧЕНИЕ(Перечисление.ТипыЗаказов.Головной),ЗНАЧЕНИЕ(Перечисление.ТипыЗаказов.Лицензии))) КАК ЗаказыПокупателейОбороты

Хотя вообще бывает, что с видом субконто не работает.

 
Цитата
Виктория написал:
Цитата
Светлана написал:
Коллеги, добрый день. Необходимо в запросе без использования параметров установить отбор по нескольким видам субконто. Например, для отбора по виду субконто «контрагенты» используется запрос:     ХозрасчетныйОбороты.Счет,     ХозрасчетныйОбороты.Субконто1  ИЗ     РегистрБухгалтерии.Хозрасчетный.Обороты(, , , , ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконтоХозрасчетные.Контрагенты), , , ) КАК ХозрасчетныйОбороты  Как этот отбор установить проще всего? Заранее спасибо!
Смотрите, можно же еще вот так сделать ВЫБРАТЬ     ЗаказыПокупателейОбороты.ЗаказПокупателя,     ЗаказыПокупателейОбороты.КоличествоОборот,     ЗаказыПокупателейОбороты.СуммаУпрОборот  ИЗ     РегистрНакопления.ЗаказыПокупателей.Обороты(, , , ЗаказПокупателя.ТипЗаказа В (ЗНАЧЕНИЕ(Перечисление.ТипыЗаказов.Головной),ЗНАЧЕНИЕ(Перечисление.ТипыЗаказов.Лицензии))) КАК ЗаказыПокупателейОбороты  Хотя вообще бывает, что с видом субконто не работает.  
Да, при этом еще такая тема есть, можно попробовать

Обороты:

Субконто (необязательный)

Тип параметра: ПланВидовХарактеристикСсылка.; Массив; ФиксированныйМассив; СписокЗначений.

Ссылка, или массив ссылок, или фиксированный массив ссылок, или список значений, содержащий ссылки, на виды субконто.

ВЫБРАТЬ

  ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконтоХозрасчетные.Договоры) КАК Тип

ПОМЕСТИТЬ врТипы

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ

  ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконтоХозрасчетные.Контрагенты)

;

////////////////////////////////////////////////////////////­////////////////////

ВЫБРАТЬ

  ХозрасчетныйДвиженияССубконто.Период

ИЗ

  РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(

          ,

          ,

          ВидСубконтоКт1 В

              (ВЫБРАТЬ

                  _.Тип

              ИЗ

                  врТипы КАК _)) КАК ХозрасчетныйДвиженияССубконто

Или же вот так сделать:

ВЫБРАТЬ

  ВидыСубконтоХозрасчетные.Ссылка КАК Тип

ПОМЕСТИТЬ врТипы

ИЗ

  ПланВидовХарактеристик.ВидыСубконтоХозрасчетные КАК ВидыСубконтоХозрасчетные

ГДЕ

  ВидыСубконтоХозрасчетные.Ссылка.Наименование В ("Договоры", "Контрагенты")

;

////////////////////////////////////////////////////////////­////////////////////

ВЫБРАТЬ

  ХозрасчетныйДвиженияССубконто.Период

ИЗ

  РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(

          ,

          ,

          ВидСубконтоКт1 В

              (ВЫБРАТЬ

                  _.Тип

              ИЗ

                  врТипы КАК _)) КАК ХозрасчетныйДвиженияССубконто

 

В параметре Субконто можно передать не значение субконто, а значение вида субконто или массив видов субконто. А для отбора по значению субконто используется параметр Условие. У меня было так, например, что был запрос из регистра бухгалтерии. В нем отбирались данные по периоду и счету. Нужно было сделать также отбор по неизвестно какому субконто, но при это его вид был однозначно определен = СтатьиДвиженияДенСредств. И вот я тоже думала, как установить еще и отбор по субконто.

Тогда мы решили передать МассивВидовСубконто в параметре виртуальной таблицы. И вот это переместили в параметры вирт. таблицы: [/code] и туда же добавили свой отбор по субконто. Использовали «ИЛИ», так как не знали, каким именно субконто было наше субконто.

 
Цитата
Виктория написал:
В параметре Субконто можно передать не значение субконто, а значение вида субконто или массив видов субконто. А для отбора по значению субконто используется параметр Условие. У меня было так, например, что был запрос из регистра бухгалтерии. В нем отбирались данные по периоду и счету. Нужно было сделать также отбор по неизвестно какому субконто, но при это его вид был однозначно определен = СтатьиДвиженияДенСредств. И вот я тоже думала, как установить еще и отбор по субконто.  Тогда мы решили передать МассивВидовСубконто в параметре виртуальной таблицы. И вот это переместили в параметры вирт. таблицы: [/code] и туда же добавили свой отбор по субконто. Использовали «ИЛИ», так как не знали, каким именно субконто было наше субконто.  

Вообще знаю, что если параметр <Субконто> задан, то выбираются данные только по тем счетам, у которых определены все указанные виды субконто. При этом поля "Субконто<N>" будут содержать значения, соответствующие переданным видам субконто. Например, если один счет имеет настройку субконто "Материалы, Склад", а второй "Склад, Материалы", и параметр "Виды субконто" задан как массив "Материалы, Склад", то поле "Субконто1" будет содержать материалы, а поле "Субконто2" - склады, независимо от счета.

Также принципиальный момент состоит в том, что массив «Субконто» передается по запросу. И запрос используется субконто в этом же порядке. А в каком они стоят на счете – роли не играет. Лишь бы были.

Еще можно использовать ВЫБОР КОГДА ТОГДА ИНАЧЕ КОНЕЦ.

если ТИПЗНАЧЕНИЯ(МестоХранения) тогда берите Субконто2.

Страницы: 1