![]() |
![]() |
![]() |
|
Помогите с вложенным запросом | ☑ | ||
---|---|---|---|---|
0
Dimalove
26.01.17
✎
14:42
|
Конфигурация Бух 3.0.46.19
Есть динамический список формы списка документа СчетНаОплатуПоставщика. Нужно добавить новое поле НомерПП(это номер документа Платежного поручения) при этом в это поле нужно выводить номер последнего документа Платежного поручения. Но на основании Счета можно создать несколько "Платежного поручения" и нужно выводить именно последний. Вот такой запрос: ВЫБРАТЬ РАЗЛИЧНЫЕ ДокументСчетНаОплатуПоставщика.Ссылка, ДокументСчетНаОплатуПоставщика.ПометкаУдаления, ДокументСчетНаОплатуПоставщика.Номер, ДокументСчетНаОплатуПоставщика.Дата, ДокументСчетНаОплатуПоставщика.Проведен, ДокументСчетНаОплатуПоставщика.Организация, ДокументСчетНаОплатуПоставщика.Контрагент, ДокументСчетНаОплатуПоставщика.ДоговорКонтрагента, ВЫРАЗИТЬ(ДокументСчетНаОплатуПоставщика.Комментарий КАК СТРОКА(300)) КАК Поле1, ДокументСчетНаОплатуПоставщика.Ответственный, ДокументСчетНаОплатуПоставщика.ВалютаДокумента, ДокументСчетНаОплатуПоставщика.СуммаДокумента, ДокументСчетНаОплатуПоставщика.НомерВходящегоДокумента, ДокументСчетНаОплатуПоставщика.ДатаВходящегоДокумента, ВЫРАЗИТЬ(ЕСТЬNULL(СтатусыДокументов.Статус, &СтатусОплатыПоУмолчанию) КАК Перечисление.СтатусОплатыСчета) КАК Оплата, ЕСТЬNULL(СрокиОплатыДокументов.СрокОплаты, ДАТАВРЕМЯ(1, 1, 1)) КАК СрокОплаты, СостоянияЭД.СостояниеВерсииЭД, ВЫБОР КОГДА ДокументСчетНаОплатуПоставщика.ПометкаУдаления = ИСТИНА ТОГДА 2 КОГДА ДокументСчетНаОплатуПоставщика.Проведен = ИСТИНА ТОГДА 1 ИНАЧЕ 0 КОНЕЦ КАК СостояниеДокумента, ВЫБОР КОГДА ДокументыСОшибкамиПроверкиКонтрагентов.Документ ЕСТЬ NULL ТОГДА ЛОЖЬ ИНАЧЕ ИСТИНА КОНЕЦ КАК СодержитНекорректныхКонтрагентов, ВЫБОР КОГДА НаличиеПрисоединенныхФайлов.ЕстьФайлы ЕСТЬ NULL ТОГДА 1 КОГДА НаличиеПрисоединенныхФайлов.ЕстьФайлы ТОГДА 0 ИНАЧЕ 1 КОНЕЦ КАК ЕстьФайлы, ВложенныйЗапрос.НомерПП ИЗ Документ.СчетНаОплатуПоставщика КАК ДокументСчетНаОплатуПоставщика ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостоянияЭД КАК СостоянияЭД ПО (СостоянияЭД.СсылкаНаОбъект = ДокументСчетНаОплатуПоставщика.Ссылка) ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДокументыСОшибкамиПроверкиКонтрагентов КАК ДокументыСОшибкамиПроверкиКонтрагентов ПО ДокументСчетНаОплатуПоставщика.Ссылка = ДокументыСОшибкамиПроверкиКонтрагентов.Документ И (&ИспользованиеПроверкиВозможно) ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НаличиеПрисоединенныхФайлов КАК НаличиеПрисоединенныхФайлов ПО (НаличиеПрисоединенныхФайлов.ОбъектСФайлами = ДокументСчетНаОплатуПоставщика.Ссылка) ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СтатусыДокументов КАК СтатусыДокументов ПО ДокументСчетНаОплатуПоставщика.Организация = СтатусыДокументов.Организация И ДокументСчетНаОплатуПоставщика.Ссылка = СтатусыДокументов.Документ ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СрокиОплатыДокументов КАК СрокиОплатыДокументов ПО ДокументСчетНаОплатуПоставщика.Организация = СрокиОплатыДокументов.Организация И ДокументСчетНаОплатуПоставщика.Ссылка = СрокиОплатыДокументов.Документ, (ВЫБРАТЬ ПЕРВЫЕ 1 ПлатежноеПоручение.ДокументОснование.Ссылка КАК ДокументОснованиеСсылка, ПлатежноеПоручение.Номер КАК НомерПП ИЗ Документ.ПлатежноеПоручение КАК ПлатежноеПоручение УПОРЯДОЧИТЬ ПО ПлатежноеПоручение.Дата УБЫВ) КАК ВложенныйЗапрос Получается что запрос работает, но во все записи он выводит номер одного и того же документа Платежного поручения. - Это происходит т.к. во вложенном запросе я показываю "ВЫБРАТЬ ПЕРВЫЕ 1" а не "Выбрать" Я это делаю. потому, что что если создано несколько документом платежных поручений то нужно брать один. Если я ставлю просто "Выбрать" то возникает ошибка: Что есть дублирующие записи. Пример ДокументСчетНаОплатуПоставщика1 создан 1 документ ПлатежноеПоручение. ДокументСчетНаОплатуПоставщика2 созданно 2 документа ПлатежноеПоручение. И при конструкции "выбрать" результирующая таблица получается: ДокументСчетНаОплатуПоставщика1 НомерПП 0001 ДокументСчетНаОплатуПоставщика2 НомерПП 0002 ДокументСчетНаОплатуПоставщика2 НомерПП 0003 При этом я ставил галочку в запросе "Без дублей" а ошибка появляется. Что я делаю не так? |
|||
1
polosov
26.01.17
✎
14:44
|
(0) В новых платформах можно использовать временные таблицы.
Пользуй их. |
|||
2
Dimalove
26.01.17
✎
14:48
|
Так как правильно выбрать 1 последний документ Платежного Поручения для каждого документа Счет На Оплату Поставщика.
"Выбрать 1" - Во вложенном запросе выводит всем документам Счет На Оплату Поставщика номер одного и того же Платежного поручения. "Выбрать" - Возникает ошибка т.к. есть дублирующие записи. Т.к. на сновании счета можно создать несколько Платежных поручений. |
|||
3
polosov
26.01.17
✎
14:50
|
(2) В ВТ выбери ПП с группировкой с МАКСИМУМ. И соединяй.
|
|||
4
shamannk
26.01.17
✎
14:50
|
Максимум(Дата) дальше сам догадаешся
|
|||
5
Dimalove
26.01.17
✎
15:16
|
Спасибо, буду дальше копать. Но пока не получается...
|
|||
6
Dimalove
26.01.17
✎
15:25
|
Кто желает подключиться ко мне и помочь? :)
|
|||
7
aleks_default
26.01.17
✎
15:30
|
Сколько платишь?
|
|||
8
vicof
26.01.17
✎
15:56
|
(6) Я даже за деньги боюсь подключаться к пользователю с таким ником)
|
|||
9
Dimalove
26.01.17
✎
17:40
|
Если что разобрался))
|
|||
10
Dimalove
26.01.17
✎
17:41
|
Вложенный запрос:
ВЫБРАТЬ МАКСИМУМ(ЕСТЬNULL(ПлатежноеПоручение.Номер, 0)) КАК НомерПП, ПлатежноеПоручение.ДокументОснование.Ссылка КАК ДокументОснованиеСсылка, МАКСИМУМ(ПлатежноеПоручение.Дата) КАК Дата ИЗ Документ.ПлатежноеПоручение КАК ПлатежноеПоручение СГРУППИРОВАТЬ ПО ПлатежноеПоручение.ДокументОснование.Ссылка |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |