СКД передача данных из одного набора в качестве параметра для другого набора. #748353


#0 by Vladislava-smile
1-ый набор: ВЫБРАТЬ     ПродажиОбороты.Период КАК ПериодПродажи     &КонецПериодаПродажиСумма Связи: Параметры: Ошибка: {Форма.ФормаОтчета.Форма}: Ошибка при вызове метода контекста (Вывести)     ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);     по причине: Ошибка вывода результата по причине: Ошибка при выводе результата по причине: Ошибка получения данных по причине: Ошибка создания набора данных "НаборДанных3" по причине: Ошибка при исполнении запроса набора данных по причине: {(8, 2)}: Ошибка обработки представления "РегистрНакопления.Продажи.Обороты:Несоответствие типов (Параметр номер ""1"")" Что не так?
#1 by eklmn
зачем еще ветку завела?
#2 by Vladislava-smile
- ну тут проблема другая нарисовалась, не стоило, да? Буду иметь в виду
#3 by eklmn
да вроде все таже проблема, отчет то один ))
#4 by Vladislava-smile
ну тоже прав, просто у меня уже крыша едет, хоть убей не могу понять как эта дрянь работает, везде дата стоит, почему тип несоответствует??? Почитала про эту ошибку - название параметров отличается от стандартных, период сделан ограниченным.
#5 by Vladislava-smile
Не ругается, но процесс заполнения отчета не идет ((( Висьнет.
#6 by eklmn
потому что нельзя в скд баловаться датами
#7 by Vladislava-smile
точно, просто я уже методом тыка делаю. ну не знаю я как сделать чтобы по дате на конец месяца в наборе 2 выполнялся набор 3 по параметрам начало - период, конец - период + 3 месяца. И примеров подобных нигде не могу найти по связям в СКД.
#8 by DCKiller
М-да...
#9 by Vladislava-smile
ну что М-да... ? ))) Ну не делала ничего раньше подобного ((
#10 by MiniMuk
А может тебе просто задать свои параметры дата начала дата конца и от них задать параметры наборов данных?
#11 by DCKiller
Я, если честно, вообще не понимаю, зачем там 2 набора данных? Если все в одном запросе прекрасно уместить можно.
#12 by Vladislava-smile
- так они программно должны меняться. Так как они не статичны.
#13 by MiniMuk
#14 by Vladislava-smile
можно, но там я застряла на запросе. Так как Оборотов не было на некоторые периоды, то суммирование не идет по некоторым колонкам
#15 by MiniMuk
задаю параметр период через свой параметр дата конца, ну заодно там его немного шаманю
#16 by Vladislava-smile
Это что? Файл удален
#17 by DCKiller
Какое суммирование? По каким колонкам?
#18 by Vladislava-smile
ну вот был запрос ВЫБРАТЬ     ПродажиОбороты.Номенклатура КАК Номенклатура, Только так придумала, но некорректно работает.
#19 by MiniMuk
#20 by DCKiller
А почему соединение именно внутреннее?
#21 by Vladislava-smile
файл вижу, но не подойдет так как повторюсь, эти параметры не статичны.
#22 by MiniMuk
ну так конечный параметр "дата конца" задает пользователь". а параметр период исходя из этого параметра высчитывается
#23 by MiniMuk
а что там с параметрами которые должны программно менятся?
#24 by Vladislava-smile
Короче смотри У нас есть Продажи за период &НачалоПериодаПродажи и &КонецПериодаПродажи. Также указывается количество месяцев пользователем для расчета суммы продаж. Надо получить пример: Продажи на конец апреля, мая, июня, июля, где на апрель  - сумма продаж за янв, фев, март, апр, на май - сумма продаж за фев, март, апр, май, на июнь - март, апр, май, июнь, на июль - апр, май, июнь, июль
#25 by Vladislava-smile
а какое ставить?
#26 by Vladislava-smile
Левое?
#27 by Vladislava-smile
Все равно не верно (
#28 by DCKiller
"Продажи на конец" - что под этим подразумевается? Конечный остаток или оборот?
#29 by Vladislava-smile
Оборот
#30 by Vladislava-smile
У нас уже 9, выгоняют с работы ((. Но народ, тема не закрыта ни фига, послезавтра сдача, если не сделаю - каюк ...
#31 by eklmn
Зимакова, выложи уже отчет куда-нибудь "пощупать", а то как то непонятно всё
#32 by DCKiller
Слава б-гу :) В-общем, смотри как сделай: ВЫБРАТЬ     ПродажиОбороты.КоличествоОборот, ВЫБРАТЬ ВТ_ПродажиОбороты.*, ВТ_ПродажиОбороты2.СуммаПродаж ИЗ ВТ_ПродажиОбороты КАК ВТ_ПродажиОбороты
#33 by Vladislava-smile
слава богу, слава богу ... ))) ну если проблема у меня ))). Спасибо, завтра попробую и отпишуусь )
#34 by Vladislava-smile
о-па ))) а откуда фамилию знаешь?)) Не кж то учились вместе?) Колись, ты кто?))
#35 by eklmn
в скрине засветилась ))
#36 by Vladislava-smile
Ааа, эх, а я то думала знакомые люди тут торчат ))). Завтра обязательно сктну сам отчет.
#37 by Vladislava-smile
- не верно считает (, И я не много не поняла параметр &НачалоПериодаПродажиСумма - он же должен меняться ... А не задаваться перед выполнением СКД
#38 by Vladislava-smile
Отчет -
#39 by DCKiller
Ничего там не должно меняться. Последний запрос вот так переделай ВЫБРАТЬ ВТ_ПродажиОбороты.*, ВТ_ПродажиОбороты2.СуммаПродаж ИЗ ВТ_ПродажиОбороты КАК ВТ_ПродажиОбороты ПО ВТ_ПродажиОбороты.Номенклатура = ВТ_ПродажиОбороты2.Номенклатура И ВТ_ПродажиОбороты.ПериодПродажи МЕЖДУ ДОБАВИТЬКДАТЕ(ВТ_ПродажиОбороты2.ПериодСуммаПродаж, МЕСЯЦ, &КолМесяцев) И ВТ_ПродажиОбороты2.ПериодСуммаПродаж
#40 by DCKiller
+ т.е. -&КолМесяцев
#41 by Vladislava-smile
и - вопрос - &НачалоПериодаПродажиСумма мы откуда берем? Ведь она должна меняться, то есть если нам нужна сумма на конец мая за 3 месяца до, то &НачалоПериодаПродажиСумма должна быть 01.03.2015, сумма на конец июня за 3 месяца до, то &НачалоПериодаПродажиСумма должна быть 01.04.2015. И у тебя указана периодичность в конечном запросе - все поля участвующие в продаже, а надо только те, для которых идет расчет "на конец"
#42 by Vladislava-smile
Мне нужно делать вроде подзапроса в запросе - как народ говорил на других форумах типа коррелирующих. Но Запросы так не умеют в 1с. Такая возможность есть в СКД при разных наборах данных. Вот так : Ошибка: {Форма.ФормаОтчета.Форма}: Ошибка при вызове метода контекста (Вывести)     ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);     по причине: Ошибка вывода результата по причине: Ошибка при выводе результата по причине: Ошибка получения данных по причине: Ошибка создания набора данных "НаборДанных3" по причине: Ошибка при исполнении запроса набора данных по причине: {(7, 2)}: Ошибка обработки представления "РегистрНакопления.Продажи.Обороты:Несоответствие типов (Параметр номер ""1"")"
#43 by DCKiller
Да блин.... У тебя период, за который нужно извлечь данные для второго случая уже известен - перечитай свой же пост , только вдумчивей. Если у тебя на конец апреля должна быть сумма продаж за период с января по апрель, то &НачалоПериодаПродажиСумма у тебя будет равно январю. Поняла? А дальше запрос с разбивкой по периодам (месяц), и делаешь как в - >> все поля участвующие в продаже, а надо только те, для которых идет расчет "на конец" Какие поля тебе надо извлечь из запроса, это ты уже сама решай. Я тебе просто привел пример.
#44 by sapphire
тупейшая задача
#45 by Vladislava-smile
Блин, да не пашет она ВЫБРАТЬ     ПродажиОбороты.КоличествоОборот,             И (ВТ_ПродажиОбороты.ПериодПродажи МЕЖДУ ДОБАВИТЬКДАТЕ(ВТ_ПродажиОбороты2.ПериодСуммаПродаж, МЕСЯЦ, -&Разность + 1) И КОНЕЦПЕРИОДА(ВТ_ПродажиОбороты2.ПериодСуммаПродаж, МЕСЯЦ)) СГРУППИРОВАТЬ ПО рез -
#46 by Vladislava-smile
- Тупейшая ... я точно также могу сказать, а пользователю НАДО (. Лучше бы посоветовал что-нибудь.
#47 by sapphire
тупит и нервничать не надо. Не используйте таблицы оборотов. Используйте физическую таблицу рн продажи
#48 by sapphire
напиши одним запросом, без виртуальных таблиц, там всё просто
#49 by Vladislava-smile
Но как там крутиться с периодами? Через выбор когда ... и по условиям? Так что ли?
#50 by sapphire
нет, как раз начните с периодов. Вам нужно получить N дат, которые обозначают периоды в отчете. Даже если в эти периоды не было оборотов. Как получить периоды ищете в кз на этом форуме. Далее, получите таблицу вида период минус н месяцев,период Получите обороты номенклатуры по месяцам за период минус 2н месяцев по период. Соедините периоды с уникальными номенклатурами. К результату объединения левым соединением рассчитанные ранее обороты с условием по номенклатуре и период продаж между период объединения минус Нмесяцев и период объединения, итоги сумма количество сумма сумм по период объединения, номенклатура. Вернее группировка и агрегирующие функции. Всё
#51 by Vladislava-smile
Нашла пример - подогнала под себя. Обороты даже если не было движения ГДЕ     РегламентированныйПроизводственныйКалендарь.ДатаКалендаря МЕЖДУ &НачалоПериодаОстаток И &КонецПериодаОстаток
#52 by Vladislava-smile
ПродажиОбороты.Период, АВТОУПОРЯДОЧИВАНИЕ
#53 by sapphire
А если календарь не заполнен?
#54 by sapphire
Правильно ли я понимаю, что есть 2 параметра дата последнего периода & количество месяцев суммирования продаж N
#55 by Peltzer
Давно бы уже нарисовала, скормив в скд свою самописную таблицу.
#56 by Vladislava-smile
- заполнен
#57 by Vladislava-smile
Это первый такой заморочный отчет в СКД и времени нету (
#58 by Vladislava-smile
- Параметры: НачалоПериодаОстаток КонецПериодаОстаток В них Определяется на конец каких месяцев должна считаться сумма оборотов из предыдущих НачалоПериодаПродажи КонецПериодаПродажи В них весь период для расчета суммирования оборотов то есть НачалоПериодаОстаток - &кол-во месяцев по  КонецПериодаОстаток И Разность - кол-во месяцев для сдвига
#59 by sapphire
Отчет проще некуда
#60 by sapphire
SELECT     Единицы LEFT JOIN Единицы Десятки     ON 10<=&N LEFT JOIN Единицы Сотни     ON 100<=&N LEFT JOIN Единицы Тысячи     ON 1000<=&N SELECT WHERE     РН.Период BETWEEN DATEADD(BeginOfPeriod(&Дата,Month),Month,0-2*(&N-1))    AND EndOfPeriod(&Дата,Month) ; SELECT      Периоды.Период     ,НоменклатураПродаж.Номенклатура INTO     НоменклатураПродажПериоды     FROM SELECT     НоменклатураПродажПериоды LEFT JOIN РегистрНакопления.Продажи РН ON         РН.Период BETWEEN НоменклатураПродажПериоды.ДатаНачалаИнтервалаПродаж AND НоменклатураПродажПериоды.ДатаОкончанияИнтервалаПродаж    ,НоменклатураПродажПериоды.Номенклатура
#61 by sapphire
Если чо, стучи в скайп
#62 by Vladislava-smile
- Блин, фантастика какая-то ... &Дата как я поняла - это &НачалоПериодаОстаток в моем случае, а как к этому параметру прибавлять месяц, пока не дойдем до Концапериодаостаток?
#63 by Vladislava-smile
Ааа, сейчас вроде все понятно стало... Афигеть ...
#64 by sapphire
Наоборот, это любая дата из последнего месяца, например, для любое число июля. Ну посмотри же в табличке Периоды Там же просто все :(
#65 by sapphire
для N=4 и дата - любая дата июля
#66 by sapphire
Всё что до выборки номенклатуры работает в любой конфигурации платформы 8.1 и выше.
#67 by Vladislava-smile
Блин, спасибо огромное, мне еще расти и расти до этого понимания ... Хотя сейчас поковырялась - немного понятнее стала что ты делаешь
#68 by sapphire
:)
#69 by sapphire
Там все очень просто. Таблица "Единицы" нужна для того, что бы получить нужное количество записей, в данном случае, месяцев. Таблица Итератор выводит числа от 0 до N-1. Таблица Периоды выводит Период и диапазон для расчета продаж Таблица НоменклатурыПродаж нужна только в том случае, если для каждого периода набор номенклатур должен быть одинаков. Далее умножаем Номенклатуры на Периоды, получаем кучу записей номенклатуры с периодами, индексируем, хотя это и не обязательно, скорее даже в данном конкретном случае вредно. Ну и вычисляем продажи номенклатуры.
#70 by Vladislava-smile
-  а тут проблемка небольшая нарисовалась ... пример по результату приведу:
#71 by sapphire
Что это, Бэримор? (с) Вы и правда думаете, что по снимку экрана я считаю всю логику Вашего отчета и данные? :)
#72 by sapphire
Хотя я предполагаю, что что-то не так соединено
#73 by Vladislava-smile
Ммм, ок, перепроверю соединения ), Бэримор??? )))
#74 by Vladislava-smile
Что интересно если берем вот такие данные - то все идеально ...(((
#75 by sapphire
Издеваешься?:)
#76 by sapphire
Понятно, ты N берешь из последней оборачиваемости, коя потом будет красится красненьким. Для твоих настроек из N=4, а не 3, как на форме. Собственно, тогда вполне понятно откуда такой результат. Для N=3 по маю посчитает май, апрель, март (3 месяца), и продажа февраля не попадает. Зато мило светится в продаже апреля, как и должно быть в твоем случае при N=3.
#77 by Vladislava-smile
Вот так идеально считает при любых случаях:     ПродажиОбороты.Период, ИЗ Спасибо всем за ответы )
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С