1. Terabaytus 25.03.20 13:35 Сейчас в теме

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

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

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

	КонецЦикла;



Показать


в таблицу значений выводится пустым ?
Найденные решения
44. Jen1978 16 26.03.20 16:42 Сейчас в теме
по номеру закупки соединяйте левое соединение
45. Jen1978 16 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 16 25.03.20 16:23 Сейчас в теме
(13) Общее всех сумм пусто, следовательно при левом соединении происходит поиск в РегистрСведений.Спецификация КАК Спецификация

а так как у Вас пусто а в РегистрСведений.Спецификация видимо что то есть, то и не получаете результат
2. VmvLer 25.03.20 13:39 Сейчас в теме
не было совпадений сумм, т.е. значения полей сумм в соединяемых таблицах уникальны
narutouzumaki_13; +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 346 25.03.20 15:20 Сейчас в теме
(0) У тебя пакет запросов (результат первого запроса не помещается во временную таблицу).
В итоге ты думаешь что работаешь с результатом второго запроса, а на самом деле работаешь с результатом первого.
17. herfis 346 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 346 25.03.20 16:06 Сейчас в теме
(22) Что такое Реестр? Может, у его колонки СпецификацияСумма неправильный тип?
26. VmvLer 25.03.20 16:09 Сейчас в теме
сначала в школу, затем к запросам.

зачем чему то учить когда тс таблицу умножения не читал?
29. Jen1978 16 25.03.20 16:25 Сейчас в теме
какая производственная необходимость заставила Вас соединять таблицы по сумме ?
31. Terabaytus 25.03.20 16:37 Сейчас в теме
(29)Из таблицы спецификация нужно было получить Сумму поля СпецификацияСумма сгруппировать результат по полю Спецификация закупки результаты поместить в таблицу Реестр колонку ОбщееВсехСумм.
34. Jen1978 16 25.03.20 21:13 Сейчас в теме
(31) для соединения таблиц нужно поле, которое присутствует и в первой таблице и во второй таблице для сравнения и по условию сравнения будет осуществлено соединение таблиц
36. YanTsys 12 26.03.20 09:09 Сейчас в теме
(34) Но допустим мы знаем что у нас все суммы уникальные, одинаковых нет, и хотим проверить правильно ли заполнены в регистре итоговые суммы, разве запросы в 1с не умеют объединять таблицы по сумме, я допустим завис не могу понять почему у него запрос не работает, смущает только то что он очевидно запрос редактирует руками а не конструктором так как слово поместить у него в середине строки и запятая была лишняя, может есть какая-то чисто синтаксическая неприметная ошибка?
38. Jen1978 16 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 16 25.03.20 16:26 Сейчас в теме
ВЫБРАТЬ
| Спецификация.СпецификацияЗакупки,
| СУММА(Спецификация.СпецификацияСумма) КАК СпецификацияСумма
| ПОМЕСТИТЬ ОбщаяСумма
|ИЗ
| РегистрСведений.Спецификация КАК Спецификация
|СГРУППИРОВАТЬ ПО
| Спецификация.СпецификацияЗакупки
|;
|ВЫБРАТЬ
| ОбщиеСведения.Дата,
| ОбщиеСведения.Номер,
| ОбщиеСведения.Способ,
| ОбщиеСведения.Цена,
| ОбщиеСведения.Предмет,
| ОбщиеСведения.ОбщееВсехСумм,
| ОбщаяСумма.СпецификацияСумма
|ИЗ
| РегистрСведений.ОбщиеСведения КАК ОбщиеСведения,
| ЛЕВОЕ СОЕДИНЕНИЕ ОбщаяСумма КАК ОбщаяСумма
| ПО ОбщиеСведения.ОбщееВсехСумм = ОбщаяСумма.СпецификацияСумма";



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


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

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

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

Вакансии

Product Owner (Менеджер по продукту 1С)
Москва
зарплата от 100 000 руб. до 170 000 руб.
Полный день

Тим лид по разработке 1С (Team Lead 1С)
Москва
зарплата от 100 000 руб. до 200 000 руб.
Полный день

Программист, аналитик, эксперт 1С
Санкт-Петербург
По совместительству

Программист 1С
Новосибирск
зарплата от 30 000 руб.
Временный (на проект)

Программист 1С
Москва
зарплата от 100 000 руб. до 150 000 руб.
Полный день