Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 6
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )

> Синтаксическая ошибка в запросе -Объединить. (1с 8.2.19.106)          
andrew76 Подменю пользователя
сообщение 27.11.19, 7:33
Сообщение #1

Оратор
*****
Группа: Пользователи
Сообщений: 312
Из: Узбекистан
Спасибо сказали: 21 раз
Рейтинг: 21

Доброе утро !
При выполнении запроса идет сообщение "Синтаксическая ошибка-ОБЪЕДИНИТЬ".
В чем проблема не пойму.


Запрос = Новый Запрос; 
Запрос.Текст = "
|ВЫБРАТЬ ПЕРВЫЕ 1
|
|   ДекретОт.ДатаУхода Как Начало,
|   ДекретОт.Сотрудник
|ИЗ
|    Документ.ПриказНаДекретныйОтпускс5месяцев  КАК ДекретОт
|ГДЕ
|    ДекретОт.Сотрудник = &Сотрудник
|
|Упорядочить по ДекретОт.ДатаУхода Убыв
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ ПЕРВЫЕ 1
|
|  ДекретОт1.ДатаВыхода ,
|  ДекретОт1.Сотрудник
|ИЗ
|    Документ.ПриказНаОтпускПоУходуЗаРебенком  КАК ДекретОт1
|ГДЕ
|    ДекретОт1.Сотрудник = &Сотрудник
|
|Упорядочить по ДекретОт1.ДатаВыхода Убыв";

Petre Подменю пользователя
сообщение 27.11.19, 9:28
Сообщение #2

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2646
Из: Київ, Україна
Спасибо сказали: 735 раз
Рейтинг: 713.3

andrew76 @ Today, 7:33 * ,
Упорядочивать можно только результат объединения. Делайте пакетными запросами.


Signature
Допрацьовую:
- "Бухгалтерія для України 2.0";
- "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія".

Спасибо сказали: andrew76,

andrew76 Подменю пользователя
сообщение 27.11.19, 9:32
Сообщение #3

Оратор
*****
Группа: Пользователи
Сообщений: 312
Из: Узбекистан
Спасибо сказали: 21 раз
Рейтинг: 21

Petre @ Сегодня, 12:28 * ,

Т.е. в этом моем случае нужно делать 2 разных запроса ? На каждый документ по своему запросу ?

Bernet Подменю пользователя
сообщение 27.11.19, 9:40
Сообщение #4

Ветеран
Иконка группы
Группа: Местный
Сообщений: 799
Из: Хмельницкий
Спасибо сказали: 258 раз
Рейтинг: 234.7

andrew76 @ Сегодня, 9:32 * ,
Нет, вы можете объединить два запроса, но упорядочивать уже результат объединения. Поместите это во вложенный запрос. Кстати, если не ошибаюсь конструкция
Цитата
ВЫБРАТЬ ПЕРВЫЕ 1
тоже не сработает в таком виде.
Пример:
ТекстЗапроса = "ВЫБРАТЬ РАЗРЕШЕННЫЕ 
|   ВложенныйЗапрос.Период,
|   ВложенныйЗапрос.Сотрудник
|ИЗ
|     (ВЫБРАТЬ
|           ДекретОт.ДатаУхода Как Период,
|           ДекретОт.Сотрудник
|      ИЗ
|            Документ.ПриказНаДекретныйОтпускс5месяцев  КАК ДекретОт
|       ГДЕ
|            ДекретОт.Сотрудник = &Сотрудник
|
|      ОБЪЕДИНИТЬ ВСЕ
|
|      ВЫБРАТЬ
|            ДекретОт1.ДатаВыхода ,
|           ДекретОт1.Сотрудник
|      ИЗ
|              Документ.ПриказНаОтпускПоУходуЗаРебенком  КАК ДекретОт1
|       ГДЕ
|              ДекретОт1.Сотрудник = &Сотрудник
|       ) КАК ВложенныйЗапрос
|УПОРЯДОЧИТЬ ПО
|      ВложенныйЗапрос.Период УБЫВ
|";


Signature
Дописываю конфигурации на платформе 8.х.
- Управление торговым предприятием для Украины
- Управление производственным предприятием для Украины
- Управление небольшой фирмой для Украины
- Бухгалтерия для Украины;
- Общепит для Украины
- Ресторан (Рарус)
- Розница

Спасибо сказали: andrew76,

andrew76 Подменю пользователя
сообщение 27.11.19, 9:50
Сообщение #5

Оратор
*****
Группа: Пользователи
Сообщений: 312
Из: Узбекистан
Спасибо сказали: 21 раз
Рейтинг: 21

Цитата(Bernet @ 27.11.19, 12:40) *
Кстати, если не ошибаюсь конструкция
Цитата
ВЫБРАТЬ ПЕРВЫЕ 1


Мне нужен только последний документ из каждой выборки.

Vladal Подменю пользователя
сообщение 27.11.19, 11:55
Сообщение #6

Оратор
Иконка группы
Группа: Местный
Сообщений: 347
Из: Украина
Спасибо сказали: 60 раз
Рейтинг: 46.2

Цитата(andrew76 @ 27.11.19, 9:50) *
Мне нужен только последний документ из каждой выборки.

Тогда каждый вид документа в отдельную виртуальную таблицу и результаты объединять.

Запрос = Новый Запрос; 
Запрос.Текст = "
|ВЫБРАТЬ ПЕРВЫЕ 1
|
|   ДекретОт.ДатаУхода Как Начало,
|   ДекретОт.Сотрудник как Сотрудник
// поместить выборку по первому виду документов во временную таблицу
|Поместить вт1

|ИЗ
|    Документ.ПриказНаДекретныйОтпускс5месяцев  КАК ДекретОт
|ГДЕ
|    ДекретОт.Сотрудник = &Сотрудник
|
|Упорядочить по ДекретОт.ДатаУхода Убыв
|;
|
|ВЫБРАТЬ ПЕРВЫЕ 1
|
|  ДекретОт1.ДатаВыхода как Начало,
|  ДекретОт1.Сотрудник как Сотрудник
// поместить выборку по второму виду документов во вторую временную таблицу
|Поместить вт2

|ИЗ
|    Документ.ПриказНаОтпускПоУходуЗаРебенком  КАК ДекретОт1
|ГДЕ
|    ДекретОт1.Сотрудник = &Сотрудник
|
|Упорядочить по ДекретОт1.ДатаВыхода Убыв
|;

// объединить результаты обеих временных таблиц
|Выбрать
|    вт1.Начало как Начало,
|    вт1.Сотрудник как Сотрудник
|из
|    вт1 как Вт1
|
|объединить
|
|выбрать
|    вт2.Начало,
|    вт2.Сотрудник
|из
|    вт2 как Вт2

";


Писал без 1С, поэтому допускаю синтаксические ошибки.

Сообщение отредактировал Vladal - 27.11.19, 11:57

Спасибо сказали: andrew76,

Bernet Подменю пользователя
сообщение 27.11.19, 12:05
Сообщение #7

Ветеран
Иконка группы
Группа: Местный
Сообщений: 799
Из: Хмельницкий
Спасибо сказали: 258 раз
Рейтинг: 234.7

Vladal @ Сегодня, 11:55 * ,
Упорядочить во временных таблицах не работает, только на итоговую выборку.
Если нужно получить последний док каждого типа - тогда используйте функцию МАКСИМУМ по дате документа - получите последнюю дату документов, а дальше соединением получите саму ссылку на док


Signature
Дописываю конфигурации на платформе 8.х.
- Управление торговым предприятием для Украины
- Управление производственным предприятием для Украины
- Управление небольшой фирмой для Украины
- Бухгалтерия для Украины;
- Общепит для Украины
- Ресторан (Рарус)
- Розница

Спасибо сказали: andrew76,

andrew76 Подменю пользователя
сообщение 27.11.19, 12:06
Сообщение #8

Оратор
*****
Группа: Пользователи
Сообщений: 312
Из: Узбекистан
Спасибо сказали: 21 раз
Рейтинг: 21

Vladal @ Сегодня, 14:55 * ,

В принципе сделать 2 запроса отдельно.Выгружать результаты из запросов в 1 ТЗ.ТЗ отсортировать по дате- по убыванию.Прочитать из ТЗ первую запись и все.

Спасибо сказали: Vladal,

pablo Подменю пользователя
сообщение 27.11.19, 12:14
Сообщение #9

Старейшина
********
Группа: Команда (модераторы)
Сообщений: 1069
Из: Одесса-Луганск
Спасибо сказали: 180 раз
Рейтинг: 138.9

Цитата
В принципе сделать 2 запроса отдельно.Выгружать результаты из запросов в 1 ТЗ.ТЗ отсортировать по дате- по убыванию.Прочитать из ТЗ первую запись и все
Какой лютый семерка стайл... Вытащим все из БД на клиента (нагрузим память), потом отсортируем(нагрузим проц), чтобы получить в итоге 2 записи...



Рабочий запрос:
ВЫБРАТЬ ПЕРВЫЕ 1
    ПоступлениеТоваровУслуг.Ссылка
ПОМЕСТИТЬ Поступ
ИЗ
    Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
ГДЕ
    ПоступлениеТоваровУслуг.Проведен

УПОРЯДОЧИТЬ ПО
    ПоступлениеТоваровУслуг.Дата УБЫВ
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ ПЕРВЫЕ 1
    РеализацияТоваровУслуг.Ссылка
ПОМЕСТИТЬ Реал
ИЗ
    Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
ГДЕ
    РеализацияТоваровУслуг.Проведен

УПОРЯДОЧИТЬ ПО
    РеализацияТоваровУслуг.Дата УБЫВ
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Поступ.Ссылка
ИЗ
    Поступ КАК Поступ

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    Реал.Ссылка
ИЗ
    Реал КАК Реал


Signature
Правильно поставленный вопрос содержит до 90% ответа.

Спасибо сказали: andrew76,

andrew76 Подменю пользователя
сообщение 27.11.19, 12:33
Сообщение #10

Оратор
*****
Группа: Пользователи
Сообщений: 312
Из: Узбекистан
Спасибо сказали: 21 раз
Рейтинг: 21

pablo @ Сегодня, 15:14 * ,
Попробую и Ваш вариант.По поводу большой загрузки БД.Это декретные отпуска - много по сотруднику их не будет.
Даже в случае матери-героини.


Цитата(andrew76 @ 27.11.19, 15:17) *
Какой лютый семерка стайл...

Какой лютый семерка стайл... А вот это я совсем НЕ ПОНЯЛ 05040.gif

pablo Подменю пользователя
сообщение 27.11.19, 15:01
Сообщение #11

Старейшина
********
Группа: Команда (модераторы)
Сообщений: 1069
Из: Одесса-Луганск
Спасибо сказали: 180 раз
Рейтинг: 138.9

В семерке из-за ... ограниченности языка запросов было проще что-то собрать запросом, запрос выгрузить в ТЗ и затем колбасить ее всяко-разно. В восьмерке так тоже можно, но такая методика очень быстро деградирует по времени выполнения на больших выборках...


Signature
Правильно поставленный вопрос содержит до 90% ответа.

Спасибо сказали: andrew76,

andrew76 Подменю пользователя
сообщение 27.11.19, 15:20
Сообщение #12

Оратор
*****
Группа: Пользователи
Сообщений: 312
Из: Узбекистан
Спасибо сказали: 21 раз
Рейтинг: 21

Цитата(pablo @ 27.11.19, 18:01) *
на больших выборках

В том то и дело ,что запросы будут выполняться только по 1 сотруднику.И декретных отпусков
будет незначительное количество.А может и не быть вообще.Не все же в декрет ходят.

pablo Подменю пользователя
сообщение 27.11.19, 15:45
Сообщение #13

Старейшина
********
Группа: Команда (модераторы)
Сообщений: 1069
Из: Одесса-Луганск
Спасибо сказали: 180 раз
Рейтинг: 138.9

Тем не менее, ИМХО, стоит стремиться все делать "базаданново". Даже на малых объемах данных можно больше времени потратить на накладных расходах по пересылке данных с сервера на клиент.
Более того, если развернуть ситуацию для задачи перепроведения за месяц, то, ИМХО, 10 одинаковых запросов возвращающих 2 записи отработают быстрее 10 запросов, возвращающих все записи по сотруднику.


pablo @ Сегодня, 15:43 * ,З.Ы. С учетом всего времени выполнения на клиенте

Сообщение отредактировал pablo - 27.11.19, 15:45


Signature
Правильно поставленный вопрос содержит до 90% ответа.

andrew76 Подменю пользователя
сообщение 04.12.19, 15:59
Сообщение #14

Оратор
*****
Группа: Пользователи
Сообщений: 312
Из: Узбекистан
Спасибо сказали: 21 раз
Рейтинг: 21

pablo @ 27.11.19, 18:45 * ,

Интересно,а если понадобится перебирать 4 вида документов,и из каждой
выборки получать только последний документ,не технологичнее ли
сделать регистр сведений ,в который будет записываться инфа с этих доков,
и читать регистр методом срез последних ? Что будет работать быстрее,запрос,или
чтение регистра ? Эта функция должна выполняться каждый раз при открытии элемента
справочника по сотрудникам.

Petre Подменю пользователя
сообщение 04.12.19, 16:09
Сообщение #15

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2646
Из: Київ, Україна
Спасибо сказали: 735 раз
Рейтинг: 713.3

andrew76 @ Today, 15:59 * ,
Вы представляете что будет при групповом перепроведении документов? Сравните это с частотой открытия формы элемента вашего справочника. Да хоть сто документов. Количество букв в запросе никак не связано со скоростью выполнения запроса.


Signature
Допрацьовую:
- "Бухгалтерія для України 2.0";
- "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія".

Спасибо сказали: andrew76,

Vofka Подменю пользователя
сообщение 04.12.19, 16:23
Сообщение #16

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13175
Из: Киев
Спасибо сказали: 4000 раз
Рейтинг: 3134.9

Цитата(Petre @ 04.12.19, 16:09) *
Количество букв в запросе никак не связано со скоростью выполнения запроса.

Некоторая закономерность все таки имеется, но это не стопроцентный критерий. smile.gif

Спасибо сказали: andrew76,

andrew76 Подменю пользователя
сообщение 04.12.19, 17:12
Сообщение #17

Оратор
*****
Группа: Пользователи
Сообщений: 312
Из: Узбекистан
Спасибо сказали: 21 раз
Рейтинг: 21

Цитата(Petre @ 04.12.19, 16:09) *
Вы представляете что будет при групповом перепроведении документов?


Понятно.Регистр не подходит здесь.Запрос-так запрос.А документов все же немного.
Декретные отпуска.

Сообщение отредактировал Vofka - 04.12.19, 17:31

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 06.12.19, 15:01
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!