|
СКД и непонятка с периодом | ☑ | ||
---|---|---|---|---|
0
Beeezy
15.11.22
✎
11:04
|
Всем добрый день (тем кто зашел ночью - все равно добрый день). Попрошу знающих пояснить такой нюанс. УК (та же УНФ в РФ. Версия 1.6.25.1) Создаю отчет на СКД, простенький отчет по прибыли, где тяну оплаты и привязанные к ним документы. Создал запрос, в консоли все отлично, выдает то, что мне нужно, я рад, доволен и счастлив. Заливаю запрос в СКД, настраиваю параметры и к моему удивлению замечаю, что СКД не выдает часть результата. Замечаю, что не выдает именно те документы, которые вылазят за период, причем конкретно те, которые ушли вперед. К примеру, период для отчета 01.10.2022 - 31.10.2022. В запросе по этому периоду я тяну поступления денег. По ним - связанные документы. Так вот, если дата расходного документа(не поступления денег) 14.10.2022 или 18.09.2022 - все отлично, однако если дата 03.11.2022 - в выборку эти позиции не попадают. Я знаю про использование {(&ПериодНеИспользовать)} в накоплениях с оборотами, но тут я использую обычный регистр накопления - РегистрНакопления.РасчетыСПокупателями. Причем повторюсь, в консоли все отлично, тянутся все документы и выборка правильная, а в СКД нет. Может я что-то еще упустил? Спасибо
|
|||
1
Kassern
15.11.22
✎
11:07
|
(0) Запрос покажите
|
|||
2
vicof
15.11.22
✎
11:09
|
Да, упустил текст запроса и настройки параметров
|
|||
3
Beeezy
15.11.22
✎
11:09
|
ВЫБРАТЬ
1 КАК НомерЗапроса, РасчетыСПокупателями.Период КАК Период, РасчетыСПокупателями.Регистратор КАК Документ, РасчетыСПокупателями.НомерСтроки КАК НомерСтроки, РасчетыСПокупателями.ВидДвижения КАК ВидДвижения, РасчетыСПокупателями.Договор КАК Договор, РасчетыСПокупателями.Заказ КАК Заказ, РасчетыСПокупателями.Организация КАК Организация, РасчетыСПокупателями.Контрагент КАК Контрагент, РасчетыСПокупателями.ТипРасчетов КАК ТипРасчетов, РасчетыСПокупателями.Документ КАК Регистратор, РасчетыСПокупателями.Сумма КАК Сумма, РасчетыСПокупателями.СуммаВал КАК СуммаРасчетов, РасчетыСПокупателями.СуммаРег КАК СуммаРег, ВЫБОР КОГДА РасчетыСПокупателями.СпособЗачета = ЗНАЧЕНИЕ(Перечисление.СпособыЗачетаИРаспределенияПлатежей.ПустаяСсылка) ТОГДА ЗНАЧЕНИЕ(Перечисление.СпособыЗачетаИРаспределенияПлатежей.Вручную) ИНАЧЕ РасчетыСПокупателями.СпособЗачета КОНЕЦ КАК СпособЗачета, РасчетыСПокупателями.СуммаПлатежа КАК СуммаПлатежа, РасчетыСПокупателями.Договор.ВалютаРасчетов КАК ВалютаРасчетов, РасчетыСПокупателями.ИндексСтрокиДокумента КАК ИндексСтрокиДокумента, РасчетыСПокупателями.СуммаНДС КАК СуммаНДС, РасчетыСПокупателями.СтавкаНДС КАК СтавкаНДС, ИСТИНА КАК ПризнакАванса, РасчетыСПокупателями.Курс КАК Курс, ИСТИНА КАК ЭтоЗачет, РасчетыСПокупателями.Кратность КАК Кратность, РасчетыСПокупателями.ВалютаПлатежа КАК ВалютаПлатежа, ЛОЖЬ КАК ЭтоЧек ПОМЕСТИТЬ ВременнаяТаблицаОбъединение ИЗ РегистрНакопления.РасчетыСПокупателями КАК РасчетыСПокупателями ГДЕ РасчетыСПокупателями.ТипРасчетов = ЗНАЧЕНИЕ(Перечисление.ТипыРасчетов.Аванс) И РасчетыСПокупателями.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) И РасчетыСПокупателями.Активность ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 2, РасчетыСПокупателями.Период, РасчетыСПокупателями.Регистратор, РасчетыСПокупателями.НомерСтроки, РасчетыСПокупателями.ВидДвижения, РасчетыСПокупателями.Договор, РасчетыСПокупателями.Заказ, РасчетыСПокупателями.Организация, РасчетыСПокупателями.Контрагент, РасчетыСПокупателями.ТипРасчетов, РасчетыСПокупателями.Документ, РасчетыСПокупателями.Сумма, РасчетыСПокупателями.СуммаВал, РасчетыСПокупателями.СуммаРег, РасчетыСПокупателями.СпособЗачета, РасчетыСПокупателями.СуммаПлатежа, РасчетыСПокупателями.Договор.ВалютаРасчетов, РасчетыСПокупателями.ИндексСтрокиДокумента, РасчетыСПокупателями.СуммаНДС, РасчетыСПокупателями.СтавкаНДС, ЛОЖЬ, РасчетыСПокупателями.Курс, ЛОЖЬ, РасчетыСПокупателями.Кратность, РасчетыСПокупателями.ВалютаПлатежа, ЛОЖЬ ИЗ РегистрНакопления.РасчетыСПокупателями КАК РасчетыСПокупателями ГДЕ РасчетыСПокупателями.ТипРасчетов = ЗНАЧЕНИЕ(Перечисление.ТипыРасчетов.Долг) И РасчетыСПокупателями.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) И РасчетыСПокупателями.Активность И (ТИПЗНАЧЕНИЯ(РасчетыСПокупателями.Документ) <> ТИП(Документ.ЗаказПокупателя) ИЛИ РасчетыСПокупателями.Документ.ВидОперации <> ЗНАЧЕНИЕ(Перечисление.ВидыОперацийЗаказПокупателя.ЗаказНаряд)) ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 3, РасчетыСПокупателями.Период, РасчетыСПокупателями.Регистратор, РасчетыСПокупателями.НомерСтроки, РасчетыСПокупателями.ВидДвижения, РасчетыСПокупателями.Договор, РасчетыСПокупателями.Заказ, РасчетыСПокупателями.Организация, РасчетыСПокупателями.Контрагент, РасчетыСПокупателями.Документ, РасчетыСПокупателями.Регистратор, РасчетыСПокупателями.Сумма, РасчетыСПокупателями.СуммаВал, РасчетыСПокупателями.СуммаРег, РасчетыСПокупателями.СпособЗачета, РасчетыСПокупателями.СуммаПлатежа, РасчетыСПокупателями.Договор.ВалютаРасчетов, РасчетыСПокупателями.ИндексСтрокиДокумента, РасчетыСПокупателями.СуммаНДС, РасчетыСПокупателями.СтавкаНДС, ЛОЖЬ, РасчетыСПокупателями.Курс, ЛОЖЬ, РасчетыСПокупателями.Кратность, РасчетыСПокупателями.ВалютаПлатежа, ЛОЖЬ ИЗ РегистрНакопления.РасчетыСПокупателями КАК РасчетыСПокупателями ГДЕ РасчетыСПокупателями.ТипРасчетов = ЗНАЧЕНИЕ(Перечисление.ТипыРасчетов.Аванс) И РасчетыСПокупателями.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) И ТИПЗНАЧЕНИЯ(РасчетыСПокупателями.Регистратор) = ТИП(Документ.ЗаказПокупателя) И РасчетыСПокупателями.Активность ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 4, РасчетыСПокупателями.Период, РасчетыСПокупателями.Регистратор, РасчетыСПокупателями.НомерСтроки, РасчетыСПокупателями.ВидДвижения, РасчетыСПокупателями.Договор, РасчетыСПокупателями.Заказ, РасчетыСПокупателями.Организация, РасчетыСПокупателями.Контрагент, РасчетыСПокупателями.ТипРасчетов, РасчетыСПокупателями.Документ, РасчетыСПокупателями.Сумма, РасчетыСПокупателями.СуммаВал, РасчетыСПокупателями.СуммаРег, РасчетыСПокупателями.СпособЗачета, РасчетыСПокупателями.СуммаПлатежа, РасчетыСПокупателями.Договор.ВалютаРасчетов, РасчетыСПокупателями.ИндексСтрокиДокумента, РасчетыСПокупателями.СуммаНДС, РасчетыСПокупателями.СтавкаНДС, ЛОЖЬ, РасчетыСПокупателями.Курс, ЛОЖЬ, РасчетыСПокупателями.Кратность, РасчетыСПокупателями.ВалютаПлатежа, ЛОЖЬ ИЗ РегистрНакопления.РасчетыСПокупателями КАК РасчетыСПокупателями ГДЕ РасчетыСПокупателями.Регистратор <> РасчетыСПокупателями.Документ И РасчетыСПокупателями.ТипРасчетов = ЗНАЧЕНИЕ(Перечисление.ТипыРасчетов.Долг) И РасчетыСПокупателями.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Расход) И ТИПЗНАЧЕНИЯ(РасчетыСПокупателями.Регистратор) = ТИП(Документ.ЗаказПокупателя) И РасчетыСПокупателями.Активность ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 5, РасчетыСПокупателями.Период, РасчетыСПокупателями.Регистратор, РасчетыСПокупателями.НомерСтроки, ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход), РасчетыСПокупателями.СчетНаОплату.Договор, РасчетыСПокупателями.СчетНаОплату, РасчетыСПокупателями.СчетНаОплату.Организация, РасчетыСПокупателями.СчетНаОплату.Контрагент, ВЫБОР КОГДА РасчетыСПокупателями.СуммаАванса > 0 ТОГДА ЗНАЧЕНИЕ(Перечисление.ТипыРасчетов.Аванс) ИНАЧЕ ЗНАЧЕНИЕ(Перечисление.ТипыРасчетов.Долг) КОНЕЦ, РасчетыСПокупателями.Регистратор, РасчетыСПокупателями.СуммаАванса + РасчетыСПокупателями.СуммаОплаты, РасчетыСПокупателями.СуммаАванса + РасчетыСПокупателями.СуммаОплаты, РасчетыСПокупателями.СуммаАванса + РасчетыСПокупателями.СуммаОплаты, ЗНАЧЕНИЕ(Перечисление.СпособыЗачетаИРаспределенияПлатежей.Вручную), РасчетыСПокупателями.СуммаАванса + РасчетыСПокупателями.СуммаОплаты, НациональнаяВалюта.Значение, 0, РасчетыСПокупателями.СуммаНДС, РасчетыСПокупателями.СтавкаНДС, РасчетыСПокупателями.СуммаАванса > 0, 1, ЛОЖЬ, 1, НациональнаяВалюта.Значение, ИСТИНА ИЗ РегистрНакопления.ОплатаСчетовИЗаказов КАК РасчетыСПокупателями, Константа.НациональнаяВалюта КАК НациональнаяВалюта ГДЕ ТИПЗНАЧЕНИЯ(РасчетыСПокупателями.Регистратор) = ТИП(Документ.ЧекККМ) И РасчетыСПокупателями.Активность ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ 1 КАК НомерЗапроса, РасчетыСПокупателями.Регистратор КАК Регистратор, РасчетыСПокупателями.Документ КАК Документ, РасчетыСПокупателями.Контрагент КАК Контрагент, РасчетыСПокупателями.Контрагент.Ответственный КАК Ответственный, РасчетыСПокупателями.Сумма КАК СуммаОплаты, ЗапросПродажи.МАРЖА КАК МАРЖА, СУММА(ЗапросПродажи.СуммаДокумент) КАК СуммаДокумент, ВЫРАЗИТЬ(ЗапросПродажи.МАРЖА / 100 * РасчетыСПокупателями.Сумма КАК ЧИСЛО(10, 2)) КАК СуммаКЗачету ИЗ РегистрНакопления.РасчетыСПокупателями КАК РасчетыСПокупателями ПРАВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ПродажиОбороты.Документ КАК ДОКУМЕНТ, СУММА(ПродажиОбороты.СуммаОборот) КАК СуммаДокумент, ВЫРАЗИТЬ((СУММА(ПродажиОбороты.СуммаОборот) / 1.2 - СУММА(ЦеныНоменклатуры.Цена * ПродажиОбороты.КоличествоОборот)) / СУММА(ПродажиОбороты.СуммаОборот) * 100 КАК ЧИСЛО(10, 2)) КАК МАРЖА ИЗ РегистрНакопления.Продажи.Обороты({(&ПериодНеИспользовать)}, , Авто, ) КАК ПродажиОбороты ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ПродажиОбороты.Номенклатура КАК Номенклатура, ПродажиОбороты.Документ КАК Документ, МАКСИМУМ(ЦеныНоменклатуры.Период) КАК Период ИЗ РегистрНакопления.Продажи.Обороты({(&ПериодНеИспользовать)}, , Авто, ) КАК ПродажиОбороты ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры ПО (ЦеныНоменклатуры.Номенклатура = ПродажиОбороты.Номенклатура) И (ЦеныНоменклатуры.Период <= ПродажиОбороты.Документ.Дата) И (ЦеныНоменклатуры.ВидЦен.Код = "00-000002") ГДЕ ПродажиОбороты.Документ.Проведен = ИСТИНА СГРУППИРОВАТЬ ПО ПродажиОбороты.Номенклатура, ПродажиОбороты.Документ) КАК ЗАПРОС ПО (ЗАПРОС.Номенклатура = ПродажиОбороты.Номенклатура) И (ЗАПРОС.Документ = ПродажиОбороты.Документ) ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры ПО (ЦеныНоменклатуры.ВидЦен.Код = "00-000002") И (ЦеныНоменклатуры.Номенклатура = ПродажиОбороты.Номенклатура) И (ЦеныНоменклатуры.Период = ЗАПРОС.Период) ГДЕ ПродажиОбороты.Документ.Проведен = ИСТИНА И ПродажиОбороты.Регистратор ССЫЛКА Документ.РасходнаяНакладная СГРУППИРОВАТЬ ПО ПродажиОбороты.Документ) КАК ЗапросПродажи ПО (ЗапросПродажи.ДОКУМЕНТ = РасчетыСПокупателями.Документ) ГДЕ РасчетыСПокупателями.Активность И РасчетыСПокупателями.Период МЕЖДУ &НачалоПериода И &КонецПериода И (ТИПЗНАЧЕНИЯ(РасчетыСПокупателями.Регистратор) = ТИП(Документ.ПоступлениеНаСчет) ИЛИ ТИПЗНАЧЕНИЯ(РасчетыСПокупателями.Регистратор) = ТИП(Документ.Взаимозачет)) СГРУППИРОВАТЬ ПО РасчетыСПокупателями.Регистратор, РасчетыСПокупателями.Документ, РасчетыСПокупателями.Контрагент, РасчетыСПокупателями.Контрагент.Ответственный, РасчетыСПокупателями.Сумма, ЗапросПродажи.МАРЖА ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 2, ВременнаяТаблицаОбъединение.Регистратор, ВременнаяТаблицаОбъединение.Документ, ВременнаяТаблицаОбъединение.Контрагент, ВременнаяТаблицаОбъединение.Контрагент.Ответственный, ВременнаяТаблицаОбъединение.Сумма, ЗапросПродажи.МАРЖА, СУММА(ЗапросПродажи.СуммаДокумент), ВЫРАЗИТЬ(ЗапросПродажи.МАРЖА / 100 * ВременнаяТаблицаОбъединение.Сумма КАК ЧИСЛО(10, 2)) ИЗ ВременнаяТаблицаОбъединение КАК ВременнаяТаблицаОбъединение ПРАВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ПродажиОбороты.Документ КАК ДОКУМЕНТ, СУММА(ПродажиОбороты.СуммаОборот) КАК СуммаДокумент, ВЫРАЗИТЬ((СУММА(ПродажиОбороты.СуммаОборот) / 1.2 - СУММА(ЦеныНоменклатуры.Цена * ПродажиОбороты.КоличествоОборот)) / СУММА(ПродажиОбороты.СуммаОборот) * 100 КАК ЧИСЛО(10, 2)) КАК МАРЖА ИЗ РегистрНакопления.Продажи.Обороты({(&ПериодНеИспользовать)}, , Авто, ) КАК ПродажиОбороты ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ПродажиОбороты.Номенклатура КАК Номенклатура, ПродажиОбороты.Документ КАК Документ, МАКСИМУМ(ЦеныНоменклатуры.Период) КАК Период ИЗ РегистрНакопления.Продажи.Обороты({(&ПериодНеИспользовать)}, , Авто, ) КАК ПродажиОбороты ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры ПО (ЦеныНоменклатуры.Номенклатура = ПродажиОбороты.Номенклатура) И (ЦеныНоменклатуры.Период <= ПродажиОбороты.Документ.Дата) И (ЦеныНоменклатуры.ВидЦен.Код = "00-000002") ГДЕ ПродажиОбороты.Документ.Проведен = ИСТИНА СГРУППИРОВАТЬ ПО ПродажиОбороты.Номенклатура, ПродажиОбороты.Документ) КАК ЗАПРОС ПО (ЗАПРОС.Номенклатура = ПродажиОбороты.Номенклатура) И (ЗАПРОС.Документ = ПродажиОбороты.Документ) ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры ПО (ЦеныНоменклатуры.ВидЦен.Код = "00-000002") И (ЦеныНоменклатуры.Номенклатура = ПродажиОбороты.Номенклатура) И (ЦеныНоменклатуры.Период = ЗАПРОС.Период) ГДЕ ПродажиОбороты.Документ.Проведен = ИСТИНА И ПродажиОбороты.Регистратор ССЫЛКА Документ.РасходнаяНакладная СГРУППИРОВАТЬ ПО ПродажиОбороты.Документ) КАК ЗапросПродажи ПО (ЗапросПродажи.ДОКУМЕНТ = ВременнаяТаблицаОбъединение.Документ) ГДЕ ВременнаяТаблицаОбъединение.Регистратор.Дата МЕЖДУ &НачалоПериода И &КонецПериода И ВременнаяТаблицаОбъединение.Документ <> ВременнаяТаблицаОбъединение.Регистратор СГРУППИРОВАТЬ ПО ВременнаяТаблицаОбъединение.Регистратор, ВременнаяТаблицаОбъединение.Документ, ВременнаяТаблицаОбъединение.Контрагент, ВременнаяТаблицаОбъединение.Контрагент.Ответственный, ВременнаяТаблицаОбъединение.Сумма, ЗапросПродажи.МАРЖА |
|||
4
Beeezy
15.11.22
✎
11:20
|
По параметрам: СтПериод (Стандартный период), НачалоПериода и КонецПериода (&СтПериод.ДатаНачала и &СтПериод.ДатаОкончания соответственно), ПериодНеИспользовать (тут понятно). Использование (Всегда на период, авто на Начало и конец). Остальное без галочек, только период включид в доступные поля
|
|||
5
vicof
15.11.22
✎
12:55
|
Нахрена тебе правое соединение?
|
|||
6
Beeezy
15.11.22
✎
14:25
|
(5) Пока это все равно запрос-набросок, меня больше интересуют нюансы СКД, почему есть разница в выборке одного и того же запроса в консоли и в СКД
|
|||
7
Kassern
15.11.22
✎
14:33
|
(0) Так вроде в консоли не отрабатывают конструкции типа {(&ПериодНеИспользовать)} , а в СКД - вполне.
|
|||
8
Beeezy
15.11.22
✎
14:51
|
(7) Это да, просто что может мешать запросу. Понятно то в консоли выполняется запрос без всяких условий. Вопрос в том, что такого делает СКД, что режет выборку, по какому условию или ограничению. Первым удивлением было, когда период влиял на регистр накопления с оборотами, хоть и явно в параметрах не был указан
|
|||
9
Kigo_Kigo
15.11.22
✎
15:30
|
Ну СКД по этому она СКД что она сама понимает как применять период из настроек
|
|||
10
Ryzeman
15.11.22
✎
15:35
|
НачалоПериода, КонецПериода и Период - это зарезервированные слова в СКД, ЕМНИП. Они будут применяться ко всем виртуальным таблицам, если не явно не указано что-либо другое.
|
|||
11
Kigo_Kigo
15.11.22
✎
15:38
|
то есть тебе для таблиц надо прописать &НачПериода и &КонПериода и прописать их в параметры СКД
|
|||
12
Ryzeman
15.11.22
✎
15:40
|
(11) Если ты хочешь использовать виртуальные таблицы не связанные с периодом, то либо используй другие слова для общего, либо да, пропиши им свои (если нужны какие-то другие)
|
|||
13
Ryzeman
15.11.22
✎
15:41
|
Там ещё задница была что если ты хоть один раз Период как параметр задашь, то уже избавиться от него не выйдет, он неудаляемым становится) Только новую схему делать)
|
|||
14
vicof
15.11.22
✎
16:06
|
Галочку автозаполнения уже предлагали убрать и расширение СКД для языка запросов выучить?
|
|||
15
Beeezy
15.11.22
✎
16:10
|
(13) тоже как только столкнулся понять не мог. Т.е. если я правильно понял, в виртуальной просто подкинуть свой левый период? К примеру дата между 01.01.1900 и 01.01.2500?
|
|||
16
Kassern
15.11.22
✎
16:11
|
(15) В параметрах виртуальной таблицы указать свои. А в настройках параметров СКД задать нужный период.
|
|||
17
Beeezy
15.11.22
✎
17:07
|
(10) Да, действительно косяк в родных параметрах. Сделал новые параметры под уникальными номерами - и все завелось. Всем спасибо)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |