Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Запрос по ОЛЕ не читает значение "булево"
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.3
Мичман Харитонов
Доброго дня!
Бухгалтерия для Украины 1.2, платформа 8.3.7.1860
Обращаюсь запросом по ОЛЕ к самописной учетной базе, платформа та же.

необходимо зарегистрироваться для просмотра ссылки
В8 = Новый COMОбъект("V83.Application");
.........
Если Истина Тогда
            ЗапросОЛЕ = В8.NewObject("Запрос");

ТекстЗапроса = "ВЫБРАТЬ
            |        ТоварыНаСкладеОстатки.Номенклатура КАК Номенклатура,
            |        ТоварыНаСкладеОстатки.Номенклатура.Наименование КАК НоменклатураНаименование,
            |        ТоварыНаСкладеОстатки.Номенклатура.КодСТочкой КАК КодСТочкой,
            |        ТоварыНаСкладеОстатки.Склад.КодСклада КАК Склад,
            |        ТоварыНаСкладеОстатки.Склад.Наименование КАК СкладНаименование,
            |        ТоварыНаСкладеОстатки.КоличествоОстаток КАК ОстатокУпр,
            |        ТоварыНаСкладеОстатки.СуммаОстаток КАК СебестоимостьУпр
            |    ИЗ
            |        РегистрНакопления.ТоварыНаСкладе.Остатки("+
            ?(ДатаСравнения = '00010101',"","
            |                &Дата")+", Истина"+
            ?(Склад.Пустая(),""," И Склад.КодСклада  = &КодСклада") + "
            |                И Склад.ВидУчета <> &ВидУчета
            |                И Склад.НеПоказыватьВБухгалтерии = &НеПоказыватьВБухгалтерии
            |                И Фирма.КодОрганизации  = &КодБухОрганизации" +
            ?(Номенклатура.Пустая(),"","
            |                И Номенклатура В Иерархии(&Номенклатура)") + "
            |) КАК ТоварыНаСкладеОстатки" +
            
            ?(Склад.Пустая() или Склад = Справочники.Склады.ТоварыВПути,"
            |
            |ОБЪЕДИНИТЬ ВСЕ
            |
            |ВЫБРАТЬ
            |        ТоварыВПутиОстатки.Номенклатура,
            |        ТоварыВПутиОстатки.Номенклатура.Наименование,
            |        ТоварыВПутиОстатки.Номенклатура.КодСТочкой КАК КодСТочкой,
            |        ""000000000"" КАК Склад,
            |        ""Товары в пути"" КАК СкладНаименование,
            |        ТоварыВПутиОстатки.КоличествоОстаток,
            |        ТоварыВПутиОстатки.СуммаОстаток
            |    ИЗ
            |        РегистрНакопления.ТоварыВПути.Остатки("+
            ?(ДатаСравнения = '00010101',"","
            |                &Дата")+", Фирма.КодОрганизации  = &КодБухОрганизации" +
            ?(Номенклатура.Пустая(),"","
            |                И Номенклатура В Иерархии(&Номенклатура)") + "
            |                И Склад.НеПоказыватьВБухгалтерии = &НеПоказыватьВБухгалтерии
            |) КАК ТоварыВПутиОстатки", "");

            
            ЗапросОЛЕ.Текст = ТекстЗапроса;
            ЗапросОЛЕ.УстановитьПараметр("Дата", ДатаСравнения);
            ЗапросОЛЕ.УстановитьПараметр("КодБухОрганизации", Организация.Код);
            ЗапросОЛЕ.УстановитьПараметр("ВидУчета", В8.Перечисления.ВидыУчета.Торговля);
            ЗапросОЛЕ.УстановитьПараметр("НеПоказыватьВБухгалтерии", ЛОЖЬ);


Спотыкается на булевом значении, Склад.НеПоказыватьВБухгалтерии.
Ошибка
"{Отчет.СравнениеОстатковТоваровБухИУпр.МодульОбъекта(173)}: Ошибка при вызове метода контекста (Выполнить)
Результат = ЗапросОЛЕ.Выполнить();
по причине:
Произошла исключительная ситуация (1C:Enterprise 8.3.7.1860): {(30, 7)}: Поле не найдено "Склад.НеПоказыватьВБухгалтерии"
И <<?>>Склад.НеПоказыватьВБухгалтерии = &НеПоказыватьВБухгалтерии
" Поле точно есть, имя правильное. Что я не так-то делаю?
Petre
Мичман Харитонов @ Today, 10:26 необходимо зарегистрироваться для просмотра ссылки ,
... ""000000000"" КАК Склад ...
Мичман Харитонов
Petre @ Сегодня, 11:30 необходимо зарегистрироваться для просмотра ссылки ,
Эта конструкция работает.
Отчет был написан задолго до меня, я пытаюсь добавить отбор по реквизиту "НеПоказыватьВБухгалтерии"
Petre
Вижу в виртуальных. Вообще, лучше отладчиком посмотреть готовый текст запроса и консолью запустить в самом источнике...
Мичман Харитонов
В источнике показывает, только при выводе булево представляет как да/нет
daveal
Мне кажеться, Вы смотрите первый запрос, а склада у Вас нет во втором. В РН ТоварыВПути точно есть измерение Склад?
takefive
а без параметра?
И НЕ Склад.НеПоказыватьВБухгалтерии

Vladal
Цитата(Мичман Харитонов @ 22.07.19, 11:26) необходимо зарегистрироваться для просмотра ссылки
И <<?>>Склад.НеПоказыватьВБухгалтерии = &НеПоказыватьВБухгалтерии
" Поле точно есть, имя правильное. Что я не так-то делаю?

Во втором запросе присоединяется необъектный тип Строка
""000000000"" КАК Склад,

Соответственно, у строки "00000000" нет поля НеПоказыватьВБухгалтерии
Это справедливо и для первой части запроса - на выходе литерал с кодом склада, а не ссылка на справочник Склады.

Советую присоединять не нолики, а пустую ссылку типа склад:
Значение(Справочник.Склады.ПустаяСсылка) как СкладСсылка
Либо поле НеПоказыватьВБухгалтерии вывести дополнительно в запросе - чтобы каждый раз не дергать соединение со справочником Склады, как это сделано с наименованием: Номенклатура.Наименование, код с точкой и другие реквизиты:

|        ТоварыНаСкладеОстатки.Номенклатура.Наименование КАК НоменклатураНаименование,
|        ТоварыНаСкладеОстатки.Номенклатура.КодСТочкой КАК КодСТочкой,
|        ТоварыНаСкладеОстатки.Склад КАК СкладСсылка,
|        ТоварыНаСкладеОстатки.Склад.КодСклада КАК Склад,
|        ТоварыНаСкладеОстатки.Склад.НеПоказыватьВБухгалтерии КАК СкладНеПоказыватьВБухгалтерии,
|        ТоварыНаСкладеОстатки.Склад.Наименование КАК СкладНаименование,
...

|        ТоварыВПутиОстатки.Номенклатура.КодСТочкой КАК КодСТочкой,
|        Значение(Справочник.Склады.ПустаяСсылка) как СкладСсылка,
|        ""000000000"" КАК Склад,
|        Истина КАК СкладНеПоказыватьВБухгалтерии, // или Ложь, что там надо по умолчанию
|        ""Товары в пути"" КАК СкладНаименование,
|        ТоварыВПутиОстатки.КоличествоОстаток,


И с условиями будет все ОК.
В первой части запроса ОК и так, а во второй условие "И Склад.НеПоказыватьВБухгалтерии = &НеПоказыватьВБухгалтерии" привести в соответствии с логикой "склада ТоварыВПути по умолчанию" - если он не отражается в БУ, то и не надо присоединять вторую часть запроса.

Цитата(Мичман Харитонов @ 22.07.19, 11:45) необходимо зарегистрироваться для просмотра ссылки
В источнике показывает, только при выводе булево представляет как да/нет

Это "бантики" визуализации. Не обращайте внимание.
mut
А в регистре ТоварыВПути точно есть измерение Склад? Он как-бы нелогичен там.
Vladal
Цитата(mut @ 22.07.19, 19:43) необходимо зарегистрироваться для просмотра ссылки
А в регистре ТоварыВПути точно есть измерение Склад? Он как-бы нелогичен там.

А его как бы нулями забивают. "00000000" как Склад

Там некорректно составлен запрос под конкретную задачу.
alex1c
Думаю надо копать в эту сторону:
ЗапросОЛЕ.УстановитьПараметр("НеПоказыватьВБухгалтерии", В8.ЛОЖЬ);
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.