Ошибка операция не разрешена в предложении

   randa

26.09.12 — 12:11

В динамическом списке в произвольном запросе есть следующая конструкция:

ВЫБОР

    КОГДА НЕ Остатки.Качество.Наименование = «Новый»

   ТОГДА СУММА(Остатки.КоличествоОстаток)

   ИНАЧЕ 0

КОНЕЦ КАК ОстатокНеНовый,

ВЫБОР

    КОГДА Остатки.СтатусСобственности = ЗНАЧЕНИЕ(Перечисление.СтатусыСобственностиТовара.Собственный)

               И Остатки.Качество.Наименование = «Новый»

   ТОГДА СУММА(Остатки.КоличествоОстаток)

   ИНАЧЕ 0

КОНЕЦ КАК Остатки,

ВЫБОР

    КОГДА Остатки.СтатусСобственности = ЗНАЧЕНИЕ(Перечисление.СтатусыСобственностиТовара.НаОтветХранении)

   ТОГДА СУММА(Остатки.КоличествоОстаток)

   ИНАЧЕ 0

КОНЕЦ КАК НаОтветХранении,

при выбранной основной таблице и утсановленном флаге «Динамическое считывание данных» возникает следующая ошибка

Ошибка при выполнении запроса. Ошибка при выполнении запроса.

по причине:

Ошибка инициализации

по причине:

Ошибка создания набора данных «НаборДанныхДинамическогоСписка»

по причине:

Ошибка при исполнении запроса набора данных

по причине:

{(100, 4)}: Операция не разрешена в предложении «ГДЕ»

<<?>>ИЛИ ВЫБОР

если таблица основная не указана запрос отрабатывает нормально

В чем может быть проблема?

   randa

4 — 26.09.12 — 12:28

(1) Так больше устроит?

Остатки.Качество = ЗНАЧЕНИЕ(Справочник.Качество.Новый)

просто пробовал менять на сравнение Строка = Строка

вот в том то и дело что (2)

если эту конструкцию заменяю на

1 КАК ОстатокНеНовый,

2 КАК Остатки,

3 КАК НаОтветХранении

всё отрабатывает

самое интересное что запрос отрабатывает при получении первой порции списка(но не всегда), и эта ошибка вылетает при прокручивании вниз и получении следующей порции списка

   randa

5 — 26.09.12 — 12:33

вот весь запрос

ВЫБРАТЬ

   СправочникНоменклатура.Ссылка КАК Ссылка,

   СправочникНоменклатура.Родитель,

   СправочникНоменклатура.ЭтоГруппа,

   СправочникНоменклатура.Код КАК Код,

   СправочникНоменклатура.Наименование,

   СправочникНоменклатура.Артикул КАК Артикул,

   ВЫБОР

       КОГДА НЕ Остатки.Качество = ЗНАЧЕНИЕ(Справочник.Качество.Новый)

           ТОГДА СУММА(Остатки.КоличествоОстаток)

       ИНАЧЕ 0

   КОНЕЦ КАК ОстатокНеНовый,

   ВЫБОР

       КОГДА Остатки.СтатусСобственности = ЗНАЧЕНИЕ(Перечисление.СтатусыСобственностиТовара.Собственный)

               И Остатки.Качество = ЗНАЧЕНИЕ(Справочник.Качество.Новый)

           ТОГДА СУММА(Остатки.КоличествоОстаток)

       ИНАЧЕ 0

   КОНЕЦ КАК Остатки,

   ВЫБОР

       КОГДА Остатки.СтатусСобственности = ЗНАЧЕНИЕ(Перечисление.СтатусыСобственностиТовара.НаОтветХранении)

           ТОГДА СУММА(Остатки.КоличествоОстаток)

       ИНАЧЕ 0

   КОНЕЦ КАК НаОтветХранении,

   СУММА(Резервы.КоличествоОстаток) КАК Резерв,

   ЕСТЬNULL(Остатки.СтатусСобственности, Резервы.СтатусСобственности) КАК СтатусСобственности,

   ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) * КурсыВалютСрезПоследних.Курс КАК Цена,

   ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) КАК ЦенаВал,

   Штрихкоды.Штрихкод

ИЗ

   Справочник.Номенклатура КАК СправочникНоменклатура

       ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Штрихкоды КАК Штрихкоды

       ПО СправочникНоменклатура.Ссылка = Штрихкоды.Владелец

       ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, {(ТипЦены = &ТипЦены

                   И Качество = &Качество)}) КАК ЦеныНоменклатурыСрезПоследних

           ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних(, ТипКурса = &ТипКурса {(ТипКурса = &ТипКурса)}) КАК КурсыВалютСрезПоследних

           ПО ЦеныНоменклатурыСрезПоследних.Валюта = КурсыВалютСрезПоследних.Валюта

       ПО СправочникНоменклатура.Ссылка = ЦеныНоменклатурыСрезПоследних.Номенклатура

           И СправочникНоменклатура.ОсновнаяВалютаНоменклатуры = ЦеныНоменклатурыСрезПоследних.Валюта

       ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыВРезерве.Остатки(, {(Склад = &Склад

                   И Качество = &Качество)}) КАК Резервы

       ПО СправочникНоменклатура.Ссылка = Резервы.Номенклатура

       ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(, {(Склад = &Склад

                   И Качество = &Качество)}) КАК Остатки

       ПО СправочникНоменклатура.Ссылка = Остатки.Номенклатура

СГРУППИРОВАТЬ ПО

   СправочникНоменклатура.Ссылка,

   СправочникНоменклатура.Родитель,

   СправочникНоменклатура.ЭтоГруппа,

   СправочникНоменклатура.Код,

   СправочникНоменклатура.Наименование,

   СправочникНоменклатура.Артикул,

   Резервы.КоличествоОстаток,

   Остатки.СтатусСобственности,

   Остатки.Качество,

   ЕСТЬNULL(Остатки.СтатусСобственности, Резервы.СтатусСобственности),

   ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) * КурсыВалютСрезПоследних.Курс,

   ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0),

   Штрихкоды.Штрихкод

В динамическом списке в произвольном запросе есть следующая конструкция: ВЫБОР     КОГДА НЕ Остатки.Качество.Наименование = «Новый» при выбранной основной таблице и утсановленном флаге «Динамическое считывание данных» возникает следующая ошибка Ошибка при выполнении запроса. Ошибка при выполнении запроса. по причине: Ошибка инициализации по причине: Ошибка создания набора данных «НаборДанныхДинамическогоСписка» по причине: Ошибка при исполнении запроса набора данных по причине: {(100, 4)}: Операция не разрешена в предложении «ГДЕ» если таблица основная не указана запрос отрабатывает нормально В чем может быть проблема?

#1
by Ненавижу Неопределен

Остатки.Качество.Наименование = «Новый» — позор ИЛИ ВЫБОР — я не вижу такого текста

у дин списка есть ограничений в запросах, типа ОБЪЕДЕНИТЬ, про выбор не слышал

Так больше устроит? просто пробовал менять на сравнение Строка = Строка вот в том то и дело что если эту конструкцию заменяю на 1 КАК ОстатокНеНовый, 2 КАК Остатки, 3 КАК НаОтветХранении всё отрабатывает самое интересное что запрос отрабатывает при получении первой порции списка(но не всегда), и эта ошибка вылетает при прокручивании вниз и получении следующей порции списка

вот весь запрос ВЫБРАТЬ    СправочникНоменклатура.Ссылка КАК Ссылка,    СправочникНоменклатура.Родитель,    ВЫБОР        КОГДА НЕ Остатки.Качество = ЗНАЧЕНИЕ(Справочник.Качество.Новый)        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, {(ТипЦены = &ТипЦены        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыВРезерве.Остатки(, {(Склад = &Склад        ПО СправочникНоменклатура.Ссылка = Резервы.Номенклатура        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(, {(Склад = &Склад

Никто не сталкивался что ли?

а если так   СУММА(ВЫБОР        КОГДА НЕ Остатки.Качество = ЗНАЧЕНИЕ(Справочник.Качество.Новый)

Работает! Спасибо! Тема закрыта!

Тэги: 1С 8

Комментарии доступны только авторизированным пользователям

Ошибка в запросе

ВЫБРАТЬ
ПланируемыеДвиженияОстатки.ДоговорКонтрагента,
ПланируемыеДвиженияОстатки.Сделка,
ПланируемыеДвиженияОстатки.ДокументРасчетовСКонтрагентом,
ПланируемыеДвиженияОстатки.СтатьяДвиженияДенежныхСредств,
ПланируемыеДвиженияОстатки.Проект,
ПланируемыеДвиженияОстатки.ДокументПланирования КАК ДокументПланирования,
ПланируемыеДвиженияОстатки.ДокументПланирования.СуммаДокумента КАК СуммаДокумента,
ВЫРАЗИТЬ
(ВЫБОР
КОГДА НЕ СУММА(ПланируемыеДвиженияОстатки.СуммаПлатежа)=0
ТОГДА СУММА(ПланируемыеДвиженияОстатки.СуммаПлатежа)
КОГДА ПланируемыеДвиженияОстатки.ДоговорКонтрагента.ВалютаВзаиморасчетов=&ВалютаДокумента
ТОГДА СУММА(ПланируемыеДвиженияОстатки.СуммаВзаиморасчетов)
КОГДА СУММА(ПланируемыеДвиженияОстатки.СуммаПлатежа)=0
И НЕ КурсыДоговоры.Курс=0
И НЕ &КурсДокумента=0
ТОГДА СУММА(ПланируемыеДвиженияОстатки.СуммаВзаиморасчетов)*КурсыДоговоры.Курс * &КратностьДокумента
/ (&КурсДокумента * КурсыДоговоры.Кратность)
ИНАЧЕ
0
КОНЕЦ КАК ЧИСЛО (15,2)) КАК СуммаПлатежа,
ВЫРАЗИТЬ
(ВЫБОР
КОГДА СУММА(ПланируемыеДвиженияОстатки.СуммаПлатежа)=0
ТОГДА КурсыДоговоры.Курс
КОГДА ПланируемыеДвиженияОстатки.ДоговорКонтрагента.ВалютаВзаиморасчетов=&ВалютаДокумента
ТОГДА &КурсДокумента
КОГДА НЕ СУММА(ПланируемыеДвиженияОстатки.СуммаПлатежа)=0
И НЕ &КурсДокумента=0
И НЕ СУММА(ПланируемыеДвиженияОстатки.СуммаВзаиморасчетов)= 0
И НЕ &КратностьДокумента=0 Тогда
СУММА(ПланируемыеДвиженияОстатки.СуммаПлатежа) * &КурсДокумента * КурсыДоговоры.Кратность
/ (СУММА(ПланируемыеДвиженияОстатки.СуммаВзаиморасчетов) * &КратностьДокумента)
ИНАЧЕ
0
КОНЕЦ КАК ЧИСЛО (10,4)) КАК КурсВзаиморасчетов,
ВЫРАЗИТЬ
(ВЫБОР
КОГДА ПланируемыеДвиженияОстатки.ДоговорКонтрагента.ВалютаВзаиморасчетов=ПланируемыеДвиженияОстатки.ДокументПланирования.ВалютаДокумента
ТОГДА ПланируемыеДвиженияОстатки.ДокументПланирования.КурсДокумента
КОГДА НЕ СУММА(ПланируемыеДвиженияОстатки.СуммаПлатежа)=0
И НЕ ПланируемыеДвиженияОстатки.ДокументПланирования.КурсДокумента=0
И НЕ СУММА(ПланируемыеДвиженияОстатки.СуммаВзаиморасчетов)= 0
И НЕ ПланируемыеДвиженияОстатки.ДокументПланирования.КратностьДокумента=0 Тогда
СУММА(ПланируемыеДвиженияОстатки.СуммаПлатежа) * ПланируемыеДвиженияОстатки.ДокументПланирования.КурсДокумента * КурсыДоговоры.Кратность
/ (СУММА(ПланируемыеДвиженияОстатки.СуммаВзаиморасчетов) * ПланируемыеДвиженияОстатки.ДокументПланирования.КратностьДокумента)
ИНАЧЕ
0
КОНЕЦ КАК ЧИСЛО (10,4)) КАК КурсВзаиморасчетовПлан,
ПланируемыеДвиженияОстатки.ДоговорКонтрагента.ВалютаВзаиморасчетов КАК ВалютаВзаиморасчетов,
СУММА(ПланируемыеДвиженияОстатки.СуммаВзаиморасчетов) КАК СуммаВзаиморасчетов,
ВЫБОР
КОГДА ПланируемыеДвиженияОстатки.ДоговорКонтрагента.ВалютаВзаиморасчетов=&ВалютаДокумента
ТОГДА &КратностьДокумента
ИНАЧЕ
КурсыДоговоры.Кратность
КОНЕЦ КАК КратностьВзаиморасчетов,
ПланируемыеДвиженияОстатки.ДокументПланирования.ДатаПоступления КАК ДатаДвижения
ИЗ (
ВЫБРАТЬ
ПланируемыеОстатки.ДоговорКонтрагента,
ПланируемыеОстатки.Сделка,
ПланируемыеОстатки.ДокументРасчетовСКонтрагентом,
ПланируемыеОстатки.СтатьяДвиженияДенежныхСредств,
ПланируемыеОстатки.Проект,
ПланируемыеОстатки.ДокументПланирования КАК ДокументПланирования,
ПланируемыеОстатки.ДокументПланирования.СуммаДокумента КАК СуммаДокумента,
ПланируемыеОстатки.СуммаОстаток КАК СуммаПлатежа,
ПланируемыеОстатки.СуммаВзаиморасчетовОстаток КАК СуммаВзаиморасчетов
ИЗ
РегистрНакопления.ПланируемыеПоступленияДенежныхСредств.Остатки(,( (ДокументПланирования.ВалютаДокумента=&ПустойВалютаДокумента ИЛИ ДокументПланирования.ВалютаДокумента= &ВалютаДокумента)
И (ДокументПланирования.ФормаОплаты=&ПустойФормаОплаты ИЛИ ДокументПланирования.ФормаОплаты В (&ФормаОплаты))
И (ДокументПланирования.БанковскийСчетКасса=&ПустойСчетКасса ИЛИ
ДокументПланирования.БанковскийСчетКасса= &БанковскийСчетКасса ИЛИ
ДокументПланирования.БанковскийСчетКасса= Неопределено)
И (ДокументПланирования.Контрагент=&Контрагент ИЛИ ДокументПланирования.Контрагент=&ПустойКонтрагент)
И ДоговорКонтрагента=&ДоговорКонтрагента
И (СтатьяДвиженияДенежныхСредств=&ПустойСтатьяДвиженияДенежныхС ­редств ИЛИ СтатьяДвиженияДенежныхСредств=&СтатьяДвиженияДенежныхСредств ­)
И ДокументПланирования.ВидОперации = &ВидОперации
И (ДокументПланирования.Организация=&ПустойОрганизация ИЛИ ДокументПланирования.Организация=&Организация)
И (Сделка=Неопределено ИЛИ Сделка=&Сделка)))КАК ПланируемыеОстатки)КАК ПланируемыеДвиженияОстатки
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних(&ДатаПлатежа, ) КАК КурсыДоговоры
ПО ПланируемыеДвиженияОстатки.ДоговорКонтрагента.ВалютаВзаиморасчетов = КурсыДоговоры.Валюта
СГРУППИРОВАТЬ ПО
ПланируемыеДвиженияОстатки.ДоговорКонтрагента,
ПланируемыеДвиженияОстатки.Сделка,
ПланируемыеДвиженияОстатки.ДокументРасчетовСКонтрагентом,
ПланируемыеДвиженияОстатки.СтатьяДвиженияДенежныхСредств,
ПланируемыеДвиженияОстатки.Проект,
ПланируемыеДвиженияОстатки.ДокументПланирования,
КурсыДоговоры.Курс,
КурсыДоговоры.Кратность

<(40, 76)>: Нельзя использовать производные от полей составного типа в выражениях не присутствующих полностью в предложении СГРУППИРОВАТЬ ПО «ПланируемыеДвиженияОстатки.ДокументПланирования.ВалютаДокумента»
КОГДА ПланируемыеДвиженияОстатки.ДоговорКонтрагента.ВалютаВзаиморасчетов= >ПланируемыеДвиженияОстатки.ДокументПланирования.ВалютаДокумента

Источник

Решение ошибки считывания вторичной информации

33047a59c66b386810491def95f58c6a

Так как база была тестовая, решил поэкспериментировать. Сразу скажу, починить удалось.

Из чтения форумов понял, что проблема в таблице dbo.Params.

Но замена ее на рабочую не помогла. Стал получать ошибки вида «В схеме базы данных нет таблицы с именем ConstChngR24″.

Вернул все обратно. При просмотре содержания заметил следующее

642b661330f96de4f13c59f19f0566cb

Как видно, две записи, которые имеют вид «УникальныйИдентификатор.si», при этом время в колонке [Modified] очень похоже на время, когда база перестала работать.

После удаления этих записей база заработала без проблем.

Специальные предложения

f71a8c4e70c0ff03708038e2b0210df8

9c2808762ec294cd4c55532520b9c521

895fb1e0f7afc3c0ed0d73bf5ee9d9d0

egais promo

b34b292ed32e9501f98cc31df406353e

789363929b9f37ddc5641a069a5fe52e

5b19cd6c4494a88b2abefce64a1b7565

199e2be4fd21dd8f4209d8ec34616c76

Обновление 20.10.21 08:00

99c88ac498344ef02672176a4feec7a5

См. также

Восстановление работоспособности файловой базы. 3. Конфигурация Промо

Восстановление работоспособности разрушенной файловой базы. Этап 3. Лечим конфигурацию.

21.04.2013 52236 andrewks 20

Сбилась нумерация в справочнике «Номенклатура»

05.10.2021 585 user1358695 1

Ошибка «Существуют активные сеансы» в 1С

В данной статье речь пойдёт об ошибке в системе 1С: «Существуют активные сеансы работы с данной базой…», которая возникает при запуске программы. Будут рассмотрены причины возникновения ошибки, проведена её диагностика, а также описаны способы устранения неполадки.

01.10.2021 781 Koder_Line 0

Дублирование ключей в уникальном индексе ‘_ACCRGAT’ в локальной базе

Ошибка в локальной базе. Небольшая инструкция, как устранить.

11.08.2021 581 AntonChausov 0

Восстановление SQL базы 1С 8.2. рухнувшей во время сохранения конфигурации. Промо

08.02.2012 134453 VanDiesel1 139

Исправление ошибок 1С-ЭДО

Исправление ошибок 1С-ЭДО: «internalID не соответствует формату» и «документ не соответствует формату».

09.08.2021 2781 Power_0N 2

Ошибка SDBL в 1С

Приветствую, коллеги! В данной статье будет рассмотрена знакомая и набившая оскомину многим специалистам 1С ошибка SDBL, а также возможные пути её устранения.

02.06.2021 3942 Koder_Line 4

Ошибка формата потока данных 1С

Приветствую, коллеги! Если Вы читаете это, полагаю, оповещение об ошибке формата потока, представленное ниже, уже должно быть Вам знакомо. В статье я расскажу о том, когда в системе 1С может возникать ошибка формата потока, по каким причинам это происходит и как исправить ошибку. Надеюсь, описанное далее поможет решить Вашу проблему. Цели наши ясны как белый день – далее затягивать вступление нет смысла, а потому перейдем сразу к делу!

01.06.2021 6115 Koder_Line 1

Ошибка «Запрошенное имя верно, но данные запрошенного типа не найдены»

Приветствую, коллеги! В данной статье будет рассмотрена ошибка «Запрошенное имя верно, но данные запрошенного типа не найдены»: причины её возникновения и инструктаж по устранению неполадки.

23.04.2021 1403 Koder_Line 0

Ошибка в программе 1С: «Операция не может быть выполнена»

Доброго времени суток, коллеги! В данной статье будет рассмотрено несколько вариаций ошибки программы 1С «Операция не может быть выполнена…», причины возникновения, а также пути решения на примерах.

23.04.2021 923 Koder_Line 0

Бухгалтерия 3.0 + Windows 10. Зависание при сохранении бухгалтерского баланса

01.04.2021 906 SnorkL1 4

Ошибка формата потока. ЗУП 3.1.16.77 и немного о себе

Решая задачу клиента по настройке синхронизации БП и ЗУП, столкнулся с «Ошибкой формата потока». В этой статье расскажу вам, как эту проблему удалось решить, и немного расскажу о себе.

31.03.2021 767 Dimario_puzo 7

Ошибка при открытии панели функций «Значение не является значением объектного типа (ЭтоГруппа)»

При открытии панели функций в 1С: Бухгалтерии 2.0 возникает ошибка «Значение не является значением объектного тип (ЭтоГруппа)»

18.02.2021 544 delta 0

Причина появления и исправление ошибки SDBL «Таблица или поле Fld. не содержится в резделе FROM»

20.01.2021 1506 smwed 2

Пользователь ИБ не идентифицирован

Реанимация ИБ после такой ошибки

12.01.2021 33659 mrcamomile 94

Как восстановить конфигурацию, если разрушены данные

В статье описан один из вариантов восстановления кода конфигурации, если при обновлении данных разрушилась база, и конфигуратор больше не открывается.

23.10.2020 2347 aramius 4

Ошибка формата потока данных, частный случай

Вариант решения ошибки формата потока данных при попытке открытия конфигурации в конфигураторе.

11.07.2020 3248 Zhilyakovdr 8

Исправление ошибки SDBL: Тип поля * несовместим с типом поля *

После обновления конфигурации при записи одного документа стала появляться ошибка «Ошибки SDBL: Тип поля * несовместим с типом поля». В статье привожу пример исправления ошибки.

17.06.2020 5060 Farsis 2

Восстановление данных 1С8 при помощи механизма РИБ

Предлагаю сообществу способ восстановления утраченных данных из бэкапа используя механизм РИБ. Зачастую наличие бэкапа базы не позволяет просто взять и откатить состояние базы на утро или вечер предыдущего дня. Бывает так, что утерю важных данных заметили спустя 2 дня, и свежий бекап нам не поможет. Предлагаю относительно простой способ переноса определенных данных из резервной копии базы в рабочую. Не надо писать обработку по выгрузке, загрузке данных или по переносу через COM-соединение. Единственное условие: в базе должны работать обмены РИБ.

13.06.2020 1869 Vortigaunt 1

Ошибка формата потока. Частный случай при обновлении

При обновлении конфигурации столкнулся с ошибкой формата потока. Нашел вполне экономное решение по времени для решение этой проблемы.

25.04.2020 6459 Gasilin 8

Проверка регистраторов при обновлении конфигурации

23.04.2020 3447 ipoloskov 13

У Вас задваивание безналичных платежей в УТ 11.4, исправляем.

16.04.2020 4673 VID1234 14

Не знаю, что именно вызвало такую ошибку, поэтому напишу, что выполнен был переход с платформы 8.3.10.2561 на 8.3.16.1148. Конфигурация разрабатывалась с использованием хранилища конфигурации. База серверная на Microsoft SQL. В результате изменений в конфигурации, не вызывающих реструктуризацию базы, после нажатия F7 возникло такое сообщение.

Источник

Предложение ВЫБРАТЬ (SELECT) в языке запросов 1С:Предприятия 8

В данной статье рассмотрено предложение ВЫБРАТЬ, его место и роль в языке запросов 1С:Предприятия 8.

Предложение ВЫБРАТЬ является единственным обязательным элементом любого запроса, поэтому изучение языка запросов начинается именно с него. Основная цель предложения ВЫБРАТЬ заключается в том, чтобы указать поля выборки, которые должны попасть в результат запроса.

Ниже рассмотрены следующие темы:

Место предложения ВЫБРАТЬ в структуре запроса

Структуру запроса 1С:Предприятия 8 можно представить в виде следующей схемы:

overall

Из приведенной схемы можно сделать следующие выводы:

Примеры запросов с предложением ВЫБРАТЬ

1. Выборка всех полей (кроме виртуальных) из таблиц

Вместо перечисления списка полей можно указать звездочку («*») и тогда в результат запроса попадут все поля таблицы-источника, кроме виртуальных. Например:

//обращение к таблице справочника
ВЫБРАТЬ * ИЗ Справочник.Номенклатура

//обращение к таблице документа
ВЫБРАТЬ * ИЗ Документ.РасходныйКассовыйОрдер

//обращение к основной таблице регистра накопления
ВЫБРАТЬ * ИЗ РегистрНакопления.ПродажиКомпании

//обращение к виртуальной таблице регистра накопления
ВЫБРАТЬ * ИЗ РегистрНакопления.ПродажиКомпании.Обороты

Замечание: В языке запросов есть возможность обойтись без предложения ИЗ, если описание поля содержит полный путь к нему с указанием таблицы-источника, например,

//выборка всех невиртуальных полей из таблицы справочника
ВЫБРАТЬ Справочник.Номенклатура.*

//выборка определенных полей из таблицы справочника
ВЫБРАТЬ
Справочник.Номенклатура.Код,
Справочник.Номенклатура.Наименование,
Справочник.Номенклатура.Представление //виртуальное поле

2. Выборка только определенных полей из таблиц

Самым обычным способом является перечисление нескольких полей из таблицы-источника запроса, тогда только эти поля попадут в результат запроса.

//обращение к таблице справочника
ВЫБРАТЬ Код, Наименование, Артикул, СтранаПроисхождения
ИЗ Справочник.Номенклатура

//обращение к таблице документа
ВЫБРАТЬ Номер, Дата, ПодразделениеКомпании, СуммаДокумента
ИЗ Документ.РасходныйКассовыйОрдер

3. Виртуальные поля

Некоторые поля в таблицах-источниках виртуальные, например, поле «Представление» для таблицы справочника и документа, или поле «МоментВремени» для документа. Это значит, что они не хранятся в базе данных, а генерируются «на лету». Виртуальные поля не включаются в результат запроса, когда вместо списка полей указана звездочка («*»), их нужно указывать явно, например «ВЫБРАТЬ *, Представление ИЗ Справочник.Товары». Такое решение было принято для ускорения выполнения классического запроса «ВЫБРАТЬ * ИЗ. ». В этом случае не требуется генерировать представления для элементов справочников и документов, следовательно запросы будут выполняться быстрее.

//обращение к таблице справочника (выбрать два обычных поля и одно виртуальное)
ВЫБРАТЬ Код, Наименование, Представление
ИЗ Справочник.Номенклатура

//обращение к таблице документа (выбрать все невиртуальные поля и два виртуальных)
ВЫБРАТЬ *, Представление, МоментВремени
ИЗ Документ.РасходныйКассовыйОрдер

4. Разыменование ссылочных полей

В 1С:Предприятии 8 допускается обращение к свойствам объектов через одну или несколько точек, например, «Номенклатура.Поставщик.Страна». Это позволяет значительно упростить написание запросов. Рекомендуется всегда пользоваться разыменованием полей там, где это возможно, чтобы не усложнять запросы лишними конструкциями.

5. Псевдонимы полей (ключевое слово КАК / AS)

Для поля может быть назначен псевдоним с помощью ключевого слова КАК. Это позволяет обращаться к полю по псевдониму при указании итогов и порядка сортировки, а также при обходе выборки из результата запроса, например:

ВЫБРАТЬ
Ссылка КАК Документ,
Ответственный КАК МатериальноОтветственный
ИЗ Документ.АвансовыйОтчет
УПОРЯДОЧИТЬ ПО МатериальноОтветственный

Ключевое слово КАК является необязательным, то есть вышеприведенный запрос можно записать так:

ВЫБРАТЬ
Ссылка Документ,
Ответственный МатериальноОтветственный
ИЗ Документ.АвансовыйОтчет

6. Обращение к табличной части как вложенной таблице

В этом случае поле результата запроса будет иметь тип РезультатЗапроса, то есть содержать вложенный результат запроса, сформированный на основе табличной части.

//получение табличной части как вложенной таблицы результата запроса
ВЫБРАТЬ Номер, Дата, Товары
ИЗ Документ.АвансовыйОтчет

//получение нескольких колонок табличной части как вложенной таблицы
ВЫБРАТЬ Номер, Дата, Товары.(Номенклатура, Количество)
ИЗ Документ.АвансовыйОтчет

Обратите внимание, что если выполнить следующий запрос, то в результате запроса будет две вложенные таблицы: в первой — одна колонка Номенклатура, а во второй — колонка Количество:

ВЫБРАТЬ Номер, Дата, Товары.Номенклатура, Товары.Количество
ИЗ Документ.АвансовыйОтчет

7. Обращение к табличной части как таблице-источнику

При таком способе обращения имя вложенной таблицы фигурирует в имени таблицы-источника (предложение ИЗ или полные имена полей) и в результате запроса нет вложенных таблиц.

//выборка всех полей из табличной части
ВЫБРАТЬ * ИЗ Документ.АвансовыйОтчет.Товары

// выборка определенных полей из табличной части
ВЫБРАТЬ Номенклатура, Количество, Цена, Сумма
ИЗ Документ.АвансовыйОтчет.Товары

//задание псевдонимов для полей табличной части
ВЫБРАТЬ Документ.АвансовыйОтчет.Товары.(Номенклатура, Сумма КАК СуммаПоСтроке)

//обращение к реквизитам документа и реквизитам табличной части (поле Ссылка)
ВЫБРАТЬ
Ссылка.Номер, Ссылка.Дата, Ссылка.Ответственный, //реквизиты документа
Номенклатура, Количество, Цена, Сумма //реквизиты табличной части
ИЗ Документ.АвансовыйОтчет.Товары

8. Ключевое слово РАЗЛИЧНЫЕ / DISTINCT

Ключевое слово РАЗЛИЧНЫЕ позволяет оставить в результате запроса только отличающиеся строки.

ВЫБРАТЬ РАЗЛИЧНЫЕ Ответственный
ИЗ Документ.АвансовыйОтчет

9. Ключевое слово ПЕРВЫЕ / TOP

Данное ключевое слово позволяет ограничить выборку несколькими первыми записями. Часто это ключевое слово применяется в комбинации с сортировкой (предложение УПОРЯДОЧИТЬ ПО).

ВЫБРАТЬ ПЕРВЫЕ 10 Номер, Дата, СуммаДокумента
ИЗ Документ.АвансовыйОтчет
УПОРЯДОЧИТЬ ПО СуммаДокумента УБЫВ

10. Выражения в списке полей выборки

В качестве описания поля выборки может быть выражение, использующее следующие элементы:

Ниже приведено несколько примеров с выражениями в списке полей выборки:

//арифметические операции
ВЫБРАТЬ
Номенклатура,
Количество * Цена КАК РасчСумма1,
Сумма / Количество КАК РасчСумма2
ИЗ Документ.АвансовыйОтчет.Товары

//литералы типа «булево», «число», «строка», «дата»
ВЫБРАТЬ Истина, Ложь, 10.5, «Текст», ДАТАВРЕМЯ(2003,12,25)

//конкатенация строк
ВЫБРАТЬ «Сотрудник » + Ответственный.Наименование
ИЗ Документ.АвансовыйОтчет

//агрегатные функции
ВЫБРАТЬ
ПодразделениеКомпании,
СУММА(СуммаДокумента),
МАКСИМУМ(СуммаДокумента),
МИНИМУМ(СуммаДокумента),
СРЕДНЕЕ(СуммаДокумента),
КОЛИЧЕСТВО(*)
ИЗ Документ.АвансовыйОтчет
СГРУППИРОВАТЬ ПО ПодразделениеКомпании

//операция выбора
ВЫБРАТЬ Наименование,
ВЫБОР
КОГДА СтранаПроисхождения.Наименование = «КИТАЙ» ТОГДА «Азия»
КОГДА СтранаПроисхождения.Наименование = «ТАЙВАНЬ» ТОГДА «Азия»
КОГДА СтранаПроисхождения.Наименование = «США» ТОГДА «Америка»
КОГДА СтранаПроисхождения.Наименование = «КАНАДА» ТОГДА «Америка»
ИНАЧЕ «Другое»
КОНЕЦ КАК Страна
ИЗ Справочник.Номенклатура

//операция приведения типов
ВЫБРАТЬ
Ссылка,
Номенклатура,
ВЫРАЗИТЬ(Сумма / 3 КАК Число(5,2)) КАК ТретьСуммы
ИЗ Документ.АвансовыйОтчет.Товары

Таким образом, предложение ВЫБРАТЬ является важнейшим элементом языка запросов, поскольку позволяет указать требуемые поля результата запроса. Гибкие возможности предложения ВЫБРАТЬ позволяют использовать язык запросов для решения самых разнообразных задач.

Источник

ПОДОБНО в операции выбора

Помогите разобраться.
Есть работающий запрос, который выводит мобильные телефоны и их хозяев из регистра сведений КонтактнаяИнформация:

ВЫБРАТЬ
КонтактнаяИнформация.Объект,
КонтактнаяИнформация.Поле3
ИЗ
РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
ГДЕ
КонтактнаяИнформация.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Телефон)
И КонтактнаяИнформация.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ТелефонКонтрагента)
И КонтактнаяИнформация.Поле3 ПОДОБНО «[78]2987317117»

Задача: вывести все телефоны регистра и определить, является ли каждый телефон мобильным.
Вариант решения:

ВЫБРАТЬ
КонтактнаяИнформация.Объект,
КонтактнаяИнформация.Поле3,
КонтактнаяИнформация.Поле3 ПОДОБНО «[78]8688316533» КАК Мобильный
ИЗ
РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
ГДЕ
КонтактнаяИнформация.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Телефон)
И КонтактнаяИнформация.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ТелефонКонтрагента

В поле Мобильный хотим видеть Истина или Ложь, однако при выполнении имеем ошибку:
«Операция не разрешена в предложении «Выбрать».

Представление(КонтактнаяИнформация.Поле3) ПОДОБНО «[78]9351993245» КАК Мобильный

ВЫРАЗИТЬ (КонтактнаяИнформация.Поле3 КАК СТРОКА(15)) ПОДОБНО «[78]4849341424» КАК Мобильный

Источник

Оперативное и неоперативное проведение документов в 1С 8.3

Режим проведения документа

В первом случае файл проводится с учетом нынешнего времени, благодаря этому программа может контролировать многие торговые процессы, к примеру, списание товаров или их продажа. Данный режим стоит применять, если нужна информация на текущий момент, так как если провести операцию чуть позже, данные будут уже совсем другими. Новый документ автоматически будет работать в данном режиме.

Неоперативное проведение ведет работу с прошлым или будущим, не ведя учет остатков. Часто бывает, что пользователь создал документ, но еще не провел его. Именно для таких случаев и предназначен этот режим, он позволяет избежать контроля программы, но это может привести к некоторым ошибкам или неточности учета. Например, будут списаны товары, которых уже нет в наличии. Так что лучше доверить выбор режима проводки 1С, программа сама подберет нужный способ.

Значения свойства «Оперативное проведение» у документов: «Разрешить» и «Запретить»

Рассмотрим, какие действия нужно провести чтобы включить оперативную настройку в программе «1С: Бухгалтерия предприятия 3.0». В предыдущих версиях порядок будет идентичным.

Запускаем программу через режим «Конфигуратор», открываем конфигурацию. Далее, находим дерево метаданных, раздел «Документы» и открываем свойство любого файла.

operativnoe i neoperativnoe1

operativnoe i neoperativnoe2

Для того, чтобы проводка была совершенна немедленно, ставим параметр «Разрешить». Проводить документы таким способом можно в обоих режимах. Регистры не влияют на оперативный вариант. С установленным значением «Разрешить» проводка может осуществляться как в прошлом, так и нынешнем времени. В случае использования прошедшей даты документ будет проведен в неоперативном режиме.

operativnoe i neoperativnoe3

Крайне не рекомендуется менять настройки установленные разработчиком, так как это может повлиять на процессы проведения документов и сбить алгоритмы программы. Не стоит изменять системное время и день проведения работы в 1С для того, чтобы поменять дату оперативного проведения. Это приведет к неправильным бухгалтерским расчетам, которые в дальнейшем вызовут вычислительные ошибки в учете.

Источник

Есть запрос вида:

Код

Выбрать 
  Спр.Код как Код,
  Количество(Различные Спр.Ссылка) как Колво
Из Справочник.Контрагенты как Спр
Сгруппировать ПО Спр.Код
ИМЕЮЩИЕ КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Спр.Ссылка) > 1

Он прекрасно открывается конструктором запросов ИР (не штатный 1С), но при попытки отредактировать это условие на вкладке отбор получаю ошибку «…. Операция не разрешена в предложении «ГДЕ»….»

Прикладываю скрин

Добавлено (07.07.2017, 22:33)
———————————————
Информация для техподдержки:


Цитата

ОС: Windows x86 version 6.2  (Build 9200)
Платформа: 8.3.10.2299
Конфигурация: 1С:ERP Управление предприятием 2 (2.2.2.73)
Режим БД: клиент-серверный
Приложение: Обычное приложение 32б
От имени администратора Windows: Нет
Режим совместимости: Версия8_3_8
Инструменты разработчика: Портативные 4.15p

Ошибка 3705 во время выполнения происходит потому, что только наборы записей ADO на стороне клиента rs можно отключить Это происходит, когда вы пытаетесь отключить набор записей ADO на стороне сервера. Вам нужно установить CursorLocation свойство набора записей ADO для adUseClient, Предположим, что ваш ADODB.Connection переменная называется cn, вам нужно добавить следующую строку, прежде чем открывать соединение:

Set cn = New ADODB.Connection
cn.CursorLocation = adUseClient ' avoid error 3705
cn.Open "..."

Вот полный пример, предоставленный Microsoft

Private Sub Command1_Click()

Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset

Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset

'Place cn.CursorLocation = adUseClient here
cn.Open "Provider=SQLOLEDB;Data Source=<SQL Server>;Initial Catalog=pubs;User Id=<UID>;Password=<PWD>" 
rs.Open "Select * from authors", cn, adOpenStatic, adLockBatchOptimistic

Set rs.ActiveConnection = Nothing

rs.Close
cn.Close

End Sub

Увидеть

  • PRB: сообщение об ошибке времени выполнения 3705
  • Пример свойств BOF, EOF и закладок (VB)

Понравилась статья? Поделить с друзьями:
  • Ошибка операция не может быть завершена поскольку
  • Ошибка операция не может быть завершена отказано в доступе
  • Ошибка операция не завершена поскольку файл содержит вирус
  • Ошибка операция не допускается если
  • Ошибка операция не была успешно завершена торрент