Имя: Пароль:
1C
 
При запросе к другой базе вместо конкретных значений пишет COMобъект
0 Алерон
 
19.10.15
05:08
Запрос    = База.NewObject("Запрос");
   // Запрос= Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ТребованиеНакладная.Ссылка) КАК КоличествоЗаМесяц,
    | КОЛИЧЕСТВО (РАЗЛИЧНЫЕ (ВЫБОР КОГДА ТребованиеНакладная.Дата МЕЖДУ &ДатаН И &ДатаК ТОГДА ТребованиеНакладная.Ссылка КОНЕЦ)) КАК КоличествоЗаДень,
    |    РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации,
    |    РаботникиОрганизацийСрезПоследних.Должность,
    |    ТребованиеНакладная.Ответственный
    |ИЗ
    |    Документ.ТребованиеНакладная КАК ТребованиеНакладная
    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций.СрезПоследних КАК РаботникиОрганизацийСрезПоследних
    |        ПО ТребованиеНакладная.Ответственный.ФизЛицо = РаботникиОрганизацийСрезПоследних.Сотрудник.Физлицо
    |ГДЕ
    |    ТребованиеНакладная.Дата МЕЖДУ &ДатаНачалаМесяца И &ДатаК
    |
    |СГРУППИРОВАТЬ ПО
    |    ТребованиеНакладная.Ответственный,
    |    РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации,
    |    РаботникиОрганизацийСрезПоследних.Должность";
    
        Запрос.УстановитьПараметр("ДатаН", НачалоДня(ТекущаяДата()));
    Запрос.УстановитьПараметр("ДатаНачалаМесяца", НачалоМесяца(ТекущаяДата()));
    Запрос.УстановитьПараметр("ДатаК", КонецДня(ТекущаяДата()));
    Запрос.УстановитьПараметр("ТекДата", КонецДня(ТекущаяДата()));
    
    РезультатЗапроса = Запрос.Выполнить();
    
    ТЗ_Птицеводство=РезультатЗапроса.Выгрузить();
    Кол_Во_Птицеводство3=ТЗ_Птицеводство.Итог("КоличествоЗаДень");
    Кол_Во_Птицеводство3М=ТЗ_Птицеводство.Итог("КоличествоЗаМесяц");
    
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        счетчик=счетчик+1;
        начальная_строка=начальная_строка+1;
        Лист.Cells(начальная_строка,2).Borders.Linestyle=1;
        Лист.Cells(начальная_строка,2).Value=счетчик;
        Лист.Cells(начальная_строка,3).Borders.Linestyle=1;
        Лист.Cells(начальная_строка,3).Value="Управление птицеводством";
        Лист.Cells(начальная_строка,4).Borders.Linestyle=1;
        Лист.Cells(начальная_строка,4).Value=""+ВыборкаДетальныеЗаписи.ПодразделениеОрганизации;
        Лист.Cells(начальная_строка,5).Borders.Linestyle=1;
        Лист.Cells(начальная_строка,5).Value=ВыборкаДетальныеЗаписи.Ответственный.Наименование;
        Лист.Cells(начальная_строка,6).Borders.Linestyle=1;
        Лист.Cells(начальная_строка,6).Value=""+ВыборкаДетальныеЗаписи.Должность;
        Лист.Cells(начальная_строка,7).Borders.Linestyle=1;
        Лист.Cells(начальная_строка,7).Value=ВыборкаДетальныеЗаписи.КоличествоЗаДень;
        Лист.Cells(начальная_строка,8).Borders.Linestyle=1;
        Лист.Cells(начальная_строка,8).Value=ВыборкаДетальныеЗаписи.КоличествоЗаМесяц;
        Лист.Cells(начальная_строка,9).Borders.Linestyle=1;
        Лист.Cells(начальная_строка,9).Value="Создано документов ""Отчет производства за смену""";
    КонецЦикла;

Вместо подразделения организации и должности пишет COMобъект
1 el-gamberro
 
19.10.15
05:10
Надо обратиться к атрибутам комобъекта.
ВыборкаДетальныеЗаписи.ПодразделениеОрганизации.Наименование
2 Алерон
 
19.10.15
05:24
(1) немного помогло, он поработал, пописал, но вывалился с ошибкой Значение не является значением объектного типа(Наименование).
3 Алерон
 
19.10.15
05:36
Вывалился на пользователь, для у которого нет значения подразделение организации.
4 Алерон
 
19.10.15
05:39
Вывалился на пользователе который не принадлежит подразделению.
5 el-gamberro
 
19.10.15
05:39
(3) Тогда проверяйте на пустую ссылку
6 Алерон
 
19.10.15
05:41
(5) да, я подумал об этом. Но разве ВыборкаДетальныеЗаписи.ПодразделениеОрганизации это ссылка?
7 Маратыч
 
19.10.15
06:02
(6) Разумеется. Это ссылка на справочник подразделений.
8 Алерон
 
19.10.15
06:05
(7) если Не (ВыборкаДетальныеЗаписи.ПодразделениеОрганизации.Пустая())
            Тогда
        Лист.Cells(начальная_строка,4).Value=""+ВыборкаДетальныеЗаписи.ПодразделениеОрганизации.Наименование;
        КонецЕсли;

Попробовал так, но всё та же ошибка, не является значением объектного типа
9 Маратыч
 
19.10.15
06:08
(8) Дык ты в запросе сделай ВЫБОР и там проверяй. Сейчас оно тебе не пустую ссылку, а NULL возвращает.
10 Алерон
 
19.10.15
06:08
(9) Окей, сейчас попробую.
11 Алерон
 
19.10.15
07:52
(9) добавил вот такую строчку(в раздел запроса где): "|РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации <> Значение(Справочник.ПодразделенияОрганизаций.ПустаяСсылка)
"
Ошибок теперь нет, однако у пользователей у которых неуказанно подразделение организации выводит вместо пустой строки - COMобъект.
12 cw014
 
19.10.15
07:54
(11)  ЕСТЬNULL(РаботникиОрганизацийСрезПоследних.ПодразделениеОрганизации, Значение(Справочник.ПодразделенияОрганизаций.ПустаяСсылка))
13 cw014
 
19.10.15
07:54
(11) +(8)
14 Алерон
 
19.10.15
08:01
(12) такая формулировка не работает, по идее результат операции "<> " значение булево и к нему проверка на null не применима, или я ошибаюсь...
15 Маратыч
 
19.10.15
08:07
(14) Это проверка внутри запроса поля на заполнение. Если поле NULL, то эта проверка возвращает пустую ссылку на справочник подразделений, чтобы ты смог ее проверить через если Не (ВыборкаДетальныеЗаписи.ПодразделениеОрганизации.Пустая())
16 Алерон
 
19.10.15
08:12
(15) окей. Но она не работает, запрос валиться на ней.
17 Алерон
 
19.10.15
08:13
(12) извините за клевету, моя ошибка.
18 Алерон
 
19.10.15
10:30
Эхх. А если я хочу что бы в выборке были и те пользователи у которых нету подразделения, отдельный запрос писать что ли...
19 Алерон
 
19.10.15
10:32
Может модно как-то результаты запроса проверять на отсутствие подразделения?
20 Алерон
 
19.10.15
10:32
*можно