Помогите с запросом выборка документ ККМ , с подзапросом к таблице этого же документа

1. SvetaBr 02.03.19 06:29 Сейчас в теме
Есть документ ЧекККМ , когда попадаем в список , прикрепила файлик скрин списка , нужно в список вставить сумму скидки из таблицы этого же документа.
Динамический запрос.

ВЫБРАТЬ
	ДокументЧекККМ.Ссылка,
	ДокументЧекККМ.ПометкаУдаления,
	ДокументЧекККМ.Номер,
	ДокументЧекККМ.Дата,
	ДокументЧекККМ.Проведен,
	ДокументЧекККМ.Кассир,
	ДокументЧекККМ.Статус,
	ДокументЧекККМ.Архивный,
	ДокументЧекККМ.ВидЦены,
	ДокументЧекККМ.Организация,
	ДокументЧекККМ.КассаККМ,
	ДокументЧекККМ.СуммаДокумента,
	ДокументЧекККМ.Склад,
	ДокументЧекККМ.Партнер,
	ДокументЧекККМ.КассоваяСмена,
//	ДокументЧекККМ.Товары.СуммаРучнойСкидки Как Скидка,   <--- тут как то нужно получить сумму скидки
	ДокументЧекККМ.МоментВремени
ИЗ
	Документ.ЧекККМ КАК ДокументЧекККМ
	
	
Показать
Прикрепленные файлы:
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. alxarz 32 02.03.19 06:58 Сейчас в теме
может, как вариант можно а) перестроить запрос к таблице
"ИЗ
Документ.ЧекККМ.Товары КАК ДокументЧекККМТовары"
б) Соединением с таблицей по документу где соберем общие скидки по документам
3. SvetaBr 02.03.19 07:04 Сейчас в теме
(2)

ВЫБРАТЬ
	ДокументЧекККМ.Ссылка,
	ДокументЧекККМ.ПометкаУдаления,
	ДокументЧекККМ.Номер,
	ДокументЧекККМ.Дата,
	ДокументЧекККМ.Проведен,
	ДокументЧекККМ.Кассир,
	ДокументЧекККМ.Статус,
	ДокументЧекККМ.Архивный,
	ДокументЧекККМ.ВидЦены,
	ДокументЧекККМ.Организация,
	ДокументЧекККМ.КассаККМ,
	ДокументЧекККМ.СуммаДокумента,
	ДокументЧекККМ.Склад,
	ДокументЧекККМ.Партнер,
	ДокументЧекККМ.КассоваяСмена,
	ДокументЧекККМ.Товары,
	СУММА(ЧекККМТовары.СуммаРучнойСкидки) КАК СуммаРучнойСкидки,
	ДокументЧекККМ.МоментВремени
ИЗ

 Документ.ЧекККМ.Товары КАК ЧекККМТовары
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЧекККМ КАК ДокументЧекККМ
        ПО ЧекККМТовары.Ссылка = ДокументЧекККМ.Ссылка

	
СГРУППИРОВАТЬ ПО
    ДокументЧекККМ.Номер,
    ДокументЧекККМ.Дата	

Показать


Ругается:

Ошибка получения информации набора данных
по причине:
Ошибка в запросе набора данных
по причине:
{(18, 8)}: Неверные параметры "СУММА"
СУММА(<<?>>ЧекККМТовары.СуммаРучнойСкидки) КАК СуммаРучнойСкидки,
4. alxarz 32 02.03.19 07:18 Сейчас в теме
(3) есть такая обработка - "Консоль запросов для управляемого приложения.epf", так вот попробуйте сначала свой запрос в ней написать, а если с синтаксисом проблема, используйте конструктор.

тогда может получится что-то вроде этого
ВЫБРАТЬ
	ЧекККМ.Ссылка КАК Ссылка,
	ЧекККМ.КассаККМ КАК КассаККМ,
	ЧекККМ.Магазин КАК Магазин,
	ЧекККМ.Организация КАК Организация,
	ЧекККМ.Продавец КАК Продавец,
	ЧекККМ.Контрагент КАК Контрагент,
	ВложенныйЗапрос.СуммаРучнойСкидки КАК СуммаРучнойСкидки
ИЗ
	Документ.ЧекККМ КАК ЧекККМ
		ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
			ЧекККМТовары.Ссылка КАК Ссылка,
			СУММА(ЧекККМТовары.СуммаРучнойСкидки) КАК СуммаРучнойСкидки
		ИЗ
			Документ.ЧекККМ.Товары КАК ЧекККМТовары
		
		СГРУППИРОВАТЬ ПО
			ЧекККМТовары.Ссылка) КАК ВложенныйЗапрос
		ПО (ЧекККМ.Ссылка = ВложенныйЗапрос.Ссылка)
Показать
5. SvetaBr 02.03.19 07:29 Сейчас в теме
(4)
ОпределяемыйТип.ДенежноеПолеЛюбойЗнак вот причина ошибки ( Неверные параметры "СУММА" )
интересно как суммировать такие поля
6. SvetaBr 02.03.19 07:39 Сейчас в теме
(4)
ДА! так нормально , правда поле заменила на другое


ВЫБРАТЬ
ДокументЧекККМ.Ссылка,
ДокументЧекККМ.ПометкаУдаления,
ДокументЧекККМ.Номер,
ДокументЧекККМ.Дата,
ДокументЧекККМ.Проведен,
ДокументЧекККМ.Кассир,
ДокументЧекККМ.Статус,
ДокументЧекККМ.Архивный,
ДокументЧекККМ.ВидЦены,
ДокументЧекККМ.Организация,
ДокументЧекККМ.КассаККМ,
ДокументЧекККМ.СуммаДокумента,
ДокументЧекККМ.Склад,
ДокументЧекККМ.Партнер,
ДокументЧекККМ.КассоваяСмена,
ДокументЧекККМ.МоментВремени,
ВложенныйЗапрос.ПроцентРучнойСкидки КАК ПроцентРучнойСкидки
ИЗ
Документ.ЧекККМ КАК ДокументЧекККМ
ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
ЧекККМТовары.Ссылка КАК Ссылка,
СУММА(ЧекККМТовары.ПроцентРучнойСкидки) КАК ПроцентРучнойСкидки
ИЗ
Документ.ЧекККМ.Товары КАК ЧекККМТовары

СГРУППИРОВАТЬ ПО
ЧекККМТовары.Ссылка) КАК ВложенныйЗапрос
ПО (ДокументЧекККМ.Ссылка = ВложенныйЗапрос.Ссылка)
7. SvetaBr 02.03.19 07:40 Сейчас в теме
Но теперь другая проблема!
с интерфейсом, полученное поле упорно не появляется в списке
8. alxarz 32 02.03.19 07:45 Сейчас в теме
(7) картинку хоть приложите, где вы добавили это поле в интерфейс и с какими свойствами...
9. SvetaBr 02.03.19 07:46 Сейчас в теме
Само поле вроде как добавила , и запрос Ваш работает.
но поля нет , как же его вставить ?
Прикрепленные файлы:
10. spec8s 852 02.03.19 12:57 Сейчас в теме
Решение задачи:

В запрос списка добавить поле:

0 КАК СуммаРучнойСкидки

Например текст запроса будет таким
ВЫБРАТЬ
	ДокументЧекККМ.Ссылка,
	ДокументЧекККМ.ПометкаУдаления,
	ДокументЧекККМ.Номер,
	ДокументЧекККМ.Дата,
	ДокументЧекККМ.Проведен,
	ДокументЧекККМ.АдресЧекаЕГАИС,
	ДокументЧекККМ.АналитикаХозяйственнойОперации,
	ДокументЧекККМ.БонусыНачислены,
	ДокументЧекККМ.ВидОперации,
	ДокументЧекККМ.ВладелецДисконтнойКарты,
	ДокументЧекККМ.ДисконтнаяКарта,
	ДокументЧекККМ.ЗаказПокупателя,
	ДокументЧекККМ.КассаККМ,
	ДокументЧекККМ.Комментарий,
	ДокументЧекККМ.Магазин,
	ДокументЧекККМ.НомерСменыККМ,
	ДокументЧекККМ.НомерЧекаККМ,
	ДокументЧекККМ.Организация,
	ДокументЧекККМ.Ответственный,
	ДокументЧекККМ.ОтработанПереход,
	ДокументЧекККМ.ОтчетОРозничныхПродажах,
	ДокументЧекККМ.ПодписьЧекаЕГАИС,
	ДокументЧекККМ.Продавец,
	ДокументЧекККМ.СкидкиРассчитаны,
	ДокументЧекККМ.СтатусЧекаККМ,
	ДокументЧекККМ.СуммаДокумента,
	ДокументЧекККМ.УдалитьДоговорЭквайринга,
	ДокументЧекККМ.ЦенаВключаетНДС,
	ДокументЧекККМ.ЧекККМПродажа,
	ДокументЧекККМ.Телефон,
	ДокументЧекККМ.АдресЭП,
	ДокументЧекККМ.ДоговорПлатежногоАгента,
	ДокументЧекККМ.ВидНалога,
	ДокументЧекККМ.Контрагент,
	ДокументЧекККМ.ОперацияСДенежнымиСредствами,
	ДокументЧекККМ.ДокументРасчета,
	ДокументЧекККМ.Товары,
	ДокументЧекККМ.Оплата,
	ДокументЧекККМ.УправляемыеСкидки,
	ДокументЧекККМ.Подарки,
	ДокументЧекККМ.СкидкиНаценки,
	ДокументЧекККМ.СерийныеНомера,
	ДокументЧекККМ.СерииПодарков,
	ДокументЧекККМ.ПогашениеПодарочныхСертификатов,
	ДокументЧекККМ.Серии,
	ДокументЧекККМ.БонусныеБаллыКНачислению,
	ДокументЧекККМ.АкцизныеМарки,
	ДокументЧекККМ.ПредъявленныеКодыОднократныхСкидок,
	ДокументЧекККМ.КодыМаркировки,
	ДокументЧекККМ.МоментВремени,
	0 КАК СуммаРучнойСкидки
ИЗ
	Документ.ЧекККМ КАК ДокументЧекККМ
Показать


На форму списка вывести реквизит СуммаРучнойСкидки

Создаем обработчик ПриПолученииДанныхНаСервере у элемента Список

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


Если запрос ругается на функцию сумма, то надо изменить текст
| СУММА(ЧекККМТовары.СуммаРучнойСкидки) КАК СуммаРучнойСкидки
на
| СУММА(Выразить(ЧекККМТовары.СуммаРучнойСкидки КАК Число(15,2)) КАК СуммаРучнойСкидки

Готово!
11. SvetaBr 02.03.19 14:29 Сейчас в теме
(10) Спасибо Вам за помощь!
Добавила процедуру привязала к списку ,т.е. cоздала обработчик ПриПолученииДанныхНаСервере у элемента Список

// { Изменение Светлана Брюлова  Помогал Валерий Березуцких pec8s  https://forum.infostart.ru
Процедура СписокПриПолученииДанныхНаСервере(ИмяЭлемента, Настройки, Строки)
	// Вставить содержимое обработчика.
	Запрос = Новый Запрос(
    "ВЫБРАТЬ
    |    ЧекККМТовары.Ссылка КАК Ссылка,
    |    СУММА(ЧекККМТовары.СуммаРучнойСкидки) КАК СуммаРучнойСкидки
    |ИЗ
    |    Документ.ЧекККМ.Товары КАК ЧекККМТовары
    |ГДЕ
    |    ЧекККМТовары.Ссылка В(&МассивСсылок)
    |
    |СГРУППИРОВАТЬ ПО
    |    ЧекККМТовары.Ссылка");
    Запрос.УстановитьПараметр("МассивСсылок", Строки.ПолучитьКлючи());
    Выборка = Запрос.Выполнить().Выбрать();
    Пока Выборка.Следующий() Цикл
        Строка = Строки.Получить(Выборка.Ссылка);
        Строка.Данные.СуммаРучнойСкидки = Выборка.СуммаРучнойСкидки;
    КонецЦикла;    
КонецПроцедуры
// Изменение Светлана Брюлова
Показать


Вроде все понятно и должно работать, но колонка упорно не добавляется.
При поднятии формы на изменение не нахожу свой реквизит СуммаРучнойСкидки
Прикрепленные файлы:
12. independ 1556 02.03.19 14:38 Сейчас в теме
(11) значит где-то идет подмена текста запроса, кстати проверил в УТ 11.4.5.63, у ЧекККМ вообще нет формы списка, но есть журнал ЧекиККИ
Прикрепленные файлы:
13. SvetaBr 02.03.19 15:01 Сейчас в теме
(12) В моей конфигурации ( 11.4.6.174) выглядит так
Прикрепленные файлы:
15. SvetaBr 03.03.19 00:12 Сейчас в теме
(10)

получилось! Спасибо Вам большое
Просто форма была в другом месте.
14. SvetaBr 03.03.19 00:03 Сейчас в теме
Нашла!
Форма оказывается совсем в другом месте!
16. Lobion 03.03.19 00:27 Сейчас в теме
Зачем подзапрос? Временная таблица и левое соединение решают.

ВЫБРАТЬ
	ЧекККМТовары.Ссылка КАК Ссылка,
	СУММА(ЧекККМТовары.СуммаРучнойСкидки) КАК СуммаРучнойСкидки
ПОМЕСТИТЬ ВТ_СуммаСкидки
ИЗ
	Документ.ЧекККМ.Товары КАК ЧекККМТовары

СГРУППИРОВАТЬ ПО
	ЧекККМТовары.Ссылка
ИНДЕКСИРОВАТЬ ПО 
	ЧекККМТовары.Ссылка
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
   ДокументЧекККМ.Ссылка,
   ДокументЧекККМ.ПометкаУдаления,
   ДокументЧекККМ.Номер,
   ДокументЧекККМ.Дата,
   ДокументЧекККМ.Проведен,
   ДокументЧекККМ.Кассир,
   ДокументЧекККМ.Статус,
   ДокументЧекККМ.Архивный,
   ДокументЧекККМ.ВидЦены,
   ДокументЧекККМ.Организация,
   ДокументЧекККМ.КассаККМ,
   ДокументЧекККМ.СуммаДокумента,
   ДокументЧекККМ.Склад,
   ДокументЧекККМ.Партнер,
   ДокументЧекККМ.КассоваяСмена,
   ДокументЧекККМ.МоментВремени,
	ВТ_СуммаСкидки.СуммаРучнойСкидки
ИЗ
    Документ.ЧекККМ КАК ДокументЧекККМ
ЛЕВОЕ СОЕДИНЕНИЕ ВТ_СуммаСкидки КАК ВТ_СуммаСкидки
	ПО ВТ_СуммаСкидки.Ссылка = ДокументЧекККМ.Ссылка
Показать
17. user1927014 11.10.23 14:26 Сейчас в теме
(2)
ВЫБРАТЬ		
	ЧекККМТовары.Ссылка.Номер КАК Номер,	
	ЧекККМТовары.Ссылка.Дата КАК Дата,	
	ЧекККМТовары.Номенклатура КАК Номенклатура,	
	ЧекККМТовары.Штрихкод КАК Штрихкод,	
	ЧекККМТовары.Количество КАК Количество,	
	ЧекККМТовары.Цена КАК Цена,	
	ЧекККМТовары.Сумма КАК Сумма,	
	ЧекККМТовары.СуммаНДС КАК СуммаНДС,	
	ЧекККМТовары.ПроцентАвтоматическойСкидки КАК ПроцентАвтоматическойСкидки,	
	ЧекККМТовары.СуммаАвтоматическойСкидки КАК СуммаАвтоматическойСкидки,	
	ЧекККМТовары.ПроцентРучнойСкидки КАК ПроцентРучнойСкидки,	
	ЧекККМТовары.СуммаРучнойСкидки КАК СуммаРучнойСкидки,	
	ЧекККМТовары.Продавец КАК Продавец,	
	ЧекККМТовары.Ссылка.Проведен КАК Проведен,	
	ЧекККМТовары.Ссылка.Партнер КАК Партнер,	
	ЧекККМТовары.Ссылка.ИспользоватьОплатуБонуснымиБаллами КАК ИспользоватьОплатуБонуснымиБаллами,	
	ЧекККМТовары.СуммаБонусныхБалловКСписанию КАК СуммаБонусныхБалловКСписанию,	
	ЧекККМТовары.Ссылка.ФормаОплаты КАК ФормаОплаты,	
	ЧекККМТовары.Ссылка.Кассир КАК Кассир,	
	ЧекККМТовары.Ссылка.Склад КАК Склад,	
	ЧекККМТовары.Ссылка.СтатусКлиента КАК СтатусКлиента,	
	ЧекККМТовары.Номенклатура.ВидНоменклатуры КАК НоменклатураВидНоменклатуры,	
	ЧекККМ.КартаЛояльности.Ссылка КАК КартаЛояльностиСсылка,	
	ЧекККМ.Партнер.Пол КАК ПартнерПол,	
	ЧекККМ.Партнер.ДатаРождения КАК ПартнерДатаРождения	
ИЗ		
	Документ.ЧекККМ.Товары КАК ЧекККМТовары	
		ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЧекККМ КАК ЧекККМ
		ПО (ЧекККМТовары.Ссылка = ЧекККМ.Ссылка)
ГДЕ		
	ЧекККМТовары.Ссылка.Дата > &Начало	                   (Можно выбрать конкретную дату)
	И ЧекККМТовары.Ссылка.Дата < &Конец	                   (Можно выбрать конкретную дату)
Показать
Оставьте свое сообщение

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