Имя: Пароль:
1C
1С v8
Как быть с запросом когда меняют порядок субконто в плане счетов?
,
0 oleg_prg
 
21.03.13
01:28
Здравствуйте форумчане, помогите разобраться в такой ситуации:
Например есть счет 10.1 где Субконто1 Склады Субконто2 Номенклатура Субконто3 Партия
Затем пользователь меняет порядок аналитики например так
Субконто1 Номенклатура Субконто2 Склады Субконто3 Партия

В проводках эту ситуацию обойти легко, т.к. можно написать так
Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура] = ТекСтрокаТовары.Номенклатура;
Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Склады ] = Склад;
Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Партия] = ТекСтрокаТовары.Партия;

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

ВОПРОС!!!А как быть при написании запроса, так чтобы он не зависел от порядка субконто? Как это сделать правильно?
Заранее спасибо!
1 oleg_prg
 
21.03.13
01:31
Думал сделать проверку на уровне Запрос.УстановитьПараметр т.е. проверить тип и подставить нужное значение, но потом столкнулся с проблемой, ведь условие не всегда такое простое
ГДЕ
   ХозрасчетныйОстаткиИОбороты.Субконто1 = &Склады
Это самое примитивное условие, а ведь можно навернуть огого...
2 Lys
 
21.03.13
01:32
Параметр "Виды субконто" виртуальных таблиц регистра бухгалтерии
3 oleg_prg
 
21.03.13
01:37
А можно пример?
4 oleg_prg
 
21.03.13
01:39
Это проблему не решит ну напишу я вот так а субконто не совпадут???

"ВЫБРАТЬ
    |    ХозрасчетныйОстаткиИОбороты.Счет,
    |    ХозрасчетныйОстаткиИОбороты.Субконто1,
    |    ХозрасчетныйОстаткиИОбороты.Субконто2,
    |    ХозрасчетныйОстаткиИОбороты.Субконто3,
    |    ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстаток
    |ИЗ
    |    РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(, , , , , &Склады, Субконто2 = &Номенклатура) КАК ХозрасчетныйОстаткиИОбороты
    |ГДЕ
    |    ХозрасчетныйОстаткиИОбороты.Субконто1 = &Склады"
5 shuhard
 
21.03.13
01:40
(0) связывай через ИЛИ
6 oleg_prg
 
21.03.13
01:41
Люди добрые киньте пример.
П О Ж А Л У Й С Т А!
7 oleg_prg
 
21.03.13
01:42
т.е. вот так
ХозрасчетныйОстаткиИОбороты.Субконто1 = &Склады ИЛИ ХозрасчетныйОстаткиИОбороты.Субконто1 = &Номенклатура ИЛИ
ХозрасчетныйОстаткиИОбороты.Субконто1 = &Партия
8 oleg_prg
 
21.03.13
01:43
(7) как-то некрасиво получается
9 shuhard
 
21.03.13
01:49
(8) тебе с шашечками или ехать ?
10 oleg_prg
 
21.03.13
02:33
(9) больным желаю здоровья =)
11 Garkin
 
21.03.13
02:34
(8) в (2) правильный ответ.
12 Zaval
 
21.03.13
02:35
Формируй текст запроса программно.
13 oleg_prg
 
21.03.13
02:47
(2) Как это использовать, ну напишите подробнее. Какие слова мне еще подобрать?, помогите пожалуйста.
14 Garkin
 
21.03.13
02:54
Запрос=Новый Запрос;
Запрос.Текст="ВЫБРАТЬ
                |    РегистрБухгалтерииОстаткиИОбороты.Счет,
                |    РегистрБухгалтерииОстаткиИОбороты.Субконто1,
                |    РегистрБухгалтерииОстаткиИОбороты.Субконто2,
                |    РегистрБухгалтерииОстаткиИОбороты.СуммаОборот
                |ИЗ
                |    РегистрБухгалтерии.РегистрБухгалтерии.ОстаткиИОбороты(, , , , Счет = &Счет, &ВидСубконто, ) КАК РегистрБухгалтерииОстаткиИОбороты";

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

               
Запрос.УстановитьПараметр("Счет",Счет);
Запрос.УстановитьПараметр("ВидСубконто",ВидСубконто);
15 oleg_prg
 
21.03.13
02:55
(14) УРРРАААА!!! Спасибо милый человек! Дай Бог тебе здоровья! С П А С И Б О!
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой