Имя: Пароль:
1C
1С v8
СКД остатки за каждый период разделить на сумму продаж указанного периода ДО
, ,
0 Vladislava-smile
 
17.07.15
02:06
Я создала 2 набора данных в СКД. Один - остатки, второй - продажи. В параметрах указаны разные периоды. В первом наборе допустим остаток на 30 апреля и 31 мая, а во втором наборе пользователь указывает 3 месяца тем самым указывая период продаж с 1 февраля по 30 апреля. Подскажите как реализовать механизм - нужно делить остаток на апрель на сумму продаж (фев+март+апрель), остаток на май делить (март+апр+май). Есть ли такая возможность в СКД? или это только запросами можно сделать, но картинка в голове не складывается. (
1 Vladislava-smile
 
17.07.15
03:26
Ну кто-нибудь ... (
2 Peltzer
 
17.07.15
05:45
Вроде бы, нужно курить параметры связи данных
3 Cube
 
17.07.15
06:29
(0) "нужно делить остаток на апрель на сумму продаж (фев+март+апрель)"
Это как?
4 echo77
 
17.07.15
06:44
В СКД завести вычисляемое поле: "ТвоеПоле"
на вкладке ресурсы прописать выражение для ТвоеПоле: Остаток / Сумма(СуммаПродаж)
5 timmy
 
17.07.15
06:54
6 timmy
 
17.07.15
07:02
из источника в приемник передаете параметр даты, а в самом приемнике запрос Дата - 3 мес до Дата
7 Vladislava-smile
 
17.07.15
08:51
Уже вроде сообразила, тут другая проблема нарисовалась - у меня есть еще выбор отображения по периодам - по дням или по месяцам, и период для вычисления суммы продаж тоже может указываться в месяцах или днях, чтобы не было неразберихи в днях решила сделать 2 схемы СКД и вызывать по условию, но эта гадость не работает (((

Если ЭлементыФормы.ПолеВвода22.Значение="Месяц" тогда
    СхемаКомпоновкиДанных = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанныхМесяц");
    Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;
    
    
    //Помещаем в переменную данные о расшифровке данных
    ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;

    //Формируем макет, с помощью компоновщика макета
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;

    //Передаем в макет компоновки схему, настройки и данные расшифровки
    МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,
    Настройки, ДанныеРасшифровки);

    //Выполним компоновку с помощью процессора компоновки
    ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки,,
    ДанныеРасшифровки);

    //Очищаем поле табличного документа
    Результат = ЭлементыФормы.Результат;
    Результат.Очистить();

    //Выводим результат в табличный документ
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(Результат);

    ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);  
  
КонецЕсли;

А он грузит ОсновнаяСхемаКомпоновкиДанныхДень
8 zippygrill
 
17.07.15
09:15
в подзапросе выбираешь только сумма остатка и сумма продаж за указанный период и дели.
9 Vladislava-smile
 
19.07.15
08:52
(6) А не подскажите подробнее немного - это надо делать новый набор данных и там делать связь? И примерчик если есть под боком? ) Отдаленно пока представляю как реализуется данный метод.
10 Vladislava-smile
 
20.07.15
04:59
Создала еще один набор данных и написала запрос

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

СГРУППИРОВАТЬ ПО
    ПродажиОбороты.Номенклатура,
    ПродажиОбороты.Период,
    ПродажиСумма.Период

Не корректно днные выводит ... (
11 Vladislava-smile
 
20.07.15
05:02
12 Cube
 
20.07.15
05:05
(10) Если тебе нужны группировки по разным периодам, то в запросе периодичность виртуальной таблицы нужно ставить не "Месяц", а "Авто". А потом уже, в группировку строк пихать или поле "Период, месяц" или поле "Период, день"...
13 Cube
 
20.07.15
05:06
(12) И не забудь в запросе поля периодов добавить.
14 Vladislava-smile
 
20.07.15
06:22
Сделала, не помогло. Он не выводит значения в колонках, когда не было движений, может условие какое-то прописать на незаполненную дату?
15 DCKiller
 
20.07.15
06:26
(14) Кури здесь, как выводить остатки за периоды, по которым не было движений
http://1c-wiki.ru/wiki/Ежедневные_остатки
16 Vladislava-smile
 
20.07.15
06:42
А можно это как то сделать через вычисляемые поля?
17 Vladislava-smile
 
20.07.15
07:20
Блин, не получается.
18 Vladislava-smile
 
20.07.15
07:24
вот так прописываю в выч поле
19 Vladislava-smile
 
20.07.15
07:24
выбор когда ПериодПродажи >=ДОБАВИТЬКДАТЕ(Период, "МЕСЯЦ", -&Разница + 1) и ПериодПродажи <=Период тогда количествоОборот конец
20 Vladislava-smile
 
20.07.15
07:24
не хочет
21 DCKiller
 
20.07.15
07:35
1. Получи остатки за оба периода двумя разными запросами, как в (15)
2. Получи обороты по продажам за те же периоды.
3. Соедини обе таблицы в запросе и там все подели.
4. PROFIT

И не надо тут никаких вычисляемых полей и нескольких наборов данных. Усложняешь себе жизнь, ИМХО.
22 Vladislava-smile
 
20.07.15
07:57
(21) - Не могу понять как "Получи обороты по продажам за те же периоды. ". У нас может быть абсолютно разные периоды и на разное количество месяцев сдвигать тоже можно. В запросе как указывать период, там только стандартные - месяц, год день и т. д.
23 DCKiller
 
20.07.15
08:01
(22) Ну и получай обороты по продажам за те периоды, которые тебе нужны, в чем проблема-то? Периодичность для этого совершенно не нужна.
24 Vladislava-smile
 
20.07.15
08:04
Пример: Продажи на конец апреля, мая, июня, июля, где
на апрель  - сумма продаж за янв, фев, март, апр,
на май - сумма продаж за фев, март, апр, май,
на июнь - март, апр, май, июнь,
на июль - апр, май, июнь, июль
25 lopus
 
20.07.15
08:24
ВЫБРАТЬ
    ПродажиОбороты.Номенклатура КАК Номенклатура,
    ПродажиОбороты.Период КАК ПериодПродажиСумма,
    ВЫБОР
        КОГДА ПродажиСумма.Период >= ДОБАВИТЬКДАТЕ(ПродажиОбороты.Период, МЕСЯЦ, -&Разница + 1)
                И ПродажиСумма.Период <= ПродажиОбороты.Период
            ТОГДА СУММА(ПродажиСумма.КоличествоОборот)
    КОНЕЦ КАК СуммаПродажи,
    ДОБАВИТЬКДАТЕ(ПродажиОбороты.Период, МЕСЯЦ, -&Разница + 1) КАК ДатаНачалаПродСРазницей,
    ПродажиСумма.Период КАК ПериодВложЗапрос
ИЗ
    РегистрНакопления.Продажи.Обороты(&НачалоПериодаОстаток, &КонецПериодаОстаток, Месяц, ) КАК ПродажиОбороты
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            ПродажиОбороты.КоличествоОборот КАК КоличествоОборот,
            ПродажиОбороты.Номенклатура КАК Номенклатура,
            ПродажиОбороты.Период КАК Период
        ИЗ
            РегистрНакопления.Продажи.Обороты( ДОБАВИТЬКДАТЕ(&НачалоПериодаПродажи, МЕСЯЦ, -&Разница + 1), &КонецПериодаПродажи, Месяц, ) КАК ПродажиОбороты) КАК ПродажиСумма
        ПО ПродажиОбороты.Номенклатура = ПродажиСумма.Номенклатура

СГРУППИРОВАТЬ ПО
    ПродажиОбороты.Номенклатура,
    ПродажиОбороты.Период,
    ПродажиСумма.Период
А так попробовать
26 Vladislava-smile
 
20.07.15
08:40
(25) нифига
Рез - https://dropmefiles.com/aMjos

Жаль, что параметры нельзя указывать в запросе для вложенного.

Как я понимаю - во вложенном запросе надо ставить период и начП - ПродажиОбороты.Период - 3 мес, КонП - КонецПериода(ПродажиОбороты.Период, месяц), а как прописать не знаю
27 Vladislava-smile
 
20.07.15
09:17
Вот блин, есть еще варианты у кого-нибудь? Может как то через связи наборов СКД в приемник передавать начало и конец периода для суммирования? Но будет ли он так  работать ...