Добрый день, не могу понять почему результат запроса ЛЕВОЕ СОЕДИНЕНИЕ ОбщееВсехСумм при такой конструкции
в таблицу значений выводится пустым ?
МенеджерВТ = Новый МенеджерВременныхТаблиц;
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = МенеджерВТ;
Запрос.Текст =
"ВЫБРАТЬ
| Спецификация.СпецификацияЗакупки,
| СУММА(Спецификация.СпецификацияСумма) КАК СпецификацияСумма ПОМЕСТИТЬ ОбщаяСумма
|ИЗ
| РегистрСведений.Спецификация КАК Спецификация
|СГРУППИРОВАТЬ ПО
| Спецификация.СпецификацияЗакупки
|;
|ВЫБРАТЬ
| ОбщиеСведения.Дата,
| ОбщиеСведения.Номер,
| ОбщиеСведения.Способ,
| ОбщиеСведения.Цена,
| ОбщиеСведения.Предмет,
| ОбщиеСведения.ОбщееВсехСумм,
| ОбщаяСумма.СпецификацияСумма
|ИЗ
| РегистрСведений.ОбщиеСведения КАК ОбщиеСведения,
| ЛЕВОЕ СОЕДИНЕНИЕ ОбщаяСумма КАК ОбщаяСумма
| ПО ОбщиеСведения.ОбщееВсехСумм = ОбщаяСумма.СпецификацияСумма";
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
НоваяСтрока = Реестр.Добавить();
НоваяСтрока.Дата = Выборка.Дата;
НоваяСтрока.Номер = Выборка.Номер;
НоваяСтрока.Способ = Выборка.Способ;
НоваяСтрока.Цена = Выборка.Цена;
НоваяСтрока.ПредметЗакупки = Выборка.Предмет;
НоваяСтрока.СпецификацияСумма = Выборка.ОбщееВсехСумм;
КонецЦикла;
Показатьв таблицу значений выводится пустым ?
По теме из базы знаний
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
| Спецификация.СпецификацияЗакупки,
| СУММА(Спецификация.СпецификацияСумма) КАК СпецификацияСумма ПОМЕСТИТЬ ОбщаяСумма
|ИЗ
| РегистрСведений.Спецификация КАК Спецификация
|СГРУППИРОВАТЬ ПО
| СпецификацияКонтракта.СпецификацияЗакупки
Откуда взялось "СпецификацияКонтракта", если в тексте везде "Спецификация"?
Пробовали на время убрать соединение?
"ВЫБРАТЬ
| Спецификация.СпецификацияЗакупки,
| СУММА(Спецификация.СпецификацияСумма) КАК СпецификацияСумма ПОМЕСТИТЬ ОбщаяСумма
|ИЗ
| РегистрСведений.Спецификация КАК Спецификация
|СГРУППИРОВАТЬ ПО
| Спецификация.СпецификацияЗакупки
|;
|ВЫБРАТЬ
| ОбщиеСведения.Дата,
| ОбщиеСведения.Номер,
| ОбщиеСведения.Способ,
| ОбщиеСведения.Цена,
| ОбщиеСведения.Предмет,
| ОбщиеСведения.ОбщееВсехСумм,
| ОбщаяСумма.СпецификацияСумма
|ИЗ
| РегистрСведений.ОбщиеСведения КАК ОбщиеСведения";
Такой запрос что нибудь возвращает?
И точно нужна запятая в конце строки?
| РегистрСведений.ОбщиеСведения КАК ОбщиеСведения,
Конструктор запросов этот запрос нормально открывает не ругается?
"ВЫБРАТЬ
| Спецификация.СпецификацияЗакупки,
| СУММА(Спецификация.СпецификацияСумма) КАК СпецификацияСумма ПОМЕСТИТЬ ОбщаяСумма
|ИЗ
| РегистрСведений.Спецификация КАК Спецификация
|СГРУППИРОВАТЬ ПО
| Спецификация.СпецификацияЗакупки
|;
|ВЫБРАТЬ
| ОбщиеСведения.Дата,
| ОбщиеСведения.Номер,
| ОбщиеСведения.Способ,
| ОбщиеСведения.Цена,
| ОбщиеСведения.Предмет,
| ОбщиеСведения.ОбщееВсехСумм,
| ОбщаяСумма.СпецификацияСумма
|ИЗ
| РегистрСведений.ОбщиеСведения КАК ОбщиеСведения";
Такой запрос что нибудь возвращает?
И точно нужна запятая в конце строки?
| РегистрСведений.ОбщиеСведения КАК ОбщиеСведения,
Конструктор запросов этот запрос нормально открывает не ругается?
(22) Попробовали убрать соединение как я предложил в предыдущем посте?
Может ошибка на предыдущем этапе запроса самая элементарная например иногда названия таблиц отличаются на букву и можно банально ломиться в чистую таблицу.
Вот такой запрос хоть одну строчку возвращает???
"ВЫБРАТЬ
| Спецификация.СпецификацияЗакупки,
| СУММА(Спецификация.СпецификацияСумма) КАК СпецификацияСумма ПОМЕСТИТЬ ОбщаяСумма
|ИЗ
| РегистрСведений.Спецификация КАК Спецификация
|СГРУППИРОВАТЬ ПО
| Спецификация.СпецификацияЗакупки
|;
|ВЫБРАТЬ
| ОбщиеСведения.Дата,
| ОбщиеСведения.Номер,
| ОбщиеСведения.Способ,
| ОбщиеСведения.Цена,
| ОбщиеСведения.Предмет,
| ОбщиеСведения.ОбщееВсехСумм,
| ОбщаяСумма.СпецификацияСумма
|ИЗ
| РегистрСведений.ОбщиеСведения КАК ОбщиеСведения";
Может ошибка на предыдущем этапе запроса самая элементарная например иногда названия таблиц отличаются на букву и можно банально ломиться в чистую таблицу.
Вот такой запрос хоть одну строчку возвращает???
"ВЫБРАТЬ
| Спецификация.СпецификацияЗакупки,
| СУММА(Спецификация.СпецификацияСумма) КАК СпецификацияСумма ПОМЕСТИТЬ ОбщаяСумма
|ИЗ
| РегистрСведений.Спецификация КАК Спецификация
|СГРУППИРОВАТЬ ПО
| Спецификация.СпецификацияЗакупки
|;
|ВЫБРАТЬ
| ОбщиеСведения.Дата,
| ОбщиеСведения.Номер,
| ОбщиеСведения.Способ,
| ОбщиеСведения.Цена,
| ОбщиеСведения.Предмет,
| ОбщиеСведения.ОбщееВсехСумм,
| ОбщаяСумма.СпецификацияСумма
|ИЗ
| РегистрСведений.ОбщиеСведения КАК ОбщиеСведения";
(32) Пропустил, оставил строчку ОбщаяСумма.СпецификацияСумма
значит и такой должен работать...
Еще раз спрошу про запятую,
Вот в этом варианте запятая может быть
а вот в ранее описанном варианте
запятой не должно быть так как ЛЕВОЕ СОЕДИНЕНИЕ должно находиться между двумя объектами
значит и такой должен работать...
"ВЫБРАТЬ
| Спецификация.СпецификацияЗакупки,
| СУММА(Спецификация.СпецификацияСумма) КАК СпецификацияСумма ПОМЕСТИТЬ ОбщаяСумма
|ИЗ
| РегистрСведений.Спецификация КАК Спецификация
|СГРУППИРОВАТЬ ПО
| Спецификация.СпецификацияЗакупки
|;
|ВЫБРАТЬ
| ОбщиеСведения.Дата,
| ОбщиеСведения.Номер,
| ОбщиеСведения.Способ,
| ОбщиеСведения.Цена,
| ОбщиеСведения.Предмет,
| ОбщиеСведения.ОбщееВсехСумм
|ИЗ
| РегистрСведений.ОбщиеСведения КАК ОбщиеСведения";
Показать| Спецификация.СпецификацияЗакупки,
| СУММА(Спецификация.СпецификацияСумма) КАК СпецификацияСумма ПОМЕСТИТЬ ОбщаяСумма
|ИЗ
| РегистрСведений.Спецификация КАК Спецификация
|СГРУППИРОВАТЬ ПО
| Спецификация.СпецификацияЗакупки
|;
|ВЫБРАТЬ
| ОбщиеСведения.Дата,
| ОбщиеСведения.Номер,
| ОбщиеСведения.Способ,
| ОбщиеСведения.Цена,
| ОбщиеСведения.Предмет,
| ОбщиеСведения.ОбщееВсехСумм
|ИЗ
| РегистрСведений.ОбщиеСведения КАК ОбщиеСведения";
Еще раз спрошу про запятую,
Вот в этом варианте запятая может быть
|ИЗ
| РегистрСведений.ОбщиеСведения КАК ОбщиеСведения,
| ОбщаяСумма КАК ОбщаяСумма ";
| РегистрСведений.ОбщиеСведения КАК ОбщиеСведения,
| ОбщаяСумма КАК ОбщаяСумма ";
а вот в ранее описанном варианте
| РегистрСведений.ОбщиеСведения КАК ОбщиеСведения,
| ЛЕВОЕ СОЕДИНЕНИЕ ОбщаяСумма КАК ОбщаяСумма
| ЛЕВОЕ СОЕДИНЕНИЕ ОбщаяСумма КАК ОбщаяСумма
запятой не должно быть так как ЛЕВОЕ СОЕДИНЕНИЕ должно находиться между двумя объектами
(33) Убрал запятую, результат тот же.
Да такой запрос работает.
"ВЫБРАТЬ
| Спецификация.СпецификацияЗакупки,
| СУММА(Спецификация.СпецификацияСумма) КАК СпецификацияСумма ПОМЕСТИТЬ ОбщаяСумма
|ИЗ
| РегистрСведений.Спецификация КАК Спецификация
|СГРУППИРОВАТЬ ПО
| Спецификация.СпецификацияЗакупки
|;
|ВЫБРАТЬ
| ОбщиеСведения.Дата,
| ОбщиеСведения.Номер,
| ОбщиеСведения.Способ,
| ОбщиеСведения.Цена,
| ОбщиеСведения.Предмет,
| ОбщиеСведения.ОбщееВсехСумм
|ИЗ
| РегистрСведений.ОбщиеСведения КАК ОбщиеСведения";
ПоказатьДа такой запрос работает.
(35) Тогда попробуйте в такой упрощенный запрос добавить левое соединение не руками а через конструктор запросов, может он выругается на какое то несоответствие, может у вас типы сравниваемых полей не совпадают, к примеру в Спецификация.СпецификацияСумма или в ОбщиеСведения.ОбщееВсехСумм хранится не число а строка...
(34) Но допустим мы знаем что у нас все суммы уникальные, одинаковых нет, и хотим проверить правильно ли заполнены в регистре итоговые суммы, разве запросы в 1с не умеют объединять таблицы по сумме, я допустим завис не могу понять почему у него запрос не работает, смущает только то что он очевидно запрос редактирует руками а не конструктором так как слово поместить у него в середине строки и запятая была лишняя, может есть какая-то чисто синтаксическая неприметная ошибка?
(38) во втором запросе идет соединение ПО ОбщиеСведения.ОбщееВсехСумм = ОбщаяСумма.СпецификацияСумма
ОбщиеСведения.ОбщееВсехСумм допустим равно 5
ОбщаяСумма.СпецификацияСумма во временной таблице допустим тоже хотя бы в одной строке равно 5
тогда запрос должен выдать строку в которой допустим
ОбщиеСведения.Дата равно например 20.01.20
ОбщиеСведения.Номер равно например Х4354
и т.д.
и ОбщаяСумма.СпецификацияСумма равно 5
а если
ОбщиеСведения.ОбщееВсехСумм например равно 5
а вот ОбщаяСумма.СпецификацияСумма ни в одной строке не равно 5
то это же левое соединение а не внутреннее, мы должны хотя бы одну строку из левой таблицы получить
как я понимаю будет
ОбщиеСведения.Дата равно например 20.01.20
ОбщиеСведения.Номер равно например Х4354
и т.д.
и ОбщаяСумма.СпецификацияСумма равно NULL
должна же вернуться хоть одна строка при левом соединении если левая таблица не пустая...
Вот пример левого соединения например по имени
ОбщиеСведения.ОбщееВсехСумм допустим равно 5
ОбщаяСумма.СпецификацияСумма во временной таблице допустим тоже хотя бы в одной строке равно 5
тогда запрос должен выдать строку в которой допустим
ОбщиеСведения.Дата равно например 20.01.20
ОбщиеСведения.Номер равно например Х4354
и т.д.
и ОбщаяСумма.СпецификацияСумма равно 5
а если
ОбщиеСведения.ОбщееВсехСумм например равно 5
а вот ОбщаяСумма.СпецификацияСумма ни в одной строке не равно 5
то это же левое соединение а не внутреннее, мы должны хотя бы одну строку из левой таблицы получить
как я понимаю будет
ОбщиеСведения.Дата равно например 20.01.20
ОбщиеСведения.Номер равно например Х4354
и т.д.
и ОбщаяСумма.СпецификацияСумма равно NULL
должна же вернуться хоть одна строка при левом соединении если левая таблица не пустая...
Вот пример левого соединения например по имени
Код |
---|
// Левое соединение - это внутреннее
// соединение + строки из левой таблицы, для которых не
// найдены соответствия.
// ------------- --------------------------------
// |Люди | | Характеристики |
// ------------- ---------------------------------
// |ИМЯ | | ИМЯ ВОЗРАСТ |
// ------------- ---------------------------------
// |Алена | | Алена 21 |
// |Алефтина | | Алефтина 18 |
// |Владимир | | Павел 25 |
// |Владислав | | Петр 30 |
// | | | Порфирий 50 |
// ------------- ---------------------------------
// Результат левого внешнего соединения по имени:
// ИмяИзТаблицы1 ИмяИзТаблицы2 ВозрастИзТаблицы2
// Алена Алена 21
// Алефтина Алефтина 18
// Владимир NULL NULL
// Владислав NULL NULL
Запрос = Новый Запрос(
"ВЫБРАТЬ
| Люди.Наименование КАК ИмяИзТаблицы1,
| Характеристики.Наименование КАК ИмяИзТаблицы2,
| Характеристики.Возраст КАК ВозрастИзТаблицы2
|ИЗ
| Справочник.Люди КАК Люди
| ЛЕВОЕ СОЕДИНЕНИЕ
| Справочник.Характеристики КАК Характеристики
| ПО
| Люди.Наименование = Характеристики.Наименование"
); Показать полностью |
ВЫБРАТЬ
| Спецификация.СпецификацияЗакупки,
| СУММА(Спецификация.СпецификацияСумма) КАК СпецификацияСумма
| ПОМЕСТИТЬ ОбщаяСумма
|ИЗ
| РегистрСведений.Спецификация КАК Спецификация
|СГРУППИРОВАТЬ ПО
| Спецификация.СпецификацияЗакупки
|;
|ВЫБРАТЬ
| ОбщиеСведения.Дата,
| ОбщиеСведения.Номер,
| ОбщиеСведения.Способ,
| ОбщиеСведения.Цена,
| ОбщиеСведения.Предмет,
| ОбщиеСведения.ОбщееВсехСумм,
| ОбщаяСумма.СпецификацияСумма
|ИЗ
| РегистрСведений.ОбщиеСведения КАК ОбщиеСведения,
| ЛЕВОЕ СОЕДИНЕНИЕ ОбщаяСумма КАК ОбщаяСумма
| ПО ОбщиеСведения.ОбщееВсехСумм = ОбщаяСумма.СпецификацияСумма";
попробуйте копать в сторону соединения по полю "Спецификация.СпецификацияЗакупки"
| Спецификация.СпецификацияЗакупки,
| СУММА(Спецификация.СпецификацияСумма) КАК СпецификацияСумма
| ПОМЕСТИТЬ ОбщаяСумма
|ИЗ
| РегистрСведений.Спецификация КАК Спецификация
|СГРУППИРОВАТЬ ПО
| Спецификация.СпецификацияЗакупки
|;
|ВЫБРАТЬ
| ОбщиеСведения.Дата,
| ОбщиеСведения.Номер,
| ОбщиеСведения.Способ,
| ОбщиеСведения.Цена,
| ОбщиеСведения.Предмет,
| ОбщиеСведения.ОбщееВсехСумм,
| ОбщаяСумма.СпецификацияСумма
|ИЗ
| РегистрСведений.ОбщиеСведения КАК ОбщиеСведения,
| ЛЕВОЕ СОЕДИНЕНИЕ ОбщаяСумма КАК ОбщаяСумма
| ПО ОбщиеСведения.ОбщееВсехСумм = ОбщаяСумма.СпецификацияСумма";
попробуйте копать в сторону соединения по полю "Спецификация.СпецификацияЗакупки"
"
Вы можете поместить результат выборки первой таблицы во вторую но по какому признаку ?
Да можно сказать что и тестовое я в 1С не давно есть опыт работы в других языках, но вы сей час не много усложняете мне просто нужно сгруппировать данные по одному полю в таблице спецификация, а результат поместить в другую.
Вы можете поместить результат выборки первой таблицы во вторую но по какому признаку ?
(48) Не понял почему нужно соединять по группировочному полю
результат тот же.
Левое соединение ОбщаяСуммаПозицийВСпецификации как ОбщаяСуммаПозицийВСпецификации
по ОбщаяСуммаПозицийВСпецификации.СпецификацияКонтрактаНомерЗакупки = ОбщиеСведения.НомерЗакупки
результат тот же.
Прикрепленные файлы:
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот