20.09.13 — 12:39
Добрый день!
Помогите разобраться где ошибка во вложенном запросе, точнее я не очень понимаю как правильно его написать. Вот кусок запроса, и он выдает ошибку «Синтаксическая ошибка «ВЫБРАТЬ»
// Цена
ВЫБОР
КОГДА ТЧ.Работы.Наименование ПОДОБНО &РабСмена
Тогда ВЫБОР
КОГДА ТЧ.ЦенаВнутренная = 1
ТОГДА
(ВЫБРАТЬ
РаботникиОрганизацийСрезПоследних.Стоимость1часа
ИЗ
РегистрСведений.РаботникиОрганизаций.СрезПоследних(&Конец, ФизЛицо = &ФизЛицо) КАК РаботникиОрганизацийСрезПоследних
ГДЕ
РаботникиОрганизацийСрезПоследних.Организация = &Организация
АВТОУПОРЯДОЧИВАНИЕ) КАК ВложенныйЗапросРаботникиОрганизаций
ИНАЧЕ ТЧ.ЦенаВнутренная
КОНЕЦ
ИНАЧЕ 0
КОНЕЦ КАК ЦенаРабочаяСмена,
1 — 20.09.13 — 12:40
Не прокатит так.
2 — 20.09.13 — 12:41
+(0) ошибку выдает на 6 строку (как здесь)
3 — 20.09.13 — 12:43
(1) ага, не прокатывает, наверно нужно чтобы было предложение с «ИЗ»
4 — 20.09.13 — 12:45
(3) Нужно для начала читать документацию. И осознавать, что запросы 1с — это не запросы SQL
5 — 20.09.13 — 12:46
(0)
а скобку закрыть не пробовали?
6 — 20.09.13 — 12:47
(0) в снеговике это не реализовано.. пока
7 — 20.09.13 — 12:47
(4) хотя, конечно, в выражении ВЫБОР так нельзя, видимо
8 — 20.09.13 — 12:47
(3) смысл этого выбора в том заключается, что сначала идет условие на то что является ли эта номенклатура «Рабочей сменой», если да то опять условие: если Цена(стоимость 1 часа) этой рабочей смены = 1 (такое у нас бывает на внутренние работы), то нужно эту стоимость брать из вложенного подзапроса из период. РС РаботникиОрганизаций, иначе если не равно 1, то из ТЧ — табличной части документа
9 — 20.09.13 — 12:48
нет там реализации подзапроса в кейсе
10 — 20.09.13 — 12:49
(5) в какой строке?
11 — 20.09.13 — 12:52
В качестве цены у тебя получается результат запроса.
Выбери ВложенныйЗапросРаботникиОрганизаций.Стоимость1часа
12 — 20.09.13 — 12:52
(4) а какую документацию почитать?
13 — 20.09.13 — 12:52
(11) да
14 — 20.09.13 — 12:55
(11) а как это написать ?
15 — 20.09.13 — 13:00
Написала так:
// Цена
ВЫБОР
КОГДА ТЧ.Работы.Наименование ПОДОБНО &РабСмена
Тогда ВЫБОР
КОГДА ТЧ.ЦенаВнутренная = 1
ТОГДА
ВЫБРАТЬ ВложенныйЗапросРаботникиОрганизаций.Стоимость1часа ИЗ
(ВЫБРАТЬ
РаботникиОрганизацийСрезПоследних.Стоимость1часа
ИЗ
РегистрСведений.РаботникиОрганизаций.СрезПоследних(&Конец, ФизЛицо = &ФизЛицо) КАК РаботникиОрганизацийСрезПоследних
ГДЕ
РаботникиОрганизацийСрезПоследних.Организация = &Организация
АВТОУПОРЯДОЧИВАНИЕ) КАК ВложенныйЗапросРаботникиОрганизаций
ИНАЧЕ ТЧ.ЦенаВнутренная
КОНЕЦ
ИНАЧЕ 0
КОНЕЦ КАК ЦенаРабочаяСмена,
16 — 20.09.13 — 13:01
(15) + но все равно ошибка
17 — 20.09.13 — 13:04
(15)Было же сказано, что не работает так. Можно соединить.
18 — 20.09.13 — 13:06
(17) а как тогда сделать по-другому?
19 — 20.09.13 — 13:07
(15) приведи полный текст запроса
20 — 20.09.13 — 13:08
(19)
ВЫБРАТЬ
ДатаСоздания,
Клиент,
Сумма(СуммаРабочаяСмена) КАК СуммаРабСмена,
Сумма(КоличествоРабочаяСмена) КАК КоличествоРабочаяСмена,
Сумма(ЦенаРабочаяСмена) КАК ЦенаРабочаяСмена,
Сумма(СуммаДопРаботы) КАК СуммаДопРаботы,
Сумма(СуммаПитание) КАК СуммаПитание,
Сумма(СуммаТранспорт) КАК СуммаТранспорт
ИЗ
(ВЫБРАТЬ
Ссылка.ДатаСоздания,
Ссылка.Клиент,
// Количество
ВЫБОР
КОГДА ТЧ.Работы.Наименование ПОДОБНО &РабСмена
Тогда ТЧ.Количество
ИНАЧЕ 0
КОНЕЦ КАК КоличествоРабочаяСмена,
ВЫБОР
КОГДА ТЧ.Работы.Наименование НЕ ПОДОБНО &РабСмена
Тогда ТЧ.Количество
ИНАЧЕ 0
Конец КАК КоличествоДопРаботы,
0 КАК КоличествоПитание,
0 КАК КоличествоТранспорт,
// Цена
ВЫБОР
КОГДА ТЧ.Работы.Наименование ПОДОБНО &РабСмена
Тогда ВЫБОР
КОГДА ТЧ.ЦенаВнутренная = 1
ТОГДА
ВЫБРАТЬ ВложенныйЗапросРаботникиОрганизаций.Стоимость1часа ИЗ
(ВЫБРАТЬ
РаботникиОрганизацийСрезПоследних.Стоимость1часа
ИЗ
РегистрСведений.РаботникиОрганизаций.СрезПоследних(&Конец, ФизЛицо = &ФизЛицо) КАК РаботникиОрганизацийСрезПоследних
ГДЕ
РаботникиОрганизацийСрезПоследних.Организация = &Организация
АВТОУПОРЯДОЧИВАНИЕ) КАК ВложенныйЗапросРаботникиОрганизаций
ИНАЧЕ ТЧ.ЦенаВнутренная
КОНЕЦ
ИНАЧЕ 0
КОНЕЦ КАК ЦенаРабочаяСмена,
ВЫБОР
КОГДА ТЧ.Работы.Наименование НЕ ПОДОБНО &РабСмена
Тогда ТЧ.ЦенаВнутренная
ИНАЧЕ 0
Конец КАК ЦенаДопРаботы,
0 КАК ЦенаПитание,
0 КАК ЦенаТранспорт,
// Сумма
ВЫБОР
КОГДА ТЧ.Работы.Наименование ПОДОБНО &РабСмена
Тогда ТЧ.Количество*ТЧ.ЦенаВнутренная
ИНАЧЕ 0
КОНЕЦ КАК СуммаРабочаяСмена,
ВЫБОР
КОГДА ТЧ.Работы.Наименование НЕ ПОДОБНО &РабСмена
Тогда ТЧ.Количество*ТЧ.ЦенаВнутренная
ИНАЧЕ 0
Конец КАК СуммаДопРаботы,
0 КАК СуммаПитание,
0 КАК СуммаТранспорт
ИЗ
Документ.ЗаявкаНаряд.Работы КАК ТЧ
ГДЕ
Ссылка.Работы.Исполнитель = &Исполнитель
И
Ссылка.ДатаСоздания Между &Начало и &Конец
ОБЪЕДИНИТЬ
ВЫБРАТЬ
Ссылка.ДатаСоздания,
Ссылка.Клиент,
// Количество
0 КАК КоличествоРабочаяСмена,
0 КАК КоличествоДопРаботы,
(ВЫБОР
Когда ТЧ.Работы.Наименование ПОДОБНО &Питание
Тогда
ТЧ.Количество
КОНЕЦ) КАК КоличествоПитание,
(ВЫБОР
Когда ТЧ.Работы.Наименование ПОДОБНО &Транспорт
Тогда
ТЧ.Количество
Конец) КАК КоличествоТранспорт,
// Цена
0 КАК ЦенаРабочаяСмена,
0 КАК ЦенаДопРаботы,
(ВЫБОР
Когда ТЧ.Работы.Наименование ПОДОБНО &Питание
Тогда
ТЧ.ЦенаВнутренная
КОНЕЦ) КАК ЦенаПитание,
(ВЫБОР
Когда ТЧ.Работы.Наименование ПОДОБНО &Транспорт
Тогда
ТЧ.ЦенаВнутренная
Конец) КАК ЦенаТранспорт,
// Сумма
0 КАК СуммаРабочаяСмена,
0 КАК СуммаДопРаботы,
(ВЫБОР
Когда ТЧ.Работы.Наименование ПОДОБНО &Питание
Тогда
ТЧ.Количество*ТЧ.ЦенаВнутренная
КОНЕЦ) КАК СуммаПитание,
(ВЫБОР
Когда ТЧ.Работы.Наименование ПОДОБНО &Транспорт
Тогда
ТЧ.Количество*ТЧ.ЦенаВнутренная
Конец) КАК СуммаТранспорт
ИЗ
Документ.ЗаявкаНаряд.НакладныеРасходы КАК ТЧ
ГДЕ
Ссылка.Работы.Исполнитель = &Исполнитель
И
Ссылка.ДатаСоздания Между &Начало и &Конец ) КАК ВложенныйЗапрос
СГРУППИРОВАТЬ ПО ДатаСоздания, Клиент
УПОРЯДОЧИТЬ ПО
ДатаСоздания, Клиент
ИТОГИ ПО ОБЩИЕ
21 — 20.09.13 — 13:08
(18) см. (9).
22 — 20.09.13 — 13:10
(21) уже посмотрела, тогда как иначе сделать?
23 — 20.09.13 — 13:14
Всё-таки лучше через соединение.
24 — 20.09.13 — 13:15
(22) + понятно что цену можно оставить такой какая есть и уже потом ее вытащить, после выполнения запроса, но хочется чтоб в запросе все считалось
25 — 20.09.13 — 13:15
(23) а что с чем соединять?
26 — 20.09.13 — 13:17
ФизЛицо, которое во вложенном запросе есть в документе?
27 — 20.09.13 — 13:19
(26) оно есть в табличной части, из которой берутся цифры
28 — 20.09.13 — 13:20
Брутально
29 — 20.09.13 — 13:21
Или соединить документ с регистром по реквизиту Организация (думаю в документе он должен быть). И оставить то же условие по ФизЛицу.
30 — 20.09.13 — 13:21
(26) в документе есть реквизит «Исполнитель», но бывают случаи когда в ТЧ помимо исполнителя еще другой сотрудник выбран, поэтому физлицо берется из ТЧ документа
31 — 20.09.13 — 13:22
(29) проблема в том что в документе нету реквизита Организация(
32 — 20.09.13 — 13:25
(30) Ну так соединяй по ФизЛицу из ТЧ.
33 — 20.09.13 — 13:26
(31) у нас несколько организаций, но только в одной возможны такие случаи когда стоимость 1 часа = 1, и именно по ней идет отбор в подзапросе
34 — 20.09.13 — 13:32
Всё, что в ВЫБОР оставляешь.
Вложенный запрос убираешь. Вместо него — РаботникиОрганизацийСрезПоследних.Стоимость1часа
ну и в конце
ИЗ
Документ.ЗаявкаНаряд.Работы КАК ТЧ
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций.СрезПоследних(&Конец) КАК РаботникиОрганизацийСрезПоследних
ПО ТЧ.Сотрудник = РаботникиОрганизацийСрезПоследних.ФизЛицо
ГДЕ
…
35 — 20.09.13 — 13:52
(34) спасибо большое! единственное что получилось так, что когда в регистре РаботникиОрганизаций 1 запись по сотруднику, то запрос правильно выдает, а когда записей в регистре несколько по этому сотрдунику но от разных дат, то Цена 1 часа суммируется
36 — 20.09.13 — 13:54
(35) + как сделать чтобы выбиралась только последняя запись?
37 — 20.09.13 — 14:00
(35) СрезПоследних выдаёт несколько записей? Тогда смотри какие ещё измерения у регистра.
38 — 20.09.13 — 14:02
(37) у регистра 3 измерения: ФизЛицо, Организация, Подразделение
39 — 20.09.13 — 14:10
(38)Это клево. Какой смысл?
Тогда так
Выбрать РабОрг.Стоимость1часа из (Выбрать физлицо, максимум(период) как Период из РегистрСведений.РаботникиОрганизаций как РаботникиОрганизаций где Организация=&Организация) как ВложеныйЗапрос
Левое соединение РегистрСведений.РаботникиОрганизаций как РабОрг
по РабОрг.Физлицо = ВложеныйЗапрос.Физлицо
и РабОрг.Период = ВложеныйЗапрос.Период
40 — 20.09.13 — 14:18
(39) этот запрос написать вместо этого ?
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций.СрезПоследних(&Конец) КАК РаботникиОрганизацийСрезПоследних
ПО ТЧ.Исполнитель = РаботникиОрганизацийСрезПоследних.ФизЛицо
41 — 20.09.13 — 14:23
(40)Вместо РегистрСведений.РаботникиОрганизаций.СрезПоследних(&Конец)
42 — 20.09.13 — 14:26
(41) ошибку выдает:
Поле не входит в группу «Физлицо»
Выбрать Физлицо
43 — 20.09.13 — 14:26
Вот так вернее для ваших целей.
Выбрать РабОрг.Стоимость1часа, РабОрг.Физлицо
из (Выбрать физлицо, максимум(период) как Период из РегистрСведений.РаботникиОрганизаций как РаботникиОрганизаций где Организация=&Организация и Период <=&Конец
Сгруппировать по физлицо
) как ВложеныйЗапрос
Левое соединение РегистрСведений.РаботникиОрганизаций как РабОрг
по РабОрг.Физлицо = ВложеныйЗапрос.Физлицо
и РабОрг.Период = ВложеныйЗапрос.Период
44 — 20.09.13 — 14:27
(42)Да, группировку забыла, смотри (43)
45 — 20.09.13 — 14:40
(44) спасибо) только запрос выдает стоимости1часа без отбора по организации
46 — 20.09.13 — 14:50
(45) разобралась, в конце надо было еще одну строчку добавить
где РабОрг.организация = &Организация (43) чтоб отбор был по организации у второй таблицы
47 — 20.09.13 — 14:54
(44) запрос вставила вместо РегистрСведений.РаботникиОрганизаций.СрезПоследних(&Конец) выдает ошибку:
Ожидается имя таблицы
<<?>>Выбрать РабОрг.физлицо
48 — 20.09.13 — 15:02
(47)А скобочки есть?
ЛЕВОЕ СОЕДИНЕНИЕ (ТУТ_ТЕКСТ_ЗАПРОСА) КАК РаботникиОрганизацийСрезПоследних
ПО ТЧ.Исполнитель = РаботникиОрганизацийСрезПоследних.ФизЛицо
49 — 23.09.13 — 07:42
(48) ага спасибо )
50 — 23.09.13 — 09:58
У меня не считает итог по строке — такое возможно осуществить в запросе?
«ВЫБРАТЬ
| ДатаСоздания,
| Клиент,
| Проведен,
| Сумма(СуммаРабочаяСмена) КАК СуммаРабочаяСмена,
| Сумма(КоличествоРабочаяСмена) КАК КоличествоРабочаяСмена,
| Сумма(ЦенаРабочаяСмена) КАК ЦенаРабочаяСмена,
| Сумма(СуммаДопРаботы) КАК СуммаДопРаботы,
| Сумма(СуммаПитание) КАК СуммаПитание,
| Сумма(СуммаТранспорт) КАК СуммаТранспорт,
| Сумма(СуммаРабочаяСмена+СуммаДопРаботы+СуммаПитание+СуммаТранспорт) КАК СуммаИтог
51 — 23.09.13 — 10:00
(50) + т.е. в последней строчке почему-то считает «Суммаитог» как СуммаРабочаяСмена а остальные суммы не прибавляет
AnisaL
52 — 23.09.13 — 10:35
(51) а если в ИТогах написать, то получится?
Синтаксическая ошибка ВЫБРАТЬ при выполнении запроса
Синтаксическая ошибка «ВЫБРАТЬ»<?> ВЫБРАТЬ возникает в 1С, когда в тексте запроса идут его блоки в подряд без разделения между собой.
Рис.1 Скриншот ошибки «Выбрать»
Например, в случаях:
- объединения запросов, когда подзапросы должны отделяться служебными словами «ОБЪЕДИНИТЬ» или «ОБЪЕДИНИТЬ ВСЕ«
- два запроса идущие в подряд для последующей выборки методом ВыбратьПакет(): требуется их разделение » ; «
- последующая выборка из временной таблицы: также необходимо разделение » ; «
- неверный синтаксис во вложенном запросе в конструкции ГДЕ Значение В (Выбрать ссылка из Справочники.ПримерСправочника): доступно только сравнение » В ()«, а не «=«, «>» и прочее
Замечу, что такая ошибка возникает при ручной правке текста, поскольку при формировании конструктором запроса, он вставляет разделители самостоятельно:
Цифры в начале ошибки (на рисунке — 386,1) — это номер строки в запросе. При большом тексте такая информация поможет быстрее локализовать ошибку.
Поведение системы
Выполнение запроса прерывается, но система продолжает работать
Об идеалах нации можно судить по ее рекламе.
AnisaL
20.09.13 — 12:39
Добрый день!
Помогите разобраться где ошибка во вложенном запросе, точнее я не очень понимаю как правильно его написать. Вот кусок запроса, и он выдает ошибку «Синтаксическая ошибка «ВЫБРАТЬ»
// Цена
ВЫБОР
КОГДА ТЧ.Работы.Наименование ПОДОБНО &РабСмена
Тогда ВЫБОР
КОГДА ТЧ.ЦенаВнутренная = 1
ТОГДА
(ВЫБРАТЬ
РаботникиОрганизацийСрезПоследних.Стоимость1часа
ИЗ
РегистрСведений.РаботникиОрганизаций.СрезПоследних(&Конец, ФизЛицо = &ФизЛицо) КАК РаботникиОрганизацийСрезПоследних
ГДЕ
РаботникиОрганизацийСрезПоследних.Организация = &Организация
АВТОУПОРЯДОЧИВАНИЕ) КАК ВложенныйЗапросРаботникиОрганизаций
ИНАЧЕ ТЧ.ЦенаВнутренная
КОНЕЦ
ИНАЧЕ 0
КОНЕЦ КАК ЦенаРабочаяСмена,
ДенисЧ
1 — 20.09.13 — 12:40
Не прокатит так.
AnisaL
2 — 20.09.13 — 12:41
+(0) ошибку выдает на 6 строку (как здесь)
AnisaL
3 — 20.09.13 — 12:43
(1) ага, не прокатывает, наверно нужно чтобы было предложение с «ИЗ»
ДенисЧ
4 — 20.09.13 — 12:45
(3) Нужно для начала читать документацию. И осознавать, что запросы 1с — это не запросы SQL
kanalex
5 — 20.09.13 — 12:46
(0)
а скобку закрыть не пробовали?
Ёпрст
6 — 20.09.13 — 12:47
(0) в снеговике это не реализовано.. пока
kanalex
7 — 20.09.13 — 12:47
(4) хотя, конечно, в выражении ВЫБОР так нельзя, видимо
AnisaL
8 — 20.09.13 — 12:47
(3) смысл этого выбора в том заключается, что сначала идет условие на то что является ли эта номенклатура «Рабочей сменой», если да то опять условие: если Цена(стоимость 1 часа) этой рабочей смены = 1 (такое у нас бывает на внутренние работы), то нужно эту стоимость брать из вложенного подзапроса из период. РС РаботникиОрганизаций, иначе если не равно 1, то из ТЧ — табличной части документа
Ёпрст
9 — 20.09.13 — 12:48
нет там реализации подзапроса в кейсе
AnisaL
10 — 20.09.13 — 12:49
(5) в какой строке?
George Wheels
11 — 20.09.13 — 12:52
В качестве цены у тебя получается результат запроса.
Выбери ВложенныйЗапросРаботникиОрганизаций.Стоимость1часа
AnisaL
12 — 20.09.13 — 12:52
(4) а какую документацию почитать?
AnisaL
13 — 20.09.13 — 12:52
(11) да
AnisaL
14 — 20.09.13 — 12:55
(11) а как это написать ?
AnisaL
15 — 20.09.13 — 13:00
Написала так:
// Цена
ВЫБОР
КОГДА ТЧ.Работы.Наименование ПОДОБНО &РабСмена
Тогда ВЫБОР
КОГДА ТЧ.ЦенаВнутренная = 1
ТОГДА
ВЫБРАТЬ ВложенныйЗапросРаботникиОрганизаций.Стоимость1часа ИЗ
(ВЫБРАТЬ
РаботникиОрганизацийСрезПоследних.Стоимость1часа
ИЗ
РегистрСведений.РаботникиОрганизаций.СрезПоследних(&Конец, ФизЛицо = &ФизЛицо) КАК РаботникиОрганизацийСрезПоследних
ГДЕ
РаботникиОрганизацийСрезПоследних.Организация = &Организация
АВТОУПОРЯДОЧИВАНИЕ) КАК ВложенныйЗапросРаботникиОрганизаций
ИНАЧЕ ТЧ.ЦенаВнутренная
КОНЕЦ
ИНАЧЕ 0
КОНЕЦ КАК ЦенаРабочаяСмена,
AnisaL
16 — 20.09.13 — 13:01
(15) + но все равно ошибка
catena
17 — 20.09.13 — 13:04
(15)Было же сказано, что не работает так. Можно соединить.
AnisaL
18 — 20.09.13 — 13:06
(17) а как тогда сделать по-другому?
manti
19 — 20.09.13 — 13:07
(15) приведи полный текст запроса
AnisaL
20 — 20.09.13 — 13:08
(19)
ВЫБРАТЬ
ДатаСоздания,
Клиент,
Сумма(СуммаРабочаяСмена) КАК СуммаРабСмена,
Сумма(КоличествоРабочаяСмена) КАК КоличествоРабочаяСмена,
Сумма(ЦенаРабочаяСмена) КАК ЦенаРабочаяСмена,
Сумма(СуммаДопРаботы) КАК СуммаДопРаботы,
Сумма(СуммаПитание) КАК СуммаПитание,
Сумма(СуммаТранспорт) КАК СуммаТранспорт
ИЗ
(ВЫБРАТЬ
Ссылка.ДатаСоздания,
Ссылка.Клиент,
// Количество
ВЫБОР
КОГДА ТЧ.Работы.Наименование ПОДОБНО &РабСмена
Тогда ТЧ.Количество
ИНАЧЕ 0
КОНЕЦ КАК КоличествоРабочаяСмена,
ВЫБОР
КОГДА ТЧ.Работы.Наименование НЕ ПОДОБНО &РабСмена
Тогда ТЧ.Количество
ИНАЧЕ 0
Конец КАК КоличествоДопРаботы,
0 КАК КоличествоПитание,
0 КАК КоличествоТранспорт,
// Цена
ВЫБОР
КОГДА ТЧ.Работы.Наименование ПОДОБНО &РабСмена
Тогда ВЫБОР
КОГДА ТЧ.ЦенаВнутренная = 1
ТОГДА
ВЫБРАТЬ ВложенныйЗапросРаботникиОрганизаций.Стоимость1часа ИЗ
(ВЫБРАТЬ
РаботникиОрганизацийСрезПоследних.Стоимость1часа
ИЗ
РегистрСведений.РаботникиОрганизаций.СрезПоследних(&Конец, ФизЛицо = &ФизЛицо) КАК РаботникиОрганизацийСрезПоследних
ГДЕ
РаботникиОрганизацийСрезПоследних.Организация = &Организация
АВТОУПОРЯДОЧИВАНИЕ) КАК ВложенныйЗапросРаботникиОрганизаций
ИНАЧЕ ТЧ.ЦенаВнутренная
КОНЕЦ
ИНАЧЕ 0
КОНЕЦ КАК ЦенаРабочаяСмена,
ВЫБОР
КОГДА ТЧ.Работы.Наименование НЕ ПОДОБНО &РабСмена
Тогда ТЧ.ЦенаВнутренная
ИНАЧЕ 0
Конец КАК ЦенаДопРаботы,
0 КАК ЦенаПитание,
0 КАК ЦенаТранспорт,
// Сумма
ВЫБОР
КОГДА ТЧ.Работы.Наименование ПОДОБНО &РабСмена
Тогда ТЧ.Количество*ТЧ.ЦенаВнутренная
ИНАЧЕ 0
КОНЕЦ КАК СуммаРабочаяСмена,
ВЫБОР
КОГДА ТЧ.Работы.Наименование НЕ ПОДОБНО &РабСмена
Тогда ТЧ.Количество*ТЧ.ЦенаВнутренная
ИНАЧЕ 0
Конец КАК СуммаДопРаботы,
0 КАК СуммаПитание,
0 КАК СуммаТранспорт
ИЗ
Документ.ЗаявкаНаряд.Работы КАК ТЧ
ГДЕ
Ссылка.Работы.Исполнитель = &Исполнитель
И
Ссылка.ДатаСоздания Между &Начало и &Конец
ОБЪЕДИНИТЬ
ВЫБРАТЬ
Ссылка.ДатаСоздания,
Ссылка.Клиент,
// Количество
0 КАК КоличествоРабочаяСмена,
0 КАК КоличествоДопРаботы,
(ВЫБОР
Когда ТЧ.Работы.Наименование ПОДОБНО &Питание
Тогда
ТЧ.Количество
КОНЕЦ) КАК КоличествоПитание,
(ВЫБОР
Когда ТЧ.Работы.Наименование ПОДОБНО &Транспорт
Тогда
ТЧ.Количество
Конец) КАК КоличествоТранспорт,
// Цена
0 КАК ЦенаРабочаяСмена,
0 КАК ЦенаДопРаботы,
(ВЫБОР
Когда ТЧ.Работы.Наименование ПОДОБНО &Питание
Тогда
ТЧ.ЦенаВнутренная
КОНЕЦ) КАК ЦенаПитание,
(ВЫБОР
Когда ТЧ.Работы.Наименование ПОДОБНО &Транспорт
Тогда
ТЧ.ЦенаВнутренная
Конец) КАК ЦенаТранспорт,
// Сумма
0 КАК СуммаРабочаяСмена,
0 КАК СуммаДопРаботы,
(ВЫБОР
Когда ТЧ.Работы.Наименование ПОДОБНО &Питание
Тогда
ТЧ.Количество*ТЧ.ЦенаВнутренная
КОНЕЦ) КАК СуммаПитание,
(ВЫБОР
Когда ТЧ.Работы.Наименование ПОДОБНО &Транспорт
Тогда
ТЧ.Количество*ТЧ.ЦенаВнутренная
Конец) КАК СуммаТранспорт
ИЗ
Документ.ЗаявкаНаряд.НакладныеРасходы КАК ТЧ
ГДЕ
Ссылка.Работы.Исполнитель = &Исполнитель
И
Ссылка.ДатаСоздания Между &Начало и &Конец ) КАК ВложенныйЗапрос
СГРУППИРОВАТЬ ПО ДатаСоздания, Клиент
УПОРЯДОЧИТЬ ПО
ДатаСоздания, Клиент
ИТОГИ ПО ОБЩИЕ
Ёпрст
21 — 20.09.13 — 13:08
(18) см. (9).
AnisaL
22 — 20.09.13 — 13:10
(21) уже посмотрела, тогда как иначе сделать?
George Wheels
23 — 20.09.13 — 13:14
Всё-таки лучше через соединение.
AnisaL
24 — 20.09.13 — 13:15
(22) + понятно что цену можно оставить такой какая есть и уже потом ее вытащить, после выполнения запроса, но хочется чтоб в запросе все считалось
AnisaL
25 — 20.09.13 — 13:15
(23) а что с чем соединять?
George Wheels
26 — 20.09.13 — 13:17
ФизЛицо, которое во вложенном запросе есть в документе?
AnisaL
27 — 20.09.13 — 13:19
(26) оно есть в табличной части, из которой берутся цифры
Dmitry1c
28 — 20.09.13 — 13:20
Брутально
George Wheels
29 — 20.09.13 — 13:21
Или соединить документ с регистром по реквизиту Организация (думаю в документе он должен быть). И оставить то же условие по ФизЛицу.
AnisaL
30 — 20.09.13 — 13:21
(26) в документе есть реквизит «Исполнитель», но бывают случаи когда в ТЧ помимо исполнителя еще другой сотрудник выбран, поэтому физлицо берется из ТЧ документа
AnisaL
31 — 20.09.13 — 13:22
(29) проблема в том что в документе нету реквизита Организация(
George Wheels
32 — 20.09.13 — 13:25
(30) Ну так соединяй по ФизЛицу из ТЧ.
AnisaL
33 — 20.09.13 — 13:26
(31) у нас несколько организаций, но только в одной возможны такие случаи когда стоимость 1 часа = 1, и именно по ней идет отбор в подзапросе
George Wheels
34 — 20.09.13 — 13:32
Всё, что в ВЫБОР оставляешь.
Вложенный запрос убираешь. Вместо него — РаботникиОрганизацийСрезПоследних.Стоимость1часа
ну и в конце
ИЗ
Документ.ЗаявкаНаряд.Работы КАК ТЧ
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций.СрезПоследних(&Конец) КАК РаботникиОрганизацийСрезПоследних
ПО ТЧ.Сотрудник = РаботникиОрганизацийСрезПоследних.ФизЛицо
ГДЕ
…
AnisaL
35 — 20.09.13 — 13:52
(34) спасибо большое! единственное что получилось так, что когда в регистре РаботникиОрганизаций 1 запись по сотруднику, то запрос правильно выдает, а когда записей в регистре несколько по этому сотрдунику но от разных дат, то Цена 1 часа суммируется
AnisaL
36 — 20.09.13 — 13:54
(35) + как сделать чтобы выбиралась только последняя запись?
George Wheels
37 — 20.09.13 — 14:00
(35) СрезПоследних выдаёт несколько записей? Тогда смотри какие ещё измерения у регистра.
AnisaL
38 — 20.09.13 — 14:02
(37) у регистра 3 измерения: ФизЛицо, Организация, Подразделение
catena
39 — 20.09.13 — 14:10
(38)Это клево. Какой смысл?
Тогда так
Выбрать РабОрг.Стоимость1часа из (Выбрать физлицо, максимум(период) как Период из РегистрСведений.РаботникиОрганизаций как РаботникиОрганизаций где Организация=&Организация) как ВложеныйЗапрос
Левое соединение РегистрСведений.РаботникиОрганизаций как РабОрг
по РабОрг.Физлицо = ВложеныйЗапрос.Физлицо
и РабОрг.Период = ВложеныйЗапрос.Период
AnisaL
40 — 20.09.13 — 14:18
(39) этот запрос написать вместо этого ?
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций.СрезПоследних(&Конец) КАК РаботникиОрганизацийСрезПоследних
ПО ТЧ.Исполнитель = РаботникиОрганизацийСрезПоследних.ФизЛицо
catena
41 — 20.09.13 — 14:23
(40)Вместо РегистрСведений.РаботникиОрганизаций.СрезПоследних(&Конец)
AnisaL
42 — 20.09.13 — 14:26
(41) ошибку выдает:
Поле не входит в группу «Физлицо»
Выбрать Физлицо
catena
43 — 20.09.13 — 14:26
Вот так вернее для ваших целей.
Выбрать РабОрг.Стоимость1часа, РабОрг.Физлицо
из (Выбрать физлицо, максимум(период) как Период из РегистрСведений.РаботникиОрганизаций как РаботникиОрганизаций где Организация=&Организация и Период <=&Конец
Сгруппировать по физлицо
) как ВложеныйЗапрос
Левое соединение РегистрСведений.РаботникиОрганизаций как РабОрг
по РабОрг.Физлицо = ВложеныйЗапрос.Физлицо
и РабОрг.Период = ВложеныйЗапрос.Период
catena
44 — 20.09.13 — 14:27
(42)Да, группировку забыла, смотри (43)
AnisaL
45 — 20.09.13 — 14:40
(44) спасибо) только запрос выдает стоимости1часа без отбора по организации
AnisaL
46 — 20.09.13 — 14:50
(45) разобралась, в конце надо было еще одну строчку добавить
где РабОрг.организация = &Организация (43) чтоб отбор был по организации у второй таблицы
AnisaL
47 — 20.09.13 — 14:54
(44) запрос вставила вместо РегистрСведений.РаботникиОрганизаций.СрезПоследних(&Конец) выдает ошибку:
Ожидается имя таблицы
<<?>>Выбрать РабОрг.физлицо
catena
48 — 20.09.13 — 15:02
(47)А скобочки есть?
ЛЕВОЕ СОЕДИНЕНИЕ (ТУТ_ТЕКСТ_ЗАПРОСА) КАК РаботникиОрганизацийСрезПоследних
ПО ТЧ.Исполнитель = РаботникиОрганизацийСрезПоследних.ФизЛицо
AnisaL
49 — 23.09.13 — 07:42
(48) ага спасибо )
AnisaL
50 — 23.09.13 — 09:58
У меня не считает итог по строке — такое возможно осуществить в запросе?
«ВЫБРАТЬ
| ДатаСоздания,
| Клиент,
| Проведен,
| Сумма(СуммаРабочаяСмена) КАК СуммаРабочаяСмена,
| Сумма(КоличествоРабочаяСмена) КАК КоличествоРабочаяСмена,
| Сумма(ЦенаРабочаяСмена) КАК ЦенаРабочаяСмена,
| Сумма(СуммаДопРаботы) КАК СуммаДопРаботы,
| Сумма(СуммаПитание) КАК СуммаПитание,
| Сумма(СуммаТранспорт) КАК СуммаТранспорт,
| Сумма(СуммаРабочаяСмена+СуммаДопРаботы+СуммаПитание+СуммаТранспорт) КАК СуммаИтог
AnisaL
51 — 23.09.13 — 10:00
(50) + т.е. в последней строчке почему-то считает «Суммаитог» как СуммаРабочаяСмена а остальные суммы не прибавляет
AnisaL
52 — 23.09.13 — 10:35
(51) а если в ИТогах написать, то получится?
FannuSun 1 / 1 / 0 Регистрация: 11.01.2019 Сообщений: 16 |
||||
1 |
||||
1C 8.x Синтаксическая ошибка «ВЫБОР»21.01.2019, 06:47. Показов 4651. Ответов 7 Метки нет (Все метки)
Выдает ошибку «Синтаксическая ошибка «ВЫБОР»». Пожалуйста, объясните что здесь неправильно
0 |
1188 / 727 / 211 Регистрация: 22.04.2013 Сообщений: 5,352 Записей в блоге: 1 |
|
21.01.2019, 08:45 |
2 |
говорящая за себя тема. молодец. долго наверно придумывал
0 |
1 / 1 / 0 Регистрация: 11.01.2019 Сообщений: 16 |
|
21.01.2019, 09:06 [ТС] |
3 |
Я просто не знал, как описать проблему в теме. Выбор заканчивается КОНЕЦом
0 |
Phil 434 / 305 / 92 Регистрация: 28.05.2014 Сообщений: 1,247 |
||||
21.01.2019, 11:09 |
4 |
|||
Так?
0 |
1188 / 727 / 211 Регистрация: 22.04.2013 Сообщений: 5,352 Записей в блоге: 1 |
|
21.01.2019, 12:16 |
5 |
Phil, а зачем ты опять пишешь выбор ? увидел. Не по теме: я так понимаю, что вариант лож + лож не рассматривается.
0 |
1 / 1 / 0 Регистрация: 11.01.2019 Сообщений: 16 |
|
21.01.2019, 12:27 [ТС] |
6 |
А разве Иначе мы не используем?
0 |
Phil 434 / 305 / 92 Регистрация: 28.05.2014 Сообщений: 1,247 |
||||
21.01.2019, 13:51 |
7 |
|||
Yulunga,
копипаст…
0 |
Dethmontt |
22.01.2019, 14:10
|
Не по теме:
я так понимаю, что вариант лож + лож не рассматривается. Иначе «Вечно!!!»
0 |
IT_Exp Эксперт 87844 / 49110 / 22898 Регистрация: 17.06.2006 Сообщений: 92,604 |
22.01.2019, 14:10 |
Для заданого 0<=n<=200.Расматриваемого как возраст человека,вывести фразу вида: «Мне 21 год», «Мне 32 года», «мне 12 лет». Cоздать ссылку на реквизит «Наименование» справочника «Специалисты» из справочника «ЗаявкаНаОбучениеКлиентов» Кто может поделиться конфигурацией и базой для «общепита» или «ресторана», хочу потестить
У кого есть от нее DVD? Поделитесь, пожалуйста, если у… Искать еще темы с ответами Или воспользуйтесь поиском по форуму: 8 |
Вот текст запроса
ВЫБРАТЬ
| ЦеныНоменклатурыСрезПоследних.Цена,
| ЦеныНоменклатурыСрезПоследних.Валюта,
| ЦеныНоменклатурыСрезПоследних.ВидЦены,
| ЦеныНоменклатурыСрезПоследних.Номенклатура,
| ЦеныНоменклатурыСрезПоследних.Характеристика
|ИЗ
| РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
|ГДЕ
| ЦеныНоменклатурыСрезПоследних.ВидЦены В(&ТипЦен)
| И ЦеныНоменклатурыСрезПоследних.Номенклатура В(&Номенлатуры)"
Запрос построено на конструкторе запросов.
Текст ошибки
{Форма.ГлавнаяФорма.Форма(206)}: Ошибка при вызове метода контекста (Выполнить)
ТабЗначРезультат = Запрос.Выполнить().Выгрузить();
по причине:
{(4, 2)}: Синтаксическая ошибка "ИЗ"
<<?>>ИЗ
-
Вопрос заданболее трёх лет назад
-
2216 просмотров
Ошибка синтаксиса языка запроса.
Вам нужно определится с тем, что вы используете. Если работаете с физической таблицей, то источник = РегистрСведений.ЦеныНоменклатуры. Если хотите виртуальную таблицу срезу последних, то даже не обязательно задавать время среза и условие (которое вы запихнули в секцию ГДЕ), но обязательно указать круглые кавычки!
ВЫБРАТЬ
| ЦеныНоменклатурыСрезПоследних.Цена,
| ЦеныНоменклатурыСрезПоследних.Валюта,
| ЦеныНоменклатурыСрезПоследних.ВидЦены,
| ЦеныНоменклатурыСрезПоследних.Номенклатура,
| ЦеныНоменклатурыСрезПоследних.Характеристика
|ИЗ
| РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ВидЦены В(&ТипЦен) и Номенклатура В(&Номенлатуры)) КАК ЦеныНоменклатурыСрезПоследних»
Пригласить эксперта
-
Показать ещё
Загружается…
06 июн. 2023, в 20:24
3500 руб./за проект
06 июн. 2023, в 20:08
100 руб./за проект
06 июн. 2023, в 20:05
150 руб./за проект