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

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

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

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

Sentinel.Dm

и ещё вопрос есть ли какой нибудь способ (например через групповую обработку обработку справочников и документов) упорядочить строки в ТЧ-х документов по именам и ссумировать одинаковые строки. Или есть какая нибудь внешняя обработка.

has

Не встречал такой обработки. Быстрей самому наверно написать.
Метод сгруппировать так и сделает, указываешь суммируемые поля и по одной номенклатуре суммирует, допустим количество. С ценой как быть, ну максимум попробовать взять, вобще если в одном документе номенклатура продается по разной цене, тут даже в голову ничего не приходит.

Klyacksa

Чтобы "свернуть" табличные части документов, достаточно применить для каждого дока метод Свернуть(). Подробнее посмотрите про него в Синтакс-помощнике. Правда, для этого придется перезаписывать все доки, а, соответственно, и про проведение не забыть. Так что не факт, что это необходимо.

xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

Sentinel.Dm

Свертку документов по строкам содержащим одинаковую номенклатуру по одинаковой цене я сделал.
Дальше переделал запрос в такой:

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


Как только не пробовал Максимум(НомерСтрокиТЧ) так и не смог прикрутить, для соединения нужны номенклатура, поэтому в соединяемой таблице получается столбец где этот Максимум(НомерСтрокиТЧ), колеблется от 1 до КолСтрок. Поэтому соединение не срабатывает. Как можно выкрутится?
Второй вопрос, я подтормаживаю. В результат выборки попадают документы, где хотя бы одна строка удовлетворяет условию равности по Количеству, Цене, СуммеНДС и Сумме, а надо чтоб все.

Sentinel.Dm

Хоть бы скажите реально изменить запрос. а то я конечно пост обработкой могу сделать, но надеюсь и в самом запросе можно.

Sentinel.Dm

Изменил код:

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

СГРУППИРОВАТЬ ПО
            СписокРеализацийСТоваром.Ссылка,
            СписокРеализацийСТоваром.Ссылка.Организация,
            СписокРеализацийСТоваром.Ссылка.Контрагент,
            СписокРеализацийСТоваром.Ссылка.Склад,
            СписокРеализацийСТоваром.Ссылка.Дата,
            СписокРеализацийСТоваром.Ссылка.СуммаДокумента,
            СписокПоступленийСТоваром.СуммаДокПост,
            СписокПоступленийСТоваром.ДатаДокПост,
            СписокПоступленийСТоваром.СсылкаПост,
            СписокПоступленийСТоваром.ОрганДокПост,
            СписокПоступленийСТоваром.КонтрДокПост,
            СписокПоступленийСТоваром.СкладДокПост

УПОРЯДОЧИТЬ ПО
            СписокРеализацийСТоваром.Ссылка.Дата


Получил записи с указанием количества одинаковых строк. Осталось сравнить это число со значением количества строк например в документе реализации.
?

Sentinel.Dm

Переделал очередной раз запрос:

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

СГРУППИРОВАТЬ ПО
            СписокПоступленийСТоваром.КоличествоСтрок,
            СписокРеализацийСТоваром.Ссылка,
            СписокРеализацийСТоваром.Ссылка.Организация,
            СписокРеализацийСТоваром.Ссылка.Контрагент,
            СписокРеализацийСТоваром.Ссылка.Склад,
            СписокРеализацийСТоваром.Ссылка.Дата,
            СписокРеализацийСТоваром.Ссылка.СуммаДокумента,
            СписокПоступленийСТоваром.СуммаДокПост,
            СписокПоступленийСТоваром.ДатаДокПост,
            СписокПоступленийСТоваром.СсылкаПост,
            СписокПоступленийСТоваром.ОрганДокПост,
            СписокПоступленийСТоваром.КонтрДокПост,
            СписокПоступленийСТоваром.СкладДокПост

ИМЕЮЩИЕ
            СписокПоступленийСТоваром.КоличествоСтрок = КОЛИЧЕСТВО(РАЗЛИЧНЫЕ СписокРеализацийСТоваром.НомерСтроки)

УПОРЯДОЧИТЬ ПО
            СписокРеализацийСТоваром.Ссылка.Дата


Получился довольно громоздкий запрос. Но полностью выполняет поставленную задачу.
Подскажите может как то можно "облегчить" запрос?
И второе. Можно ли как то модифицировать запрос, чтоб он выдал такого вида таблицу.

     СовпадДокРеал 1  <--->  СовпадДокПост 1           (в данный момент выводит только эти строки)
     СовпадДокРеал 2  <--->  СовпадДокПост 2           (в данный момент выводит только эти строки)
     СовпадДокРеал 3  <--->  СовпадДокПост 3           (в данный момент выводит только эти строки)
  НесовпадДокРеал 1  <--->  Пусто
     СовпадДокРеал 4  <--->  СовпадДокПост 4           (в данный момент выводит только эти строки)
                     Пусто  <--->  НесовпадДокПост 1
  НесовпадДокРеал 2  <--->  Пусто
                     Пусто  <--->  НесовпадДокПост 2
     СовпадДокРеал 5  <--->  СовпадДокПост 5           (в данный момент выводит только эти строки)
(упорядочены по дате)

has

ЦитироватьПодскажите может как то можно "облегчить" запрос?
Используй временные таблицы.
ЦитироватьИ второе. Можно ли как то модифицировать запрос, чтоб он выдал такого вида таблицу.
Это полное соединение.

Dethmontt

Мне жалко этого программиста(((
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Sentinel.Dm

Спасибо всё сделал.

Теги:

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

Рейтинг@Mail.ru

Поиск