Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
25 ноя 2024, 07:15

Запрос по документам

Автор Sentinel.Dm, 30 ноя 2011, 09:57

0 Пользователей и 1 гость просматривают эту тему.

Sentinel.Dm

Здравствуйте товарищи.
Есть УТ 10. В ней имеются 2 наших фирмы. Между ними осуществляются межфирменные продажи.
Задача запросом вывести список документов межфирменных продаж, в котором создаются пары документов по типу РеализацияТоваровУслуг -- ПоступлениеТоваровУслуг, по условию полного совпадения.
Текст моего запроса:

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

Это то что я сообразил. Дальше начал тупить. Я начинающий, так что если что не ругайте строго.
Почему в результат запрос также попадают документы у которых одинаковая сумма, но не одинаковое содержимое по строкам, кроме одной?
Где подправить?

Sentinel.Dm

Что то у меня как то странно вывелся запрос на странице.
Извините если не очень наглядно, не могу найти кнопку редактирования.

has

А ссылки в поступлении в условии не надо?

ПО
   СписокРеализацийСТоваром.Ссылка.СуммаДокумента = СписокПоступленийСТоваром.Ссылка.СуммаДокумента
   И
   РАЗНОСТЬДАТ(СписокРеализацийСТоваром.Ссылка.Дата, СписокПоступленийСТоваром.Ссылка.Дата, МИНУТА) < 20
   И
   СписокРеализацийСТоваром.Количество = СписокПоступленийСТоваром.КоличествоНомПост
   И
   СписокРеализацийСТоваром.Цена = СписокПоступленийСТоваром.ЦенаНомПост
   И
   СписокРеализацийСТоваром.Сумма = СписокПоступленийСТоваром.СуммаНомПост

Чтобы одинаковое кол-во строк было, надо еще условие на сравнение по МАКСИМУМ(НомерСтроки)

Sentinel.Dm

То есть так:

ПО
СписокРеализацийСТоваром.Ссылка.СуммаДокумента = СписокПоступленийСТоваром.СуммаДокПост
И
РАЗНОСТЬДАТ(СписокРеализацийСТоваром.Ссылка.Дата, СписокПоступленийСТоваром.ДатаДокПост, МИНУТА) < 20
И
СписокРеализацийСТоваром.Номенклатура = СписокПоступленийСТоваром.НоменклатураПост
И
СписокРеализацийСТоваром.Количество = СписокПоступленийСТоваром.КоличествоНомПост
И
СписокРеализацийСТоваром.Цена = СписокПоступленийСТоваром.ЦенаНомПост
И
СписокРеализацийСТоваром.Сумма = СписокПоступленийСТоваром.СуммаНомПост

и уточни что значит максимум(номерстроки), я так понимаю оно возвращает максимальный номерстроки в ТЧ документа, то есть количество записей?

Sentinel.Dm

ааа я понял что за символе отображаются в коде типа <span style="white-space: pre;">    </span> это табуляция

has

Цитата: Sentinel.Dm от 30 ноя 2011, 11:15
и уточни что значит максимум(номерстроки), я так понимаю оно возвращает максимальный номерстроки в ТЧ документа, то есть количество записей?
Да. Ну а как ты узнаешь какое количество строк в табличной части документа?

Sentinel.Dm

Кстати если я обращусь к процедуре максимум(номерстроки), то я только сейчас понял что мне также нужно искать документы которые разбите товары по строкам но по сути документы одинаковые. например такой пара

Продажа:
товар   кол-во   цена   сумма
товар1     3         50       150
товар1     1         49       49
товар1     2         50       100
товар2     3        120      360

Это ведь тоже самое что:
товар   кол-во   цена   сумма
товар1     5         50       250
товар1     1         49       49
товар2     3        120      360

Sentinel.Dm

Можно ли как то свернуть ТЧ по условию равной номенклатуры и цены?

has

Можно. СГРУППИРОВАТЬ табличные части обоих документов в запросе, поместить их во временные таблицы и сравнивать. Как-то так. А вобще странно, что продажа одного товара в одном документе по разным ценам идет. Там даже номеклатура по сути задваиваться не должна, просто увеличить количество.

Sentinel.Dm

В новых документах не проблема сделать именно так, а вот как сделаны старые документы я не ручаюсь. Сам встречал именно такие расхождения.
А вот по поводу СГРУППИРОВАТЬ я уже много где читал про это метод, но не находил наглядных примеров и не мог понять как этот метод работает.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск