Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / [игнор отключен] [закрыт для гостей] / Не работает запрос (1С 8.1) / 10 сообщений из 10, страница 1 из 1
12.05.2009, 11:12
    #35979916
XopcT
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает запрос (1С 8.1)
Приветствую!
Ситуация следующая: необходимо узнать о состоянии взаиморасчётов с контрагентами в определённые даты.
Есть регистр накопления ВзаиморасчетыСКонтрагентами ,
есть справочник ДатыДляОтчёта , в котором перечислены все необходимые даты.
Отчёт собираюсь строить по выборке со следующими данными ( Дата , Контрагент , Сумма ). Соответственно, основная часть запроса должна проходить по всем датам из справочника, а вложенная часть - по регистру накопления, сравнивая дату взаиморасчёта с текущей датой из справочника.
Пока проблема состоит в том, чтобы сосчитать сумму взаиморасчётов, произведённых до указанной даты. Запрос выглядит вот так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
"ВЫБРАТЬ
|    Справочник.ДатыДляОтчёта.Дата КАК Дата
|    (ВЫБРАТЬ
|        СУММА(Взаиморасчёты.СуммаВзаиморасчетовОстаток) КАК Су
|        ИЗ РегистрНакопления.ВзаиморасчетыСКонтрагентами КАК Взаиморасчёты
|        ГДЕ Взаиморасчёты.Период <= Дата) КАК Суммы
|    ИЗ Справочник.ДатыДляОтчёта";
Ругаться начинает прямо перед вложенным запросом. В чём может быть причина? Заранее благодарю.
...
Рейтинг: 0 / 0
12.05.2009, 11:28
    #35979966
johnn06
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает запрос (1С 8.1)
XopcTПриветствую!
Ситуация следующая: необходимо узнать о состоянии взаиморасчётов с контрагентами в определённые даты.
Есть регистр накопления ВзаиморасчетыСКонтрагентами ,
есть справочник ДатыДляОтчёта , в котором перечислены все необходимые даты.
Отчёт собираюсь строить по выборке со следующими данными ( Дата , Контрагент , Сумма ). Соответственно, основная часть запроса должна проходить по всем датам из справочника, а вложенная часть - по регистру накопления, сравнивая дату взаиморасчёта с текущей датой из справочника.
Пока проблема состоит в том, чтобы сосчитать сумму взаиморасчётов, произведённых до указанной даты. Запрос выглядит вот так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
"ВЫБРАТЬ
|    Справочник.ДатыДляОтчёта.Дата КАК Дата
|    (ВЫБРАТЬ
|        СУММА(Взаиморасчёты.СуммаВзаиморасчетовОстаток) КАК Су
|        ИЗ РегистрНакопления.ВзаиморасчетыСКонтрагентами КАК Взаиморасчёты
|        ГДЕ Взаиморасчёты.Период <= Дата) КАК Суммы
|    ИЗ Справочник.ДатыДляОтчёта";
Ругаться начинает прямо перед вложенным запросом. В чём может быть причина? Заранее благодарю.

Вы вообще поняли что написали в запросе? если вы хотите с помощью подзапроса выбрать поле(тогда почему после слова дата нет запятой?), то в 1С это не поддерживатеся, делайте левое соединение...
...
Рейтинг: 0 / 0
12.05.2009, 11:32
    #35979975
XopcT
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает запрос (1С 8.1)
johnn06
> если вы хотите с помощью подзапроса выбрать поле(тогда почему после слова дата нет запятой?)
Да, именно это мне и нужно. Каюсь, запятую разглядел уже после того, как запостил сообщение.

> в 1С это не поддерживатеся, делайте левое соединение
Понял, попробую. Благодарю.
...
Рейтинг: 0 / 0
12.05.2009, 11:54
    #35980043
XopcT
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает запрос (1С 8.1)
Переписал запрос с использованием соединения. Чувствую, что получился непонятный велосипед_о_восьми_колёсах. Выходит, что мне нужно соединить две таблицы по полю "Дата". Одна таблица будет состоять из одних только дат, а вторая должна использовать эти же даты как поле и их же в условии для расчёта суммы. Спрашивается, к чему тогда вообще соединение? - тем более, что вторая таблица не может знать о значениях в первой :(
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
"ВЫБРАТЬ
|	Даты.Дата КАК Дата
|	ИЗ Справочник.ДатыДляОтчёта КАК Даты
|	ЛЕВОЕ СОЕДИНЕНИЕ
|		(ВЫБРАТЬ
|			Даты.Дата КАК Дата,
|			СУММА (Взаиморасчёты.СуммаВзаиморасчетовОстаток) КАК Сумма
|			ИЗ РегистрНакопления.ВзаиморасчетыСКонтрагентами КАК Взаиморасчёты
|			ГДЕ Взаиморасчёты.Период <= Даты.Дата) КАК Расчёты
|	ПО Даты.Дата = Расчёты.Дата";
Получил вот такую вполне ожидаемую ошибку:
Код: plaintext
1.
Поле не найдено "Даты.Дата"
ГДЕ Взаиморасчёты.Период <= <<?>>Даты.Дата) КАК Расчёты
Сейчас не могу понять, с какой стороны вообще подступиться к этой задаче.
...
Рейтинг: 0 / 0
12.05.2009, 12:49
    #35980259
Estel I
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает запрос (1С 8.1)
Явно надо: 1. понять, какую таблицу надо получить; 2. написать запрос
...
Рейтинг: 0 / 0
12.05.2009, 12:53
    #35980273
XopcT
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает запрос (1С 8.1)
Estel I
Юмор оценил. Смешно.
Какую таблицу получить определился - см. первый пост.
С запросом пока непонятное. Если есть идеи - с интересом выслушаю.
...
Рейтинг: 0 / 0
12.05.2009, 20:04
    #35981605
Estel I
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает запрос (1С 8.1)
Я, конечно, не блещу умом и я не понял из первого поста какая таблица нужна ;)
...
Рейтинг: 0 / 0
13.05.2009, 09:38
    #35982182
serge_b77
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает запрос (1С 8.1)
XopcTПолучил вот такую вполне ожидаемую ошибку:
Код: plaintext
1.
Поле не найдено "Даты.Дата"
ГДЕ Взаиморасчёты.Период <= <<?>>Даты.Дата) КАК Расчёты
Сейчас не могу понять, с какой стороны вообще подступиться к этой задаче.
Не буду комментировать подход к задаче.Запрос на мой взгляд неверен.Ну а синтаксически вот ИМХО.
Ошибка "вполне ожидаемая" очевидна:
Дата определен как АЛИАС Даты.Дата в первом выражении,что же Вы пытаетесь выбирать во втором - это раз,и два - после определения АЛИАСа его и нужно использовать.
Почитать:Виртуальные таблицы и их параметры(период).Что такое левое соединение.
...
Рейтинг: 0 / 0
13.05.2009, 09:49
    #35982223
leaf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает запрос (1С 8.1)
а ругается как? матом?
вам надо почитать книгу и начать с более простых запросов
вы просто не понимаете что вы пишете
...
Рейтинг: 0 / 0
13.05.2009, 12:19
    #35982677
XopcT
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает запрос (1С 8.1)
Всё, проблему заборол. Была возможность ограничиться только тремя датами замест произвольного числа. Сделал только для такого частного случая. Пока достаточно.
Благодарю всех, кто участвовал.
...
Рейтинг: 0 / 0
Форумы / [игнор отключен] [закрыт для гостей] / Не работает запрос (1С 8.1) / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]