Имя: Пароль:
1C
1C 7.7
v7: Запрос OLE и ВходитВГруппу
0 2S
 
21.07.15
15:39
Баянистый баян, но забыл напроч
Понадобилось в из ЗиК 77 по ОЛЕ тащить данные
        Запрос = БазаOLE.CreateObject("Запрос");
        ТекстЗапроса =
        "//{{ЗАПРОС(ЗП)
        |С ' " + ДатаНачала + "' по '" + ДатаОкончания + "';
        |ФизЛицо                = ЖурналРасчетов.Зарплата.Объект.ОсновнойЭлемент;
        |Расчет                    = ЖурналРасчетов.Зарплата.ВидРасч;
        |Результат                = ЖурналРасчетов.Зарплата.Результат;
        |Функция СуммаНачисления    = Сумма(Результат)    когда (Расчет.ВходитВГруппу(ГруппаРасчетов.ВсеНачисления)=1);
        |Группировка ФизЛицо Без Групп;
        |Условие(Результат<>0);"
        ;  

Падаем тут 1С:Предприятие: Функция СуммаНачисления    = Сумма(Результат)    когда (Расчет.ВходитВГруппу(ГруппаРасчетов.ВсеНачисления <<?>> )=1);
Запрос[6] : Ошибка в выражении 'ГруппаРасчетов'

И Eval подставлял и БазаOLE.ГруппаРасчетов.ВсеНачисления пробовал, нифига. Погуглил тоже бех результата. Комрады, вспоминаем вместе )
1 2S
 
21.07.15
15:45
Чой-то не хочется описывать все виды расчетов в список о_О
2 2S
 
21.07.15
15:51
все, ясно, через гланды и метаданные надо список рисовать
Тема закрыта
3 2S
 
22.07.15
13:43
подниму тему, мозг кипит
Проблема, не работает условие запроса, не пойму проблему ((
Сам код
        БазаOLE.ExecuteBatch("СписокВРДляОтчета[1] = СоздатьОбъект(""СписокЗначений"")");
        СписокВР = БазаOLE.EvalExpr("СписокВРДляОтчета[1]");
        Для сч=1 по БазаOLE.Метаданные.ГруппаРасчетов() Цикл
            Если БазаOLE.Метаданные.ГруппаРасчетов(сч).Идентификатор = "ВсеНачисления" Тогда  
                Для СчВр = 1 По БазаOLE.Метаданные.ГруппаРасчетов(сч).ВидРасчета.Количество() Цикл
                    СписокВР.ДобавитьЗначение(БазаOLE.Метаданные.ГруппаРасчетов(сч).ВидРасчета.Получить(СчВр));
                КонецЦикла;
            КонецЕсли;
        КонецЦикла;    
        
        Запрос = БазаOLE.CreateObject("Запрос");
        ТекстЗапроса =
        "//{{ЗАПРОС(ЗП)
        |С ' " + ДатаНачала + "' по '" + ДатаОкончания + "';
        |Сотрудник                = ЖурналРасчетов.Зарплата.Объект;
        |Расчет                    = ЖурналРасчетов.Зарплата.ВидРасч;
        |Результат                = ЖурналРасчетов.Зарплата.Результат;
        |Функция СуммаНачисления    = Сумма(Результат);
        |Группировка Сотрудник Без Групп;
        |Условие(Расчет В СписокВРДляОтчета[1]);"
        ;
4 2S
 
22.07.15
13:46
СписокВР заполняется, проверил по размеру и представлению
5 2S
 
22.07.15
13:49
Сообщить(БазаOLE.EvalExpr("СписокВРДляОтчета[1].РазмерСписка()"));
говорит что в списке 236 элементов
6 2S
 
22.07.15
13:52
так, а БазаOLE.Метаданные.ГруппаРасчетов(сч).ВидРасчета.Получить(СчВр) какой тип возвращает, кто подскажет?
7 Ёпрст
 
гуру
22.07.15
13:52
метаданные
8 2S
 
22.07.15
13:54
Вооот...
Ёпрст, знаю что знаешь, как вытащить ВидРасч?
9 Ёпрст
 
гуру
22.07.15
13:54
хотя не, ссылку на вид расчета.
10 Ёпрст
 
гуру
22.07.15
13:54
(8) забить на олю :)
11 2S
 
22.07.15
13:55
нет, надо олю
12 Ёпрст
 
гуру
22.07.15
13:55
или делать запрос в оле базе и возвращать результат
13 2S
 
22.07.15
13:56
через ExecuteBatch?
14 2S
 
22.07.15
13:56
запрос и так в оле делается, так то
15 2S
 
22.07.15
13:59
нихрена не понял
сообщить(типзначения(БазаOLE.Метаданные.ГруппаРасчетов(сч).ВидРасчета.Получить(СчВр))) возвращает 100!
16 2S
 
22.07.15
14:00
тьфу, OLE это..
17 2S
 
22.07.15
14:02
(9) начал сомневаться насчет ссылки
18 Serginio1
 
22.07.15
14:02
Используй внешние отчеты. Намного все становится проще.
Оле с условием
19 Ёпрст
 
гуру
22.07.15
14:10
А так, работает ?

  |Функция СуммаНачисления    = Сумма(Результат)    когда (Расчет.ВходитВГруппу(Группа.ВсеНачисления)=1);
20 Ёпрст
 
гуру
22.07.15
14:11
только вот Группа нужно определить в оле базе как группа расчета..
21 Ёпрст
 
гуру
22.07.15
14:11
можно так же, через массив.
22 2S
 
22.07.15
14:23
(19) это в тебе описано, что не работает
(20) не понял
23 2S
 
22.07.15
14:24
(22) тебе = теме
24 Ёпрст
 
гуру
22.07.15
14:39
(22)
  |Функция СуммаНачисления    = Сумма(Результат)    когда (СписокВРДляОтчета[1].ВходитВГруппу(Группа.ВсеНачисления)=1);

а СписокВРДляОтчета[1] определишь как группу расчета через
ExecuteBatch/EvalExpr
25 Ёпрст
 
гуру
22.07.15
14:40
пилять
  |Функция СуммаНачисления    = Сумма(Результат)    когда (Расчет.ВходитВГруппу(СписокВРДляОтчета[1].ВсеНачисления)=1);

а СписокВРДляОтчета[1] определишь как группу расчета через
ExecuteBatch/EvalExpr
26 2S
 
22.07.15
14:47
БазаOLE.ExecuteBatch("СписокВРДляОтчета[1] = ГруппаРасчетов.ВсеНачисления");  
        
        Запрос = БазаOLE.CreateObject("Запрос");
        ТекстЗапроса =
        "//{{ЗАПРОС(ЗП)
        |С ' " + ДатаНачала + "' по '" + ДатаОкончания + "';
        |Сотрудник                = ЖурналРасчетов.Зарплата.Объект;
        |Расчет                    = ЖурналРасчетов.Зарплата.ВидРасч;
        |Результат                = ЖурналРасчетов.Зарплата.Результат;
        |Функция СуммаНачисления    = Сумма(Результат)  когда (Расчет.ВходитВГруппу(СписокВРДляОтчета[1])=1);
        |Группировка Сотрудник Без Групп;
        |Условие(Результат <> 0);"
        ;
27 2S
 
22.07.15
14:47
гуд, сработало
огромное данке шён
28 Ёпрст
 
гуру
22.07.15
14:54
(26) ага, типа того :)
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn