Имя: Пароль:
1C
1С v8
1с 8.2 КА. Отбор по конкретному значению субконто
,
0 kIR
 
12.05.14
13:34
Доброго дня!
Есть запрос из регистра бухгалтерии. В нем отбираю данные по периоду и счету. Нужно так же сделать отбор по субконто(неизвестно какому), но при этом вид субконто определен одннозначно = СтатьиДвиженияДенСредств
Сейчас запрос выглядит вот так:

ВЫБРАТЬ
                             |    ХозрасчетныйОбороты.Счет,
                             |    ХозрасчетныйОбороты.Субконто1,
                             |    ХозрасчетныйОбороты.Субконто2,
                             |    ХозрасчетныйОбороты.Субконто3,
                             |    ХозрасчетныйОбороты.КорСчет,
                             |    ХозрасчетныйОбороты.КорСубконто1,
                             |    ХозрасчетныйОбороты.КорСубконто2,
                             |    ХозрасчетныйОбороты.КорСубконто3,
                             |    ХозрасчетныйОбороты.Организация,
                             |    ХозрасчетныйОбороты.Валюта,
                             |    ХозрасчетныйОбороты.ВалютаКор,
                             |    ХозрасчетныйОбороты.СуммаОборот,
                             |    ХозрасчетныйОбороты.СуммаОборотДт,
                             |    ХозрасчетныйОбороты.СуммаОборотКт,
                             |    ХозрасчетныйОбороты.ВалютнаяСуммаОборот,
                             |    ХозрасчетныйОбороты.ВалютнаяСуммаОборотДт,
                             |    ХозрасчетныйОбороты.ВалютнаяСуммаОборотКт,
                             |    ХозрасчетныйОбороты.ВалютнаяСуммаКорОборот,
                             |    ХозрасчетныйОбороты.ВалютнаяСуммаКорОборотДт,
                             |    ХозрасчетныйОбороты.ВалютнаяСуммаКорОборотКт,
                             |    ХозрасчетныйОбороты.КоличествоОборот,
                             |    ХозрасчетныйОбороты.КоличествоОборотДт,
                             |    ХозрасчетныйОбороты.КоличествоОборотКт,
                             |    ХозрасчетныйОбороты.КоличествоКорОборот,
                             |    ХозрасчетныйОбороты.КоличествоКорОборотДт,
                             |    ХозрасчетныйОбороты.КоличествоКорОборотКт,
                             |    ХозрасчетныйОбороты.Регистратор
                             |ИЗ
                             |    РегистрБухгалтерии.Хозрасчетный.Обороты(&НачПериода, &КонПериода, Запись, счет В ИЕРАРХИИ (&Счет),, , КорСчет В ИЕРАРХИИ (&КорСчет), ) КАК ХозрасчетныйОбороты
                             |ГДЕ
                             |    ХозрасчетныйОбороты.Организация = &Организация"



То есть выбираем все из регистра за период по счетам. Но вот как установить еще и отбор по субконто,не пойму(

Заранее спасибо
1 The_SpecialOne
 
12.05.14
14:01
передавай МассивВидовСубконто в параметре виртуальной таблицы
2 The_SpecialOne
 
12.05.14
14:05
И вот это перемести в параметры вирт. таблицы:
[code]
|ГДЕ
                             |    ХозрасчетныйОбороты.Организация = &Организация
[/code]

и туда же добавь свой отбор по субконто
3 kIR
 
12.05.14
14:25
(1) я ж не знаю,каким именно субконто(первым,вторым,третьим) будет мое субконто.
А вид передавать не надо?
4 mehfk
 
12.05.14
14:26
>> каким именно субконто(первым,вторым,третьим)
Используй "ИЛИ"
5 The_SpecialOne
 
12.05.14
14:52
(3) каким в массиве видов передашь, под таким номером и будет.
(4) использование ИЛИ - сущий бред
6 mehfk
 
12.05.14
15:03
(5) Какой-какой бред?
7 The_SpecialOne
 
12.05.14
15:27
(6) а скажи для чего в виртуальной таблице регистра бухгалтерии есть параметр "Субконто"?
8 oleg_prg
 
12.05.14
15:27
Так задай свой порядок субконто

Запрос=Новый Запрос;
Запрос.Текст="ВЫБРАТЬ
                 |    РегистрБухгалтерииОстаткиИОбороты.Счет,
                 |    РегистрБухгалтерииОстаткиИОбороты.Субконто1,
                 |    РегистрБухгалтерииОстаткиИОбороты.Субконто2,

                |    РегистрБухгалтерииОстаткиИОбороты.СуммаОборот
                 |ИЗ
                 |    РегистрБухгалтерии.РегистрБухгалтерии.ОстаткиИОбороты(, , , , Счет = &Счет, &ВидСубконто, ) КАК РегистрБухгалтерииОстаткиИОбороты";

    
ВидСубконто=Новый Массив;
    ВидСубконто.Добавить(ПланыВидовХарактеристик.ВидыСубконто.Контрагенты);
    ВидСубконто.Добавить(ПланыВидовХарактеристик.ВидыСубконто.Договоры);

                
Запрос.УстановитьПараметр("Счет",Счет);
Запрос.УстановитьПараметр("ВидСубконто",ВидСубконто);
9 oleg_prg
 
12.05.14
15:37
Как-то так, думаю смысл понятен
ВЫБРАТЬ *
ИЗ
    РегистрБухгалтерии.Хозрасчетный.Обороты(
            &НачПериода,
            &КонПериода,
            Запись,
            Счет = &Счет,
            &ВидСубконто,
            Субконто1 = &Субконто1 И Субконто2 = &Субконто2,
            КорСчет В ИЕРАРХИИ (&КорСчет),
            ) КАК ХозрасчетныйОбороты

//Затем опиши типы субконто
ВидСубконто=Новый Массив;
    ВидСубконто.Добавить(ПланыВидовХарактеристик.ВидыСубконто.Контрагенты);    ВидСубконто.Добавить(ПланыВидовХарактеристик.ВидыСубконто.Договоры);
Запрос.УстановитьПараметр("Субконто1", Справочники.Контрагенты.НайтиПоКоду("000001")); //т.е. сюда передай ссылку. НайтиПоКоду("000001") - это для примера
10 mehfk
 
12.05.14
16:55
(7)
Субконто (необязательный)

Тип параметра: ПланВидовХарактеристикСсылка.; Массив; ФиксированныйМассив; СписокЗначений.
Ссылка, или массив ссылок, или фиксированный массив ссылок, или список значений, содержащий ссылки, на виды субконто.
Задает набор и порядок субконто, которыми можно оперировать в запросе. Накладывает фильтр на записи по видам субконто (если массив то по И).
Если параметр <Субконто> не задан, то субконто определяются позиционно. То есть берется вид субконто соответствующего счета из соответствующей позиции. Так, если <Субконто> не определен, и выполняется запрос по счету, у которого определены виды субконто первое "Материалы", второе "Склад", то поле "Субконто1" будет содержать материалы, а поле "Субконто2" - склады.
Если делается запрос по двум счетам, при этом у первого настройка субконто "Материалы, Склад", а у второго "Склад, Материал" и не задан параметр <Субконто>, то поле "Субконто1" будет содержать и материалы для первого счета, и склады для второго счета. Поле "Субконто2" будет содержать склады для первого счета и материалы для второго.
Если параметр <Субконто> задан, то выбираются данные только по тем счетам, у которых определены все указанные виды субконто. При этом поля "Субконто<N>" будут содержать значения, соответствующие переданным видам субконто.
Например, если один счет имеет настройку субконто "Материалы, Склад", а второй "Склад, Материалы", и параметр "Виды субконто" задан как массив "Материалы, Склад", то поле "Субконто1" будет содержать материалы, а поле "Субконто2" - склады, независимо от счета.
Параметр не существует, если при конфигурировании для плана счетов не указаны субконто.
Значение по умолчанию: Неопределено.

Это для отбора по виду субконто, а не для отбора по его значению.

А автору, я так понял, нужен отбор и по его значению.
11 The_SpecialOne
 
12.05.14
17:13
(10) ты читал то, что вставил?

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

не кажется ли тебе что теперь можно поставить условие Субконто1 = &Материал И Субконто2 = &Склад?
12 The_SpecialOne
 
12.05.14
17:16
(10) выше еще и примеры "на пальцах" расписали, см (9)
13 mehfk
 
12.05.14
17:56
(12) Иди покорми оленей.
14 The_SpecialOne
 
12.05.14
18:36
(13) да господи... использую ИЛИ на здоровье, он выдаст тот же результат.

а то, что запрос с ИЛИ проиграет по времени запросу с ВидамиСубконто - так это пустяки, так?
15 mehfk
 
12.05.14
18:48
(14) Тебе объяснить разницу между видом субконто и значением субконто?
16 mehfk
 
12.05.14
18:59
(15)+ Чтобы тебе было более понятно, пример - бери запрос из (0), в параметр &Счет передай список значений или массив из двух элементов - 50 и 51 счета, и сделай отбор по статье движения денежных средств = "Поступление от продажи продукции и товаров, выполнения работ, оказания услуг"
17 The_SpecialOne
 
13.05.14
11:24
(16) Я понятия не имею какая аналитика в КА на этих счетах. Предположу, что и на 50, и на 51 есть аналитика по СтатьеДДС. Тогда запрос будет выглядеть примерно так:

"ВЫБРАТЬ
|...
|ИЗ
|    РегистрБухгалтерии.Хозрасчетный.Обороты(&НачПериода, &КонПериода, Запись, счет В (&Счета), &ВидСубконто, Субконто1 = &СтатьяДДС, КорСчет В ИЕРАРХИИ (&КорСчет), ) КАК ХозрасчетныйОбороты"

ВидСубконто=Новый Массив;    ВидСубконто.Добавить(ПланыВидовХарактеристик.ВидыСубконто.СтатьиДДС);
Запрос.УстановитьПараметр("ВидСубконто",ВидСубконто);
Запрос.УстановитьПараметр("СтатьяДДС", Справочники.СтатьиДДС.НайтиПоНаименованию("Поступление от продажи продукции и товаров, выполнения работ, оказания услуг"));
18 mehfk
 
13.05.14
12:22
Открой план счетов в КА (да хоть в БП) и сделай еще одну попытку.
19 The_SpecialOne
 
13.05.14
12:25
(18) как ты думаешь, почему я понятия не имею об аналитике этих счетов? может потому что у меня вообще нет русских конфигураций?
20 mehfk
 
13.05.14
12:25
когда будешь открывать план счетов в КАК, смотри не промахнись
21 mehfk
 
13.05.14
12:25
в КА
22 mehfk
 
13.05.14
12:30
(19) Набери в гугле "БП 3.0 онлайн демо"
23 Мыш
 
13.05.14
12:32
(3) Открой для себя таблицу "Субконто".
24 The_SpecialOne
 
13.05.14
12:35
(22) ок вижу на двух счетах есть субконто "Статьи движения денежных средств (об)", на 50 - 1-е субконто, на 51 - 2-е.

Что не так написано в (17)?
25 mehfk
 
13.05.14
12:39
Обрати внимание на 6-й параметр виртуальной таблицы
26 The_SpecialOne
 
13.05.14
12:43
(25) прикинь, там все правильно написано.
Советую тебе выполнить такой запрос и затем попытаться вкурить, откуда в результате получены данные по 51 счету
27 mehfk
 
13.05.14
13:16
(27) Убирай "ВидСубконто" и ставь ИЛИ в условие - когда не будет работать - дай знать.
28 mehfk
 
13.05.14
13:16
Хотя, использовать "ВидСубконто" методологически правильнее.
29 mehfk
 
13.05.14
13:19
*если не нужны значения других субконто.