Нужно в списке доукментов вывести 2 колонки с валютой и суммами, Если в Документе "Заявка на расходование денежных средств" Валюта взаиморасчетов отличается от валюты платежей (Соответственно и суммы будут отличаться).
Список динамический, если в запросе выбираю валюту и сумму взаиморасчетов, то выдает ошибку "Обнаружено дублирование ключевых значений в колонках: "Ссылка".
Отображение данных в списке невозможно".
Как тогда можно организовать решение этого вопроса, помогите, пжл, разобраться.
На скрине как хотели бы видеть.
Список динамический, если в запросе выбираю валюту и сумму взаиморасчетов, то выдает ошибку "Обнаружено дублирование ключевых значений в колонках: "Ссылка".
Отображение данных в списке невозможно".
Как тогда можно организовать решение этого вопроса, помогите, пжл, разобраться.
На скрине как хотели бы видеть.
Прикрепленные файлы:
По теме из базы знаний
- Динамический список и поиск... неприятностей
- Как передать Таблицу Значений в Динамический Список?
- Динамический список из таблицы значений
- Прокачай список. Как добавить дополнительную информацию в динамический список с помощью расширения!
- Программное добавление колонки в динамический список с помощью объекта "Схема запроса"
Найденные решения
(12) Вы берете данные табличной части. В табличной части может быть несколько строк. Как минимум надо группировать по ссылке и валюте и суммировать СуммуВзаиморасчетов.
Ну и заполнять надо в цикле, а не после цикла.
Ну и заполнять надо в цикле, а не после цикла.
ПОка РезультатЗапроса.Следующий() Цикл
ВалютаВзаиморасчетов = РезультатЗапроса.ВалютаВзаиморасчетов;
СуммаВзаиморасчетов = РезультатЗапроса.СуммаВзаиморасчетов;
СТрокаСписка = Строки[РезультатЗапроса.Ссылка];
СТрокаСписка.Данные.ВалютаВзаиморасчетов = ВалютаВзаиморасчетов;
СТрокаСписка.Данные.СуммаВзаиморасчетов = СуммаВзаиморасчетов;
КонецЦикла;
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(4) ВЫБРАТЬ РАЗЛИЧНЫЕ
Заявка.Ссылка КАК Ссылка,
Заявка.ПометкаУдаления КАК ПометкаУдаления,
Заявка.Номер КАК Номер,
Заявка.Дата КАК Дата,
Заявка.Проведен КАК Проведен,
Заявка.Организация КАК Организация,
Заявка.Статус КАК Статус,
ВЫБОР
КОГДА Заявка.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВыплатаЗарплаты)
ТОГДА Заявка.ХозяйственнаяОперацияПоЗарплате
ИНАЧЕ Заявка.ХозяйственнаяОперация
КОНЕЦ КАК ХозяйственнаяОперация,
Заявка.СуммаДокумента КАК СуммаДокумента,
Заявка.Валюта КАК Валюта,
Заявка.БанковскийСчет КАК БанковскийСчет,
Заявка.Касса КАК Касса,
Заявка.ЖелательнаяДатаПлатежа КАК ДатаПлатежа,
ВЫБОР
КОГДА Заявка.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВыдачаДенежныхСредствПодотчетнику)
ТОГДА Заявка.ПодотчетноеЛицо
КОГДА Заявка.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ОплатаДенежныхСредствВДругуюОрганизацию)
ИЛИ Заявка.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратДенежныхСредствВДругуюОрганизацию)
ИЛИ Заявка.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВнутренняяПередачаДенежныхСредств)
ТОГДА Заявка.ОрганизацияПолучатель
ИНАЧЕ Заявка.Контрагент
КОНЕЦ КАК Получатель,
Заявка.Контрагент КАК Контрагент,
Заявка.Подразделение КАК Подразделение,
Заявка.КтоЗаявил КАК Заявитель,
Заявка.Представление КАК Представление,
Заявка.ПриоритетОплаты КАК ПриоритетОплаты,
Заявка.СверхЛимита КАК СверхЛимита,
Заявка.Автор КАК Автор,
ВЫБОР
КОГДА Заявка.ПриоритетОплаты В
(ВЫБРАТЬ ПЕРВЫЕ 1
Приоритеты.Ссылка КАК Приоритет
ИЗ
Справочник.ПриоритетыОплаты КАК Приоритеты
УПОРЯДОЧИТЬ ПО
Приоритеты.РеквизитДопУпорядочивания)
ТОГДА 0
КОГДА Заявка.ПриоритетОплаты В
(ВЫБРАТЬ ПЕРВЫЕ 1
Приоритеты.Ссылка КАК Приоритет
ИЗ
Справочник.ПриоритетыОплаты КАК Приоритеты
УПОРЯДОЧИТЬ ПО
Приоритеты.РеквизитДопУпорядочивания УБЫВ)
ТОГДА 2
ИНАЧЕ 1
КОНЕЦ КАК КартинкаПриоритета,
ВЫБОР
КОГДА ЕСТЬNULL(ДенежныеСредства.СуммаОстаток, 0) <= 0
И Заявка.Проведен
И Заявка.Статус <> ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаРасходованиеДенежныхСредств.Отклонена)
ТОГДА ИСТИНА
ИНАЧЕ ЛОЖЬ
КОНЕЦ КАК ЗаявкаОплачена,
ВЫБОР
КОГДА НаличиеПрисоединенныхФайлов.ЕстьФайлы ЕСТЬ NULL
ТОГДА 1
КОГДА НаличиеПрисоединенныхФайлов.ЕстьФайлы
ТОГДА 0
ИНАЧЕ 1
КОНЕЦ КАК ЕстьФайлы,
СостоянияЭД.СостояниеЭДО КАК СостояниеЭДО,
СостоянияЭД.ПредставлениеСостояния КАК ПредставлениеСостояния,
ВЫБОР
КОГДА Заявка.Валюта = ЗаявкаРасшифровкаПлатежа.ВалютаВзаиморасчетов
ТОГДА ""
ИНАЧЕ ЗаявкаРасшифровкаПлатежа.ВалютаВзаиморасчетов
КОНЕЦ КАК ВалютаВзаиморасчетов,
ВЫБОР
КОГДА Заявка.СуммаДокумента = ЗаявкаРасшифровкаПлатежа.СуммаВзаиморасчетов
ТОГДА ""
ИНАЧЕ ЗаявкаРасшифровкаПлатежа.СуммаВзаиморасчетов
КОНЕЦ КАК СуммаВзаиморасчетов
ИЗ
Документ.ЗаявкаНаРасходованиеДенежныхСредств КАК Заявка
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ДенежныеСредстваКВыплате.Остатки КАК ДенежныеСредства
ПО (ДенежныеСредства.ЗаявкаНаРасходованиеДенежныхСредств = Заявка.Ссылка)
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НаличиеФайлов КАК НаличиеПрисоединенныхФайлов
ПО Заявка.Ссылка = НаличиеПрисоединенныхФайлов.ОбъектСФайлами
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостоянияПоОбъектамУчетаЭДО КАК СостоянияЭД
ПО (СостоянияЭД.СсылкаНаОбъект = Заявка.Ссылка)
ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаявкаНаРасходованиеДенежныхСредств.РасшифровкаПлатежа КАК ЗаявкаРасшифровкаПлатежа
ПО (ЗаявкаРасшифровкаПлатежа.Ссылка = Заявка.Ссылка)
Вот запрос, добавила в него только 2 новых значения для выборки ВалютаВзаиморасчетов и суммавзаиморасчетов.
Заявка.Ссылка КАК Ссылка,
Заявка.ПометкаУдаления КАК ПометкаУдаления,
Заявка.Номер КАК Номер,
Заявка.Дата КАК Дата,
Заявка.Проведен КАК Проведен,
Заявка.Организация КАК Организация,
Заявка.Статус КАК Статус,
ВЫБОР
КОГДА Заявка.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВыплатаЗарплаты)
ТОГДА Заявка.ХозяйственнаяОперацияПоЗарплате
ИНАЧЕ Заявка.ХозяйственнаяОперация
КОНЕЦ КАК ХозяйственнаяОперация,
Заявка.СуммаДокумента КАК СуммаДокумента,
Заявка.Валюта КАК Валюта,
Заявка.БанковскийСчет КАК БанковскийСчет,
Заявка.Касса КАК Касса,
Заявка.ЖелательнаяДатаПлатежа КАК ДатаПлатежа,
ВЫБОР
КОГДА Заявка.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВыдачаДенежныхСредствПодотчетнику)
ТОГДА Заявка.ПодотчетноеЛицо
КОГДА Заявка.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ОплатаДенежныхСредствВДругуюОрганизацию)
ИЛИ Заявка.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВозвратДенежныхСредствВДругуюОрганизацию)
ИЛИ Заявка.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВнутренняяПередачаДенежныхСредств)
ТОГДА Заявка.ОрганизацияПолучатель
ИНАЧЕ Заявка.Контрагент
КОНЕЦ КАК Получатель,
Заявка.Контрагент КАК Контрагент,
Заявка.Подразделение КАК Подразделение,
Заявка.КтоЗаявил КАК Заявитель,
Заявка.Представление КАК Представление,
Заявка.ПриоритетОплаты КАК ПриоритетОплаты,
Заявка.СверхЛимита КАК СверхЛимита,
Заявка.Автор КАК Автор,
ВЫБОР
КОГДА Заявка.ПриоритетОплаты В
(ВЫБРАТЬ ПЕРВЫЕ 1
Приоритеты.Ссылка КАК Приоритет
ИЗ
Справочник.ПриоритетыОплаты КАК Приоритеты
УПОРЯДОЧИТЬ ПО
Приоритеты.РеквизитДопУпорядочивания)
ТОГДА 0
КОГДА Заявка.ПриоритетОплаты В
(ВЫБРАТЬ ПЕРВЫЕ 1
Приоритеты.Ссылка КАК Приоритет
ИЗ
Справочник.ПриоритетыОплаты КАК Приоритеты
УПОРЯДОЧИТЬ ПО
Приоритеты.РеквизитДопУпорядочивания УБЫВ)
ТОГДА 2
ИНАЧЕ 1
КОНЕЦ КАК КартинкаПриоритета,
ВЫБОР
КОГДА ЕСТЬNULL(ДенежныеСредства.СуммаОстаток, 0) <= 0
И Заявка.Проведен
И Заявка.Статус <> ЗНАЧЕНИЕ(Перечисление.СтатусыЗаявокНаРасходованиеДенежныхСредств.Отклонена)
ТОГДА ИСТИНА
ИНАЧЕ ЛОЖЬ
КОНЕЦ КАК ЗаявкаОплачена,
ВЫБОР
КОГДА НаличиеПрисоединенныхФайлов.ЕстьФайлы ЕСТЬ NULL
ТОГДА 1
КОГДА НаличиеПрисоединенныхФайлов.ЕстьФайлы
ТОГДА 0
ИНАЧЕ 1
КОНЕЦ КАК ЕстьФайлы,
СостоянияЭД.СостояниеЭДО КАК СостояниеЭДО,
СостоянияЭД.ПредставлениеСостояния КАК ПредставлениеСостояния,
ВЫБОР
КОГДА Заявка.Валюта = ЗаявкаРасшифровкаПлатежа.ВалютаВзаиморасчетов
ТОГДА ""
ИНАЧЕ ЗаявкаРасшифровкаПлатежа.ВалютаВзаиморасчетов
КОНЕЦ КАК ВалютаВзаиморасчетов,
ВЫБОР
КОГДА Заявка.СуммаДокумента = ЗаявкаРасшифровкаПлатежа.СуммаВзаиморасчетов
ТОГДА ""
ИНАЧЕ ЗаявкаРасшифровкаПлатежа.СуммаВзаиморасчетов
КОНЕЦ КАК СуммаВзаиморасчетов
ИЗ
Документ.ЗаявкаНаРасходованиеДенежныхСредств КАК Заявка
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ДенежныеСредстваКВыплате.Остатки КАК ДенежныеСредства
ПО (ДенежныеСредства.ЗаявкаНаРасходованиеДенежныхСредств = Заявка.Ссылка)
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НаличиеФайлов КАК НаличиеПрисоединенныхФайлов
ПО Заявка.Ссылка = НаличиеПрисоединенныхФайлов.ОбъектСФайлами
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостоянияПоОбъектамУчетаЭДО КАК СостоянияЭД
ПО (СостоянияЭД.СсылкаНаОбъект = Заявка.Ссылка)
ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаявкаНаРасходованиеДенежныхСредств.РасшифровкаПлатежа КАК ЗаявкаРасшифровкаПлатежа
ПО (ЗаявкаРасшифровкаПлатежа.Ссылка = Заявка.Ссылка)
Вот запрос, добавила в него только 2 новых значения для выборки ВалютаВзаиморасчетов и суммавзаиморасчетов.
(7)
Соединение с табличной частью - если в ТЧ более 1 строки будет такая ошибка.
Вы можете выводить эти данные в событии ПриПолученииДанныхНаСервере, если отбор/сортировка по этим полям не нужны.
ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаявкаНаРасходованиеДенежныхСредств.РасшифровкаПлатежа КАК ЗаявкаРасшифровкаПлатежа
ПО (ЗаявкаРасшифровкаПлатежа.Ссылка = Заявка.Ссылка)
ПО (ЗаявкаРасшифровкаПлатежа.Ссылка = Заявка.Ссылка)
Соединение с табличной частью - если в ТЧ более 1 строки будет такая ошибка.
Вы можете выводить эти данные в событии ПриПолученииДанныхНаСервере, если отбор/сортировка по этим полям не нужны.
(8) ПриПолученииДанныхНаСервере используется для небольших списков?
Я так пробовала, работает.
Но выводит данные для документов через 10 строк, т.е. заполнил значение для одного документа, затем строк 10-12 пустые, затем опять заполнил.
Почему-то строки не попорядку, как в списке документов, заполняет.
Я так пробовала, работает.
Но выводит данные для документов через 10 строк, т.е. заполнил значение для одного документа, затем строк 10-12 пустые, затем опять заполнил.
Почему-то строки не попорядку, как в списке документов, заполняет.
(10) &НаСервереБезКонтекста
Процедура С_СписокПриПолученииДанныхНаСервереПосле(ИмяЭлемента, Настройки, Строки)
Запрос = НОвый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЗаявкаНаРасходованиеДенежныхСредствРасшифровкаПлатежа.Ссылка КАК Ссылка,
| ЗаявкаНаРасходованиеДенежныхСредствРасшифровкаПлатежа.Сумма КАК Сумма,
| ЗаявкаНаРасходованиеДенежныхСредствРасшифровкаПлатежа.ВалютаВзаиморасчетов КАК ВалютаВзаиморасчетов,
| ЗаявкаНаРасходованиеДенежныхСредствРасшифровкаПлатежа.СуммаВзаиморасчетов КАК СуммаВзаиморасчетов
|ИЗ
| Документ.ЗаявкаНаРасходованиеДенежныхСредств.РасшифровкаПлатежа КАК ЗаявкаНаРасходованиеДенежныхСредствРасшифровкаПлатежа";
|ГДЕ
| ЗаявкаНаРасходованиеДенежныхСредствРасшифровкаПлатежа.Ссылка В(&Ссылка)";
Запрос.УстановитьПараметр("Ссылка", СТроки.ПолучитьКлючи());
РезультатЗапроса = Запрос.Выполнить().Выбрать();
ПОка РезультатЗапроса.Следующий() Цикл
ВалютаВзаиморасчетов = РезультатЗапроса.ВалютаВзаиморасчетов;
СуммаВзаиморасчетов = РезультатЗапроса.СуммаВзаиморасчетов;
КонецЦикла;
СТрокаСписка = Строки[РезультатЗапроса.Ссылка];
СТрокаСписка.Данные.ВалютаВзаиморасчетов = ВалютаВзаиморасчетов;
СТрокаСписка.Данные.СуммаВзаиморасчетов = СуммаВзаиморасчетов;
КонецПроцедуры
Процедура С_СписокПриПолученииДанныхНаСервереПосле(ИмяЭлемента, Настройки, Строки)
Запрос = НОвый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЗаявкаНаРасходованиеДенежныхСредствРасшифровкаПлатежа.Ссылка КАК Ссылка,
| ЗаявкаНаРасходованиеДенежныхСредствРасшифровкаПлатежа.Сумма КАК Сумма,
| ЗаявкаНаРасходованиеДенежныхСредствРасшифровкаПлатежа.ВалютаВзаиморасчетов КАК ВалютаВзаиморасчетов,
| ЗаявкаНаРасходованиеДенежныхСредствРасшифровкаПлатежа.СуммаВзаиморасчетов КАК СуммаВзаиморасчетов
|ИЗ
| Документ.ЗаявкаНаРасходованиеДенежныхСредств.РасшифровкаПлатежа КАК ЗаявкаНаРасходованиеДенежныхСредствРасшифровкаПлатежа";
|ГДЕ
| ЗаявкаНаРасходованиеДенежныхСредствРасшифровкаПлатежа.Ссылка В(&Ссылка)";
Запрос.УстановитьПараметр("Ссылка", СТроки.ПолучитьКлючи());
РезультатЗапроса = Запрос.Выполнить().Выбрать();
ПОка РезультатЗапроса.Следующий() Цикл
ВалютаВзаиморасчетов = РезультатЗапроса.ВалютаВзаиморасчетов;
СуммаВзаиморасчетов = РезультатЗапроса.СуммаВзаиморасчетов;
КонецЦикла;
СТрокаСписка = Строки[РезультатЗапроса.Ссылка];
СТрокаСписка.Данные.ВалютаВзаиморасчетов = ВалютаВзаиморасчетов;
СТрокаСписка.Данные.СуммаВзаиморасчетов = СуммаВзаиморасчетов;
КонецПроцедуры
(12) Вы берете данные табличной части. В табличной части может быть несколько строк. Как минимум надо группировать по ссылке и валюте и суммировать СуммуВзаиморасчетов.
Ну и заполнять надо в цикле, а не после цикла.
Ну и заполнять надо в цикле, а не после цикла.
ПОка РезультатЗапроса.Следующий() Цикл
ВалютаВзаиморасчетов = РезультатЗапроса.ВалютаВзаиморасчетов;
СуммаВзаиморасчетов = РезультатЗапроса.СуммаВзаиморасчетов;
СТрокаСписка = Строки[РезультатЗапроса.Ссылка];
СТрокаСписка.Данные.ВалютаВзаиморасчетов = ВалютаВзаиморасчетов;
СТрокаСписка.Данные.СуммаВзаиморасчетов = СуммаВзаиморасчетов;
КонецЦикла;
(3) пару вариантов:
1) нужно более строгое условие при левом соединении
2) выбрать различные
3) сгруппировать
4) п.2и3. можно делать как над всем запросом так и соединение со сгруппированным запросом
PS либо избавиться от самого факта существования "ключевого поля"
1) нужно более строгое условие при левом соединении
2) выбрать различные
3) сгруппировать
4) п.2и3. можно делать как над всем запросом так и соединение со сгруппированным запросом
PS либо избавиться от самого факта существования "ключевого поля"
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот