В чём ошибка, левое соединение?

1. Terabaytus 25.03.20 13:35 Сейчас в теме
Добрый день, не могу понять почему результат запроса ЛЕВОЕ СОЕДИНЕНИЕ ОбщееВсехСумм при такой конструкции

 МенеджерВТ = Новый МенеджерВременныхТаблиц;	
	Запрос = Новый Запрос;
	Запрос.МенеджерВременныхТаблиц = МенеджерВТ;
	Запрос.Текст = 
	    "ВЫБРАТЬ  
		|   Спецификация.СпецификацияЗакупки,
		|   СУММА(Спецификация.СпецификацияСумма) КАК СпецификацияСумма ПОМЕСТИТЬ  ОбщаяСумма
		|ИЗ
		|   РегистрСведений.Спецификация КАК Спецификация 
		|СГРУППИРОВАТЬ ПО
		|   Спецификация.СпецификацияЗакупки
		|;
		|ВЫБРАТЬ
		|	ОбщиеСведения.Дата,                                                   
		|	ОбщиеСведения.Номер,                                                         
		|	ОбщиеСведения.Способ,
		|	ОбщиеСведения.Цена,
		|	ОбщиеСведения.Предмет,
		|       ОбщиеСведения.ОбщееВсехСумм,
		|       ОбщаяСумма.СпецификацияСумма 
		|ИЗ
		|   РегистрСведений.ОбщиеСведения КАК ОбщиеСведения,
		|   ЛЕВОЕ СОЕДИНЕНИЕ ОбщаяСумма КАК ОбщаяСумма
		|   ПО ОбщиеСведения.ОбщееВсехСумм = ОбщаяСумма.СпецификацияСумма"; 
		
		
	РезультатЗапроса = Запрос.Выполнить();
	Выборка = РезультатЗапроса.Выбрать();
	
	Пока Выборка.Следующий() Цикл
		
		НоваяСтрока = Реестр.Добавить();
		НоваяСтрока.Дата = Выборка.Дата;
		НоваяСтрока.Номер = Выборка.Номер;
		НоваяСтрока.Способ = Выборка.Способ;
		НоваяСтрока.Цена = Выборка.Цена;
		НоваяСтрока.ПредметЗакупки = Выборка.Предмет;
		НоваяСтрока.СпецификацияСумма = Выборка.ОбщееВсехСумм;       
		

	КонецЦикла;



Показать


в таблицу значений выводится пустым ?
По теме из базы знаний
Найденные решения
44. Jen1978 19 26.03.20 16:42 Сейчас в теме
по номеру закупки соединяйте левое соединение
45. Jen1978 19 26.03.20 16:45 Сейчас в теме
Левое соединение ОбщаяСуммаПозицийВСпецификации как ОбщаяСуммаПозицийВСпецификации
по ОбщаяСуммаПозицийВСпецификации.СпецификацияКонтрактаНомерЗакупки = ОбщиеСведения.НомерЗакупки
Остальные ответы
Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
4. alex-l19041 8 25.03.20 14:00 Сейчас в теме
(1)
| ОбщееВсехСумм,
из какой таблицы должно быть ОбщиеСведения или ОбщаяСумма ?
5. Terabaytus 25.03.20 14:02 Сейчас в теме
(4)ОбщиеСведения. ОбщееВсехСумм,
7. alex-l19041 8 25.03.20 14:23 Сейчас в теме
(1)
НоваяСтрока.СпецификацияСумма = ОбщееВсехСумм;
- ???

может
НоваяСтрока.СпецификацияСумма = Выборка.ОбщееВсехСумм;
9. Terabaytus 25.03.20 14:30 Сейчас в теме
(7)Поправил. А по сути вопроса можете что то сказать ?
10. alex-l19041 8 25.03.20 14:44 Сейчас в теме
11. Terabaytus 25.03.20 14:53 Сейчас в теме
(10)Да всё так же, тут дело именно в соединение так как я отдельно делал запрос к временной таблице без соединения и всё выводится, а когда пытаюсь всё вместе вывести то поля дата, номер, способ выводятся, а ОбщееВсехСумм нет.
12. alex-l19041 8 25.03.20 14:59 Сейчас в теме
(11) приведите пример данных из РегистрСведений.ОбщиеСведения и временной таблицы ОбщаяСумма
13. Terabaytus 25.03.20 15:05 Сейчас в теме
(12)
Дата Номер Способ Цена Предмет ОбщееВсехСумм
10.01.2010 1 44-фз 10 Молоток
10.01.2011 2 44-фз 10 Гвозди
10.01.2012 3 44-фз 10 Мыло
14. alex-l19041 8 25.03.20 15:09 Сейчас в теме
(13) это только одна строка ...... этого слишком мало.....
15. Terabaytus 25.03.20 15:16 Сейчас в теме
18. alex-l19041 8 25.03.20 15:23 Сейчас в теме
(15) где поле ОбщееВсехСумм ?
19. Terabaytus 25.03.20 15:26 Сейчас в теме
(18) Оно пустое я в него планировал добавить данные из ОбщаяСумма.СпецификацияСумма
25. alex-l19041 8 25.03.20 16:07 Сейчас в теме
(19) тогда какой смысл в
ПО ОбщиеСведения.ОбщееВсехСумм = ОбщаяСумма.СпецификацияСумма
27. Terabaytus 25.03.20 16:20 Сейчас в теме
(25)Не понял. Соединяем поля таблиц из поля СпецификацияСумма временной таблицы ОбщаяСумма добавляем данные в поле ОбщееВсехСумм таблицы ОбщиеСведения разве не так ?
28. Jen1978 19 25.03.20 16:23 Сейчас в теме
(13) Общее всех сумм пусто, следовательно при левом соединении происходит поиск в РегистрСведений.Спецификация КАК Спецификация

а так как у Вас пусто а в РегистрСведений.Спецификация видимо что то есть, то и не получаете результат
2. VmvLer 25.03.20 13:39 Сейчас в теме
не было совпадений сумм, т.е. значения полей сумм в соединяемых таблицах уникальны
mrChOP93; +1 Ответить
3. Terabaytus 25.03.20 13:45 Сейчас в теме
(2)Не совсем понял, ОбщееВсехСумм пустая значение у меня находиться в СпецификацияСумма.
6. koln 25.03.20 14:22 Сейчас в теме
        |   Спецификация.СпецификацияЗакупки,
        |   СУММА(Спецификация.СпецификацияСумма) КАК СпецификацияСумма ПОМЕСТИТЬ  ОбщаяСумма
        |ИЗ
        |   РегистрСведений.Спецификация КАК Спецификация 
        |СГРУППИРОВАТЬ ПО
        |   СпецификацияКонтракта.СпецификацияЗакупки

Откуда взялось "СпецификацияКонтракта", если в тексте везде "Спецификация"?
8. Terabaytus 25.03.20 14:28 Сейчас в теме
16. herfis 498 25.03.20 15:20 Сейчас в теме
(0) У тебя пакет запросов (результат первого запроса не помещается во временную таблицу).
В итоге ты думаешь что работаешь с результатом второго запроса, а на самом деле работаешь с результатом первого.
17. herfis 498 25.03.20 15:23 Сейчас в теме
Хм... Хотя по доке должен таки возвращаться результат последнего...
20. Terabaytus 25.03.20 15:30 Сейчас в теме
(17)я отдельно делал запрос к временной таблице без соединения и всё выводится
21. YanTsys 12 25.03.20 15:32 Сейчас в теме
Пробовали на время убрать соединение?

"ВЫБРАТЬ
| Спецификация.СпецификацияЗакупки,
| СУММА(Спецификация.СпецификацияСумма) КАК СпецификацияСумма ПОМЕСТИТЬ ОбщаяСумма
|ИЗ
| РегистрСведений.Спецификация КАК Спецификация
|СГРУППИРОВАТЬ ПО
| Спецификация.СпецификацияЗакупки
|;
|ВЫБРАТЬ
| ОбщиеСведения.Дата,
| ОбщиеСведения.Номер,
| ОбщиеСведения.Способ,
| ОбщиеСведения.Цена,
| ОбщиеСведения.Предмет,
| ОбщиеСведения.ОбщееВсехСумм,
| ОбщаяСумма.СпецификацияСумма
|ИЗ
| РегистрСведений.ОбщиеСведения КАК ОбщиеСведения";

Такой запрос что нибудь возвращает?

И точно нужна запятая в конце строки?
| РегистрСведений.ОбщиеСведения КАК ОбщиеСведения,


Конструктор запросов этот запрос нормально открывает не ругается?
22. Terabaytus 25.03.20 15:42 Сейчас в теме
(21) Запрос отрабатывает без ошибок только не добавляет данные в
НоваяСтрока.СпецификацияСумма = Выборка.ОбщееВсехСумм; 
хотя должен.
23. YanTsys 12 25.03.20 16:00 Сейчас в теме
(22) Попробовали убрать соединение как я предложил в предыдущем посте?
Может ошибка на предыдущем этапе запроса самая элементарная например иногда названия таблиц отличаются на букву и можно банально ломиться в чистую таблицу.

Вот такой запрос хоть одну строчку возвращает???


"ВЫБРАТЬ
| Спецификация.СпецификацияЗакупки,
| СУММА(Спецификация.СпецификацияСумма) КАК СпецификацияСумма ПОМЕСТИТЬ ОбщаяСумма
|ИЗ
| РегистрСведений.Спецификация КАК Спецификация
|СГРУППИРОВАТЬ ПО
| Спецификация.СпецификацияЗакупки
|;
|ВЫБРАТЬ
| ОбщиеСведения.Дата,
| ОбщиеСведения.Номер,
| ОбщиеСведения.Способ,
| ОбщиеСведения.Цена,
| ОбщиеСведения.Предмет,
| ОбщиеСведения.ОбщееВсехСумм,
| ОбщаяСумма.СпецификацияСумма
|ИЗ
| РегистрСведений.ОбщиеСведения КАК ОбщиеСведения";
32. Terabaytus 25.03.20 16:49 Сейчас в теме
(23)Вот такой нет а если добавить строчку

|ИЗ
| РегистрСведений.ОбщиеСведения КАК ОбщиеСведения, 
|   ОбщаяСумма КАК ОбщаяСумма ";


То всё работает.
33. YanTsys 12 25.03.20 19:26 Сейчас в теме
(32) Пропустил, оставил строчку ОбщаяСумма.СпецификацияСумма

значит и такой должен работать...

"ВЫБРАТЬ
| Спецификация.СпецификацияЗакупки,
| СУММА(Спецификация.СпецификацияСумма) КАК СпецификацияСумма ПОМЕСТИТЬ ОбщаяСумма
|ИЗ
| РегистрСведений.Спецификация КАК Спецификация
|СГРУППИРОВАТЬ ПО
| Спецификация.СпецификацияЗакупки
|;
|ВЫБРАТЬ
| ОбщиеСведения.Дата,
| ОбщиеСведения.Номер,
| ОбщиеСведения.Способ,
| ОбщиеСведения.Цена,
| ОбщиеСведения.Предмет,
| ОбщиеСведения.ОбщееВсехСумм
|ИЗ
| РегистрСведений.ОбщиеСведения КАК ОбщиеСведения";
Показать


Еще раз спрошу про запятую,
Вот в этом варианте запятая может быть
|ИЗ
| РегистрСведений.ОбщиеСведения КАК ОбщиеСведения,
| ОбщаяСумма КАК ОбщаяСумма ";


а вот в ранее описанном варианте
| РегистрСведений.ОбщиеСведения КАК ОбщиеСведения,
| ЛЕВОЕ СОЕДИНЕНИЕ ОбщаяСумма КАК ОбщаяСумма

запятой не должно быть так как ЛЕВОЕ СОЕДИНЕНИЕ должно находиться между двумя объектами
35. Terabaytus 26.03.20 08:49 Сейчас в теме
(33) Убрал запятую, результат тот же.

"ВЫБРАТЬ
| Спецификация.СпецификацияЗакупки,
| СУММА(Спецификация.СпецификацияСумма) КАК СпецификацияСумма ПОМЕСТИТЬ ОбщаяСумма
|ИЗ
| РегистрСведений.Спецификация КАК Спецификация
|СГРУППИРОВАТЬ ПО
| Спецификация.СпецификацияЗакупки
|;
|ВЫБРАТЬ
| ОбщиеСведения.Дата,
| ОбщиеСведения.Номер,
| ОбщиеСведения.Способ,
| ОбщиеСведения.Цена,
| ОбщиеСведения.Предмет,
| ОбщиеСведения.ОбщееВсехСумм
|ИЗ
| РегистрСведений.ОбщиеСведения КАК ОбщиеСведения"; 
Показать


Да такой запрос работает.
37. YanTsys 12 26.03.20 09:18 Сейчас в теме
(35) Тогда попробуйте в такой упрощенный запрос добавить левое соединение не руками а через конструктор запросов, может он выругается на какое то несоответствие, может у вас типы сравниваемых полей не совпадают, к примеру в Спецификация.СпецификацияСумма или в ОбщиеСведения.ОбщееВсехСумм хранится не число а строка...
24. herfis 498 25.03.20 16:06 Сейчас в теме
(22) Что такое Реестр? Может, у его колонки СпецификацияСумма неправильный тип?
26. VmvLer 25.03.20 16:09 Сейчас в теме
сначала в школу, затем к запросам.

зачем чему то учить когда тс таблицу умножения не читал?
29. Jen1978 19 25.03.20 16:25 Сейчас в теме
какая производственная необходимость заставила Вас соединять таблицы по сумме ?
31. Terabaytus 25.03.20 16:37 Сейчас в теме
(29)Из таблицы спецификация нужно было получить Сумму поля СпецификацияСумма сгруппировать результат по полю Спецификация закупки результаты поместить в таблицу Реестр колонку ОбщееВсехСумм.
34. Jen1978 19 25.03.20 21:13 Сейчас в теме
(31) для соединения таблиц нужно поле, которое присутствует и в первой таблице и во второй таблице для сравнения и по условию сравнения будет осуществлено соединение таблиц
36. YanTsys 12 26.03.20 09:09 Сейчас в теме
(34) Но допустим мы знаем что у нас все суммы уникальные, одинаковых нет, и хотим проверить правильно ли заполнены в регистре итоговые суммы, разве запросы в 1с не умеют объединять таблицы по сумме, я допустим завис не могу понять почему у него запрос не работает, смущает только то что он очевидно запрос редактирует руками а не конструктором так как слово поместить у него в середине строки и запятая была лишняя, может есть какая-то чисто синтаксическая неприметная ошибка?
38. Jen1978 19 26.03.20 10:33 Сейчас в теме
(36) тогда в первой таблице должна быть такая же сумма, а у него ее нет во втором запросе.
40. YanTsys 12 26.03.20 11:33 Сейчас в теме
(38) во втором запросе идет соединение ПО ОбщиеСведения.ОбщееВсехСумм = ОбщаяСумма.СпецификацияСумма

ОбщиеСведения.ОбщееВсехСумм допустим равно 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
        |ИЗ
        |   Справочник.Люди КАК Люди
        |      ЛЕВОЕ СОЕДИНЕНИЕ
        |   Справочник.Характеристики КАК Характеристики
        |      ПО
        |   Люди.Наименование = Характеристики.Наименование"
    );
Показать полностью
30. Jen1978 19 25.03.20 16:26 Сейчас в теме
ВЫБРАТЬ
| Спецификация.СпецификацияЗакупки,
| СУММА(Спецификация.СпецификацияСумма) КАК СпецификацияСумма
| ПОМЕСТИТЬ ОбщаяСумма
|ИЗ
| РегистрСведений.Спецификация КАК Спецификация
|СГРУППИРОВАТЬ ПО
| Спецификация.СпецификацияЗакупки
|;
|ВЫБРАТЬ
| ОбщиеСведения.Дата,
| ОбщиеСведения.Номер,
| ОбщиеСведения.Способ,
| ОбщиеСведения.Цена,
| ОбщиеСведения.Предмет,
| ОбщиеСведения.ОбщееВсехСумм,
| ОбщаяСумма.СпецификацияСумма
|ИЗ
| РегистрСведений.ОбщиеСведения КАК ОбщиеСведения,
| ЛЕВОЕ СОЕДИНЕНИЕ ОбщаяСумма КАК ОбщаяСумма
| ПО ОбщиеСведения.ОбщееВсехСумм = ОбщаяСумма.СпецификацияСумма";



попробуйте копать в сторону соединения по полю "Спецификация.СпецификацияЗакупки"
39. Jen1978 19 26.03.20 10:37 Сейчас в теме
"
Да можно сказать что и тестовое я в 1С не давно есть опыт работы в других языках, но вы сей час не много усложняете мне просто нужно сгруппировать данные по одному полю в таблице спецификация, а результат поместить в другую.


Вы можете поместить результат выборки первой таблицы во вторую но по какому признаку ?
41. Terabaytus 26.03.20 16:25 Сейчас в теме
(39) я проверил Выборку в консоли запроса результат в виде таблицы.
Прикрепленные файлы:
42. Jen1978 19 26.03.20 16:40 Сейчас в теме
вот вы соединяете по спецификациисумма контракта.... и какое значение мы наблюдаем ? верно пусто и это пусто повторяется в каждой строке запроса
43. Jen1978 19 26.03.20 16:41 Сейчас в теме
и о какой уникальности суммы можно в вашем случае говорить
44. Jen1978 19 26.03.20 16:42 Сейчас в теме
по номеру закупки соединяйте левое соединение
45. Jen1978 19 26.03.20 16:45 Сейчас в теме
Левое соединение ОбщаяСуммаПозицийВСпецификации как ОбщаяСуммаПозицийВСпецификации
по ОбщаяСуммаПозицийВСпецификации.СпецификацияКонтрактаНомерЗакупки = ОбщиеСведения.НомерЗакупки
46. Jen1978 19 26.03.20 16:45 Сейчас в теме
видимо от Вас это требуют. Но подача информации на форум очень мучительная
47. Jen1978 19 26.03.20 16:49 Сейчас в теме
чтобы уж точно понять в конце запроса поставьте " ; " (точку с запятой) , затем в конец скопируйте текст первого запроса и уберите "поместить ОбщаяСуммаПозицийВСпецификации"
48. Jen1978 19 26.03.20 16:50 Сейчас в теме
ну и выполните запрос и скрин сюда
49. Terabaytus 26.03.20 18:02 Сейчас в теме
(48) Выполнить первый запрос ?
Прикрепленные файлы:
50. Terabaytus 26.03.20 19:38 Сейчас в теме
(48) Не понял почему нужно соединять по группировочному полю

Левое соединение ОбщаяСуммаПозицийВСпецификации как ОбщаяСуммаПозицийВСпецификации
по ОбщаяСуммаПозицийВСпецификации.СпецификацияКонтрактаНомерЗакупки = ОбщиеСведения.НомерЗакупки

результат тот же.
Прикрепленные файлы:
51. Jen1978 19 26.03.20 19:51 Сейчас в теме
Удаленка и телефон..... Смогу показать и пояснить. В прежнем формате я уже исчерпал терпение.
52. Jen1978 19 26.03.20 19:52 Сейчас в теме
Мой номер указан в профиле
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот