Имя: Пароль:
1C
1С v8
Сборка запроса "по кускам"
0 YurAnt
 
11.09.13
09:41
Доброго времени-суток всем.
Вот такой вопрос, БП 2.0, ковыряю всё ту же книгу продаж, допилил возможность вывода списка с разделением по типу счета-фактуры.

Однако на моем пути встало одно большое волосатое "НО".
А именно, не хочет собираться по кускам запрос (wtf?): поскольку добавил проверку выборки на условия "тип СФ", то если тип не выбран, то хрен-что выведется (вместо фулл-списка), а потому возникла необходимость внедрить условие: "если тип выбирался на форме, то кусок с добавлением проверки на эти параметры в запросе есть, иначе - "все в сад".

    Запрос.Текст =
    "ВЫБРАТЬ
    |    ВЫБОР
    |        КОГДА НДСЗаписиКнигиПродажОбороты.ВидЦенности В (&ВидыЦенностей_СобственныеСФ)
    |                ИЛИ НДСЗаписиКнигиПродажОбороты.ВидЦенности = ЗНАЧЕНИЕ(Перечисление.ВидыЦенностей.АвансыВыданные)
    |                    И НЕ &ВыводитьПродавцовПоАвансам
    |                ИЛИ НДСЗаписиКнигиПродажОбороты.СчетФактура ССЫЛКА Документ.КорректировкаПоступления
    |            ТОГДА НДСЗаписиКнигиПродажОбороты.Организация
    |        ИНАЧЕ НДСЗаписиКнигиПродажОбороты.Покупатель
    |    КОНЕЦ КАК Контрагент,
    |    НДСЗаписиКнигиПродажОбороты.Период КАК Период,
    |    НДСЗаписиКнигиПродажОбороты.СчетФактура КАК СчетФактура,
    |    НДСЗаписиКнигиПродажОбороты.ДатаОплаты КАК ДатаОплаты,
    |    НДСЗаписиКнигиПродажОбороты.ДокументОплаты КАК ДокументОплаты,
    |    НДСЗаписиКнигиПродажОбороты.Событие КАК Событие,
    |    ВЫБОР
    |        КОГДА НДСЗаписиКнигиПродажОбороты.ДатаСобытия = ДАТАВРЕМЯ(1, 1, 1)
    |            ТОГДА НДСЗаписиКнигиПродажОбороты.СчетФактура.Дата
    |        ИНАЧЕ НДСЗаписиКнигиПродажОбороты.ДатаСобытия
    |    КОНЕЦ КАК ДатаСобытия,
    |    СУММА(НДСЗаписиКнигиПродажОбороты.СуммаБезНДСОборот + НДСЗаписиКнигиПродажОбороты.НДСОборот) КАК ВсегоПродаж,
    |    СУММА(ВЫБОР
    |            КОГДА НДСЗаписиКнигиПродажОбороты.СтавкаНДС В (&СтавкиНДС20)
    |                ТОГДА НДСЗаписиКнигиПродажОбороты.СуммаБезНДСОборот
    |            ИНАЧЕ 0
    |        КОНЕЦ) КАК СуммаБезНДС20,
    |    СУММА(ВЫБОР
    |            КОГДА НДСЗаписиКнигиПродажОбороты.СтавкаНДС В (&СтавкиНДС20)
    |                ТОГДА НДСЗаписиКнигиПродажОбороты.НДСОборот
    |            ИНАЧЕ 0
    |        КОНЕЦ) КАК НДС20,
    |    СУММА(ВЫБОР
    |            КОГДА НДСЗаписиКнигиПродажОбороты.СтавкаНДС В (&СтавкиНДС18)
    |                ТОГДА НДСЗаписиКнигиПродажОбороты.СуммаБезНДСОборот
    |            ИНАЧЕ 0
    |        КОНЕЦ) КАК СуммаБезНДС18,
    |    СУММА(ВЫБОР
    |            КОГДА НДСЗаписиКнигиПродажОбороты.СтавкаНДС В (&СтавкиНДС18)
    |                ТОГДА НДСЗаписиКнигиПродажОбороты.НДСОборот
    |            ИНАЧЕ 0
    |        КОНЕЦ) КАК НДС18,
    |    СУММА(ВЫБОР
    |            КОГДА НДСЗаписиКнигиПродажОбороты.СтавкаНДС В (&СтавкиНДС10)
    |                ТОГДА НДСЗаписиКнигиПродажОбороты.СуммаБезНДСОборот
    |            ИНАЧЕ 0
    |        КОНЕЦ) КАК СуммаБезНДС10,
    |    СУММА(ВЫБОР
    |            КОГДА НДСЗаписиКнигиПродажОбороты.СтавкаНДС В (&СтавкиНДС10)
    |                ТОГДА НДСЗаписиКнигиПродажОбороты.НДСОборот
    |            ИНАЧЕ 0
    |        КОНЕЦ) КАК НДС10,
    |    СУММА(ВЫБОР
    |            КОГДА НДСЗаписиКнигиПродажОбороты.СтавкаНДС = &СтавкаНДС0
    |                ТОГДА НДСЗаписиКнигиПродажОбороты.СуммаБезНДСОборот + НДСЗаписиКнигиПродажОбороты.НДСОборот
    |            ИНАЧЕ 0
    |        КОНЕЦ) КАК НДС0,
    |    СУММА(ВЫБОР
    |            КОГДА НДСЗаписиКнигиПродажОбороты.СтавкаНДС = &СтавкаБезНДС
    |                ТОГДА НДСЗаписиКнигиПродажОбороты.СуммаБезНДСОборот + НДСЗаписиКнигиПродажОбороты.НДСОборот
    |            ИНАЧЕ 0
    |        КОНЕЦ) КАК СуммаСовсемБезНДС,
    |    НДСЗаписиКнигиПродажОбороты.Организация КАК Организация,
    |    ВЫБОР
    |        КОГДА НДСЗаписиКнигиПродажОбороты.СчетФактура ССЫЛКА Документ.СчетФактураВыданный
    |            ТОГДА ВЫРАЗИТЬ(НДСЗаписиКнигиПродажОбороты.СчетФактура КАК Документ.СчетФактураВыданный).ДокументОснование.Дата
    |        ИНАЧЕ НДСЗаписиКнигиПродажОбороты.СчетФактура.Дата
    |    КОНЕЦ КАК ДатаОприходования,
    |    ВЫБОР
    |        КОГДА НДСЗаписиКнигиПродажОбороты.ВидЦенности В (&ВидыЦенностей_Аванс)
    |            ТОГДА ИСТИНА
    |        ИНАЧЕ ЛОЖЬ
    |    КОНЕЦ КАК НаАванс,
    |    ВЫБОР
    |        КОГДА НДСЗаписиКнигиПродажОбороты.ВидЦенности В (&ВидыЦенностей_СуммоваяРазница)
    |            ТОГДА ИСТИНА
    |        ИНАЧЕ ЛОЖЬ
    |    КОНЕЦ КАК НаСуммовуюРазницу,
    |    ВЫБОР
    |        КОГДА НДСЗаписиКнигиПродажОбороты.ВидЦенности В (&ВидыЦенностей_Аванс)
    |                ИЛИ НДСЗаписиКнигиПродажОбороты.ВидЦенности В (&ВидыЦенностей_СуммоваяРазница)
    |            ТОГДА НДСЗаписиКнигиПродажОбороты.СтавкаНДС
    |        ИНАЧЕ НЕОПРЕДЕЛЕНО
    |    КОНЕЦ КАК СтавкаНДС_Аванс,
    |    ВЫБОР
    |        КОГДА НДСЗаписиКнигиПродажОбороты.ДоговорКонтрагента = ЗНАЧЕНИЕ(Справочник.ДоговорыКонтрагентов.ПустаяСсылка)
    |            ТОГДА НЕОПРЕДЕЛЕНО
    |        ИНАЧЕ НДСЗаписиКнигиПродажОбороты.ДоговорКонтрагента
    |    КОНЕЦ КАК ДоговорАванса,
    |    НДСЗаписиКнигиПродажОбороты.СчетФактура.Дата,
    |    СчетФактураВыданныйДокументыОснования.Ссылка,
    |    СчетФактураВыданныйДокументыОснования.ДокументОснование,
    |    СчетФактураПолученныйДокументыОснования.Ссылка КАК Ссылка1,
    |    СчетФактураПолученныйДокументыОснования.ДокументОснование КАК ДокументОснование1
    |ПОМЕСТИТЬ ЗаписиКнигиПродаж
    |ИЗ
    |    РегистрНакопления.НДСЗаписиКнигиПродаж.Обороты(
    |            &НачалоПериода,
    |            &КонецПериода,
    |            Месяц,
    |            Организация В (&Организация)
    |                И НЕ ЗаписьДополнительногоЛиста = ИСТИНА
    |                И ВЫБОР
    |                    КОГДА &ОтбиратьПоКонтрагенту = ИСТИНА
    |                        ТОГДА Покупатель = &КонтрагентДляОтбора
    |                    ИНАЧЕ ИСТИНА
    |                КОНЕЦ) КАК НДСЗаписиКнигиПродажОбороты
    |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.СчетФактураВыданный.ДокументыОснования КАК СчетФактураВыданныйДокументыОснования
    |        ПО НДСЗаписиКнигиПродажОбороты.СчетФактура = СчетФактураВыданныйДокументыОснования.ДокументОснование
    |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.СчетФактураПолученный.ДокументыОснования КАК СчетФактураПолученныйДокументыОснования
    |        ПО НДСЗаписиКнигиПродажОбороты.СчетФактура = СчетФактураПолученныйДокументыОснования.ДокументОснование";
    Если (ЗначениеЗаполнено(ВидСФВыставленого) ИЛИ ЗначениеЗаполнено(ВидСФПолученного)) Тогда
        Запрос.Текст = Запрос.Текст + "
        |ГДЕ
        |    СчетФактураВыданныйДокументыОснования.Ссылка.ВидСчетаФактуры = &ВидСФВыданный
        |    ИЛИ СчетФактураПолученныйДокументыОснования.Ссылка.ВидСчетаФактуры = &ВидСФПолученный"
        |
        |СГРУППИРОВАТЬ ПО
        |    НДСЗаписиКнигиПродажОбороты.Организация,
        |    НДСЗаписиКнигиПродажОбороты.Период,
        |    НДСЗаписиКнигиПродажОбороты.СчетФактура,
        |    НДСЗаписиКнигиПродажОбороты.ДатаОплаты,
        |    НДСЗаписиКнигиПродажОбороты.ДокументОплаты,
        |    НДСЗаписиКнигиПродажОбороты.Событие,
        |    ВЫБОР
        |        КОГДА НДСЗаписиКнигиПродажОбороты.ДатаСобытия = ДАТАВРЕМЯ(1, 1, 1)
        |            ТОГДА НДСЗаписиКнигиПродажОбороты.СчетФактура.Дата
        |        ИНАЧЕ НДСЗаписиКнигиПродажОбороты.ДатаСобытия
        |    КОНЕЦ,
        |    ВЫБОР
        |        КОГДА НДСЗаписиКнигиПродажОбороты.СчетФактура ССЫЛКА Документ.СчетФактураВыданный
        |            ТОГДА ВЫРАЗИТЬ(НДСЗаписиКнигиПродажОбороты.СчетФактура КАК Документ.СчетФактураВыданный).ДокументОснование.Дата
        |        ИНАЧЕ НДСЗаписиКнигиПродажОбороты.СчетФактура.Дата
        |    КОНЕЦ,
        |    ВЫБОР
        |        КОГДА НДСЗаписиКнигиПродажОбороты.ВидЦенности В (&ВидыЦенностей_Аванс)
        |            ТОГДА ИСТИНА
        |        ИНАЧЕ ЛОЖЬ
        |    КОНЕЦ,
        |    ВЫБОР
        |        КОГДА НДСЗаписиКнигиПродажОбороты.ВидЦенности В (&ВидыЦенностей_Аванс)
        |                ИЛИ НДСЗаписиКнигиПродажОбороты.ВидЦенности В (&ВидыЦенностей_СуммоваяРазница)
        |            ТОГДА НДСЗаписиКнигиПродажОбороты.СтавкаНДС
        |        ИНАЧЕ НЕОПРЕДЕЛЕНО
        |    КОНЕЦ,
        |    ВЫБОР
        |        КОГДА НДСЗаписиКнигиПродажОбороты.ВидЦенности В (&ВидыЦенностей_СуммоваяРазница)
        |            ТОГДА ИСТИНА
        |        ИНАЧЕ ЛОЖЬ
        |    КОНЕЦ,
        |    ВЫБОР
        |        КОГДА НДСЗаписиКнигиПродажОбороты.ДоговорКонтрагента = ЗНАЧЕНИЕ(Справочник.ДоговорыКонтрагентов.ПустаяСсылка)
        |            ТОГДА НЕОПРЕДЕЛЕНО
        |        ИНАЧЕ НДСЗаписиКнигиПродажОбороты.ДоговорКонтрагента
        |    КОНЕЦ,
        |    НДСЗаписиКнигиПродажОбороты.СчетФактура.Дата,
        |    ВЫБОР
        |        КОГДА НДСЗаписиКнигиПродажОбороты.ВидЦенности В (&ВидыЦенностей_СобственныеСФ)
        |                ИЛИ НДСЗаписиКнигиПродажОбороты.ВидЦенности = ЗНАЧЕНИЕ(Перечисление.ВидыЦенностей.АвансыВыданные)
        |                    И НЕ &ВыводитьПродавцовПоАвансам
        |                ИЛИ НДСЗаписиКнигиПродажОбороты.СчетФактура ССЫЛКА Документ.КорректировкаПоступления
        |            ТОГДА НДСЗаписиКнигиПродажОбороты.Организация
        |        ИНАЧЕ НДСЗаписиКнигиПродажОбороты.Покупатель
        |    КОНЕЦ,
        |    СчетФактураВыданныйДокументыОснования.Ссылка,
        |    СчетФактураВыданныйДокументыОснования.ДокументОснование,
        |    СчетФактураПолученныйДокументыОснования.Ссылка,
        |    СчетФактураПолученныйДокументыОснования.ДокументОснование";
    Иначе
        Запрос.Текст = Запрос.Текст + "
        |СГРУППИРОВАТЬ ПО
        |    НДСЗаписиКнигиПродажОбороты.Организация,
        |    НДСЗаписиКнигиПродажОбороты.Период,
        |    НДСЗаписиКнигиПродажОбороты.СчетФактура,
        |    НДСЗаписиКнигиПродажОбороты.ДатаОплаты,
        |    НДСЗаписиКнигиПродажОбороты.ДокументОплаты,
        |    НДСЗаписиКнигиПродажОбороты.Событие,
        |    ВЫБОР
        |        КОГДА НДСЗаписиКнигиПродажОбороты.ДатаСобытия = ДАТАВРЕМЯ(1, 1, 1)
        |            ТОГДА НДСЗаписиКнигиПродажОбороты.СчетФактура.Дата
        |        ИНАЧЕ НДСЗаписиКнигиПродажОбороты.ДатаСобытия
        |    КОНЕЦ,
        |    ВЫБОР
        |        КОГДА НДСЗаписиКнигиПродажОбороты.СчетФактура ССЫЛКА Документ.СчетФактураВыданный
        |            ТОГДА ВЫРАЗИТЬ(НДСЗаписиКнигиПродажОбороты.СчетФактура КАК Документ.СчетФактураВыданный).ДокументОснование.Дата
        |        ИНАЧЕ НДСЗаписиКнигиПродажОбороты.СчетФактура.Дата
        |    КОНЕЦ,
        |    ВЫБОР
        |        КОГДА НДСЗаписиКнигиПродажОбороты.ВидЦенности В (&ВидыЦенностей_Аванс)
        |            ТОГДА ИСТИНА
        |        ИНАЧЕ ЛОЖЬ
        |    КОНЕЦ,
        |    ВЫБОР
        |        КОГДА НДСЗаписиКнигиПродажОбороты.ВидЦенности В (&ВидыЦенностей_Аванс)
        |                ИЛИ НДСЗаписиКнигиПродажОбороты.ВидЦенности В (&ВидыЦенностей_СуммоваяРазница)
        |            ТОГДА НДСЗаписиКнигиПродажОбороты.СтавкаНДС
        |        ИНАЧЕ НЕОПРЕДЕЛЕНО
        |    КОНЕЦ,
        |    ВЫБОР
        |        КОГДА НДСЗаписиКнигиПродажОбороты.ВидЦенности В (&ВидыЦенностей_СуммоваяРазница)
        |            ТОГДА ИСТИНА
        |        ИНАЧЕ ЛОЖЬ
        |    КОНЕЦ,
        |    ВЫБОР
        |        КОГДА НДСЗаписиКнигиПродажОбороты.ДоговорКонтрагента = ЗНАЧЕНИЕ(Справочник.ДоговорыКонтрагентов.ПустаяСсылка)
        |            ТОГДА НЕОПРЕДЕЛЕНО
        |        ИНАЧЕ НДСЗаписиКнигиПродажОбороты.ДоговорКонтрагента
        |    КОНЕЦ,
        |    НДСЗаписиКнигиПродажОбороты.СчетФактура.Дата,
        |    ВЫБОР
        |        КОГДА НДСЗаписиКнигиПродажОбороты.ВидЦенности В (&ВидыЦенностей_СобственныеСФ)
        |                ИЛИ НДСЗаписиКнигиПродажОбороты.ВидЦенности = ЗНАЧЕНИЕ(Перечисление.ВидыЦенностей.АвансыВыданные)
        |                    И НЕ &ВыводитьПродавцовПоАвансам
        |                ИЛИ НДСЗаписиКнигиПродажОбороты.СчетФактура ССЫЛКА Документ.КорректировкаПоступления
        |            ТОГДА НДСЗаписиКнигиПродажОбороты.Организация
        |        ИНАЧЕ НДСЗаписиКнигиПродажОбороты.Покупатель
        |    КОНЕЦ,
        |    СчетФактураВыданныйДокументыОснования.Ссылка,
        |    СчетФактураВыданныйДокументыОснования.ДокументОснование,
        |    СчетФактураПолученныйДокументыОснования.Ссылка,
        |    СчетФактураПолученныйДокументыОснования.ДокументОснование";
    КонецЕсли;

Однако, ругается:

{Отчет.КнигаПродаж.МодульОбъекта(941,3)}: Ожидается ключевое слово 'КонецЕсли' ('EndIf')
        <<?>>| (Проверка: Толстый клиент (обычное приложение))
{Отчет.КнигаПродаж.МодульОбъекта(993,2)}: Ожидается ключевое слово 'КонецФункции' ('EndFunction')
    <<?>>Иначе  (Проверка: Толстый клиент (обычное приложение))
{Отчет.КнигаПродаж.МодульОбъекта(1223,10)}: Оператор Возврат (Return) не может употребляться вне процедуры или функции
    Возврат <<?>>Запрос.Выполнить(); (Проверка: Толстый клиент (обычное приложение))
{Отчет.КнигаПродаж.МодульОбъекта(1223,17)}: Ожидается символ ';'
    Возврат Запрос.<<?>>Выполнить(); (Проверка: Толстый клиент (обычное приложение))
{Отчет.КнигаПродаж.МодульОбъекта(1223,27)}: Ошибка в выражении
    Возврат Запрос.Выполнить(<<?>>); (Проверка: Толстый клиент (обычное приложение))
{Отчет.КнигаПродаж.МодульОбъекта(1223,29)}: Обнаружено логическое завершение исходного текста модуля
    Возврат Запрос.Выполнить();<<?>> (Проверка: Толстый клиент (обычное приложение))


поскольку, на первый взгляд, все логично... Запрос.текст = "блаблабла";
Если а или б заполнены Тогда Запрос.текст = Запрос.текст + "кусок_условием_проверки";
Иначе
Запрос.текст = Запрос.текст + "кусок_без_условия";
КонецЕсли;

Нужен совет... где тут собака порылась? В каком месте я туплю ?

Благодарен за любые советы,
С ув. yurant.
1 YurAnt
 
11.09.13
09:46
941я стр - это последняя "палочка" в сегменте:

    Если (ЗначениеЗаполнено(ВидСФВыставленого) ИЛИ ЗначениеЗаполнено(ВидСФПолученного)) Тогда
        Запрос.Текст = Запрос.Текст + "
        |ГДЕ
        |    СчетФактураВыданныйДокументыОснования.Ссылка.ВидСчетаФактуры = &ВидСФВыданный
        |    ИЛИ СчетФактураПолученныйДокументыОснования.Ссылка.ВидСчетаФактуры = &ВидСФПолученный"
        |
2 YurAnt
 
11.09.13
09:49
Всё, отбой))

Лишний "
в куске

Если (ЗначениеЗаполнено(ВидСФВыставленого) ИЛИ ЗначениеЗаполнено(ВидСФПолученного)) Тогда
        Запрос.Текст = Запрос.Текст + "
        |ГДЕ
        |    СчетФактураВыданныйДокументыОснования.Ссылка.ВидСчетаФактуры = &ВидСФВыданный
        |    ИЛИ СчетФактураПолученныйДокументыОснования.Ссылка.ВидСчетаФактуры = &ВидСФПолученный"

Сам читаю, сам пою, сам билеты продаю))
Всем спасибо за присутствие))
Думаю кому-нибудь пригодится))
3 cw014
 
11.09.13
09:59
T_PAAMAYIM_NEKUDOTAYIM
4 YurAnt
 
11.09.13
13:24
В догонку... =/
Этот трехэтажный запрос содержит ошибку. Суммы из
отдельно-взятых НЕКОТОРЫХ счетов-фактур удваиваются, когда основанием является поступление на расчетный счет по разным договорам.

(совершенно без надежды спрашиваю, но все же...)
быть может кто сталкивался с таким ?
5 z0001
 
11.09.13
14:30
временные таблицы зло
6 mzelensky
 
11.09.13
14:39
Один я не догнал что же хотел автор?
7 YurAnt
 
11.09.13
14:46
(5) ну так что ж теперь, писать свою книгу продаж с блэкджэком и счет-фактурами ?

переписываю дефолт все таки...
на самом деле все проще чем кажется. За основу взял часть от дефолтного запроса из книги продаж.

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


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

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

Получилось както так...
ну а дальше по аналогии перенес сей код в более сложный из Книги Продаж.

(6) mzelensky, в самом начале поста
"Доброго времени-суток всем.
Вот такой вопрос, БП 2.0, ковыряю всё ту же книгу продаж, допилил возможность вывода списка с разделением по типу счета-фактуры. "

С ув. yurant
8 YurAnt
 
11.09.13
14:52
давай даже картинку нарисую)
http://savepic.su/3263787.png
имеется книга продаж)
бух хочет видеть её в разрезе по типам счетов-фактур.
ну а далее я все расписал выше.
9 YurAnt
 
11.09.13
14:55
на данный момент проблема в том, что (4) "Суммы из
отдельно-взятых НЕКОТОРЫХ счетов-фактур удваиваются, когда основанием является поступление на расчетный счет по разным договорам. "
10 catena
 
11.09.13
14:59
(9)Недосоединил соединение.
11 YurAnt
 
12.09.13
07:22
(10) catena, поясните пожалуйста... просто если речь о полном соединении - то уже проверял( всё равно суммы задваиваются(
12 catena
 
12.09.13
07:31
(11)
Смотри, допустим у тебя две таблицы:

Таб1:
Петя | 10
Ваня | 20

и

Таб2:
Петя | Трезвый
Петя | Пьяный

Ты делаешь
Выбрать Таб1.Имя, Таб1.Сумма  из Таб1
Левое соединение Таб2 по Таб1.Имя=Таб2.Имя
Сгруппировать по Таб1.Имя

У тебя получается набор:

Петя | 10    (для качества Трезвый)
Петя | 10    (для качества Пьяный)
Ваня | 20    (NULL, потому как нет в Таб2)

и в итоге ты получаешь:

Петя | 20
Ваня | 20


Вот если бы ты еще в условии соединения указал, что тебе нужен только трезвый Петя, такого бы не произошло.

По какому-то реквизиту твое соединение задваивает. Выводи все поля и смотри, что именно задваивает.
13 Lenka_Boo
 
12.09.13
08:01
(5) B в чем это зло заключается?
14 YurAnt
 
12.09.13
10:42
нашел консоль запросов, в к-й можно отслеживать временные таблицы... и да, catena, вы правы, некоторые записи действительно выбираются дважды...
сижу пытаюсь отследить причину.
15 YurAnt
 
13.09.13
07:19
итак... могу ошибаться но как мне кажется дело в суммировании оборотов.

запрос мой от дефолтного отличается совсем незначительно.
см. ссылку
http://savepic.su/3217663.png

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

подскажите каким образом видоизменить запрос дабы пофиксить задвоение при отборе СФ ?
С ув. yurant
16 YurAnt
 
13.09.13
07:37
хотя нет... там НДС тогда кривой выйдет( не то(
17 YurAnt
 
13.09.13
11:37
так. кажется начал понимать.
Суть вот в чем: поскольку сумма документа выбирается из
18 YurAnt
 
13.09.13
11:39
НДСЗаписиКнигиПродажОбороты.СуммаБезНДСОборот + НДСЗаписиКнигиПродажОбороты.НДСОборот

а выбирается оно на каждую СФ, то если у документа их более 1 - собственно сумма и задвоится

http://savepic.su/3266560.png
19 YurAnt
 
13.09.13
11:40
Итак. :) понять - понял, теперь надобно понять как сие побороть :)