Имя: Пароль:
1C
1С v8
как вывести остатки по всем дням?
,
0 tiretrak
 
05.02.14
15:02
нужно вывести производственный календарь . то есть по всем дням. а к ним прикрутить остатки на начало и конец дня.как лучше сделать?
1 Avganec
 
05.02.14
15:03
запрос, соединяешь календарь и ВТ РН остатки и обороты и все
2 tiretrak
 
05.02.14
15:10
уточню. вот такой вид должен получиться:
            товар1 товар2 товар3
01.01.2014   3       5     5
02.01.2014   3       3     3
03.01.2014   5       5     5
3 tiretrak
 
05.02.14
15:12
(2) то есть остатки без движений тоже должен показывать
4 Hmster
 
05.02.14
15:13
берешь и складываешь номенклатуру и календарь. потом цепляешь остатки и обороты.
Но может не взлететь.
5 tiretrak
 
05.02.14
15:16
(4) как сложить календарь и номенклатуру? там цеплять на за что
6 Kvestin
 
05.02.14
15:25
(2) Такого вида не получится. Т.е. вывести всю номенклатуру в столбцы нельзя (в запросе), но можно получить таблицу вида:
01.01.2014 Товар1 3
02.01.2014 Товар1 3
03.01.2014 Товар1 5
01.01.2014 Товар2 5
02.01.2014 Товар2 3
03.01.2014 Товар2 5
01.01.2014 Товар3 5
02.01.2014 Товар3 3
03.01.2014 Товар3 3
7 Kvestin
 
05.02.14
15:27
(5) Делаешь соединение все ко всем, т.е. без указания полей связи.
8 Hmster
 
05.02.14
15:31
(5) ВЫБРАТЬ календарь ПОЛНОЕ СОЕДИНЕНИЕ Номенклатура

как то так
9 tiretrak
 
05.02.14
15:45
(8)по каким полям соединять то?)
10 tiretrak
 
05.02.14
15:49
(6) а в скд такое можно получить?
11 Hmster
 
05.02.14
15:50
(9) ПО ИСТИНА
12 Hmster
 
05.02.14
15:51
мой случай если ты хочешь все, даже чего не было.
Иначе к календарю цепляй по ПериодМесяц ОстаткиИОбороты
13 Ярус
 
05.02.14
15:51
14 floody
 
05.02.14
16:04
ну "остатки на каждую дату в запросе" же

(13) +1
15 Kvestin
 
05.02.14
16:23
Хотел быстренько накидать запрос. Оказалось, что это не так и быстро.
Вот запрос для УТ 10.3 для вывода остатков на каждый день заданного периода по списку номенклатуры без учета склада.
Остаток выводится на конец дня.
Для варианта со складами предлагаю вам модернизировать запрос  самостоятельно.

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

ИНДЕКСИРОВАТЬ ПО
    ДатаКалендаря,
    Номенклатура
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ПартииТоваровНаСкладахОстатки.Номенклатура КАК Номенклатура,
    &Дата1 КАК Период,
    ПартииТоваровНаСкладахОстатки.КоличествоОстаток КАК Количество
ПОМЕСТИТЬ ОстаткиИДвижения
ИЗ
    РегистрНакопления.ПартииТоваровНаСкладах.Остатки(&Дата1, Номенклатура В (&СписокНоменклатуры)) КАК ПартииТоваровНаСкладахОстатки

ОБЪЕДИНИТЬ ВСЕ

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

ИНДЕКСИРОВАТЬ ПО
    Номенклатура,
    Период
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ДатаНоменклатура.ДатаКалендаря КАК ДатаКалендаря,
    ДатаНоменклатура.Номенклатура КАК Номенклатура,
    СУММА(ОстаткиИДвижения.Количество) КАК Количество
ПОМЕСТИТЬ ОстаткиПоДатамСвернуто
ИЗ
    ДатаНоменклатура КАК ДатаНоменклатура
        ЛЕВОЕ СОЕДИНЕНИЕ ОстаткиИДвижения КАК ОстаткиИДвижения
        ПО ДатаНоменклатура.Номенклатура = ОстаткиИДвижения.Номенклатура
            И ДатаНоменклатура.ДатаКалендаря >= ОстаткиИДвижения.Период

СГРУППИРОВАТЬ ПО
    ДатаНоменклатура.ДатаКалендаря,
    ДатаНоменклатура.Номенклатура

ИНДЕКСИРОВАТЬ ПО
    ДатаКалендаря,
    Номенклатура
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ОстаткиПоДатамСвернуто.ДатаКалендаря КАК ДатаКалендаря,
    ОстаткиПоДатамСвернуто.Номенклатура КАК Номенклатура,
    МАКСИМУМ(ОстаткиПоДатамСвернуто1.ДатаКалендаря) КАК ДатаПоследняяДо,
    ОстаткиПоДатамСвернуто.Количество
ПОМЕСТИТЬ СДатойПоследнегоДвижения
ИЗ
    ОстаткиПоДатамСвернуто КАК ОстаткиПоДатамСвернуто
        ЛЕВОЕ СОЕДИНЕНИЕ ОстаткиПоДатамСвернуто КАК ОстаткиПоДатамСвернуто1
        ПО ОстаткиПоДатамСвернуто.Номенклатура = ОстаткиПоДатамСвернуто1.Номенклатура
            И ОстаткиПоДатамСвернуто.ДатаКалендаря >= ОстаткиПоДатамСвернуто1.ДатаКалендаря
            И (НЕ ОстаткиПоДатамСвернуто1.Количество ЕСТЬ NULL )

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

ИНДЕКСИРОВАТЬ ПО
    ДатаКалендаря,
    Номенклатура,
    ДатаПоследняяДо
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    СДатойПоследнегоДвижения.ДатаКалендаря,
    СДатойПоследнегоДвижения.Номенклатура,
    ВЫБОР
        КОГДА НЕ СДатойПоследнегоДвижения.Количество ЕСТЬ NULL
            ТОГДА СДатойПоследнегоДвижения.Количество
        ИНАЧЕ СДатойПоследнегоДвижения1.Количество
    КОНЕЦ КАК Остаток
ИЗ
    СДатойПоследнегоДвижения КАК СДатойПоследнегоДвижения
        ЛЕВОЕ СОЕДИНЕНИЕ СДатойПоследнегоДвижения КАК СДатойПоследнегоДвижения1
        ПО СДатойПоследнегоДвижения.Номенклатура = СДатойПоследнегоДвижения1.Номенклатура
            И СДатойПоследнегоДвижения.ДатаПоследняяДо = СДатойПоследнегоДвижения1.ДатаКалендаря
16 Cerera
 
05.02.14
16:27
ВЫБРАТЬ
    РегламентированныйПроизводственныйКалендарь.ДатаКалендаря,
    РегламентированныйПроизводственныйКалендарь.ВидДня
ПОМЕСТИТЬ ДатыПроизвКалендаря
ИЗ
    РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь
ГДЕ
    РегламентированныйПроизводственныйКалендарь.ВидДня В(&ВидДня)
    И РегламентированныйПроизводственныйКалендарь.ДатаКалендаря МЕЖДУ &ВыбНачПериода И &ВыбКонПериода
;

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

ИНДЕКСИРОВАТЬ ПО
    Номенклатура,
    Период
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТОстатки.Номенклатура,
    ВТОстатки.Период КАК НачалоПериода,
    МИНИМУМ(ДОБАВИТЬКДАТЕ(ЕСТЬNULL(ВТОстаткиВперед.Период, &ВыбКонПериода), СЕКУНДА, -1)) КАК КонецПериода,
    ВТОстатки.Остаток,
    ВТОстатки.ХарактеристикаНоменклатуры,
    ВТОстатки.ГруппаДоступности,
    ВТОстатки.Склад
ПОМЕСТИТЬ ВТОстаткиПериодами
ИЗ
    ВТОстатки КАК ВТОстатки
        ЛЕВОЕ СОЕДИНЕНИЕ ВТОстатки КАК ВТОстаткиВперед
        ПО ВТОстатки.Номенклатура = ВТОстаткиВперед.Номенклатура
            И ВТОстатки.Период < ВТОстаткиВперед.Период
            И ВТОстатки.ХарактеристикаНоменклатуры = ВТОстаткиВперед.ХарактеристикаНоменклатуры
            И ВТОстатки.ГруппаДоступности = ВТОстаткиВперед.ГруппаДоступности
            И ВТОстатки.Склад = ВТОстаткиВперед.Склад

СГРУППИРОВАТЬ ПО
    ВТОстатки.Номенклатура,
    ВТОстатки.Период,
    ВТОстатки.Остаток,
    ВТОстатки.ХарактеристикаНоменклатуры,
    ВТОстатки.ГруппаДоступности,
    ВТОстатки.Склад
;

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

СГРУППИРОВАТЬ ПО
    ВТОстаткиПериодами.Номенклатура,
    ВТОстаткиПериодами.Остаток,
    ДатыПроизвКалендаря.ДатаКалендаря,
    ВТОстаткиПериодами.ХарактеристикаНоменклатуры,
    ВТОстаткиПериодами.ГруппаДоступности,
    ВТОстаткиПериодами.Склад
;
17 tiretrak
 
06.02.14
09:35
(15) это не полный текст запроса я так понял?
18 tiretrak
 
06.02.14
09:35
(16) а это откуда взято?
19 Kvestin
 
06.02.14
16:55
(17) Это полный текст для УТ 10.3 без учета склада.
20 acanta
 
06.02.14
16:57
()ммм.. а зачем вообще календарь нужен? у 8ки нет аналога Группировка День/Месяц все?
21 Kvestin
 
06.02.14
17:06
(20) Виртуальные таблицы не дают записей по дням без движений.
22 Cerera
 
10.02.14
13:46
(18)сам написал.
23 tiretrak
 
12.02.14
09:52
не взлетело.
ни два последних запроса ни примеры.
примеры показывают остатки но не верно почему то.
24 tiretrak
 
12.02.14
12:00
(11)
ВЫБРАТЬ календарь ПОЛНОЕ СОЕДИНЕНИЕ Номенклатура
ПО ИСТИНА

такое разве может работать?
25 tiretrak
 
12.02.14
13:03
(24) да.действительно такая связка работает)
26 tiretrak
 
12.02.14
14:03
(25) только задачу это не решает. получается список всех дней со списком номенклатуры . при присоединении остатков через левое соединение,показывает остатки только в те дни когда движения не было. а нужно остатки по всем дням.даже если движений не было...
27 Avganec
 
12.02.14
14:09
(26) на вскидку только обработка результата, в цикле, но не в запросе...
28 catena
 
12.02.14
14:46
(26)а ты соединяй не по равенству дат, а по меньше-равно дате с максимальным периодом.
29 catena
 
12.02.14
15:00
ВЫБРАТЬ
    ТоварыНаСкладахОстаткиИОбороты.Номенклатура КАК Номенклатура,
    ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток КАК Остаток,
    ТоварыНаСкладахОстаткиИОбороты.Период КАК Период,
    ТоварыНаСкладахОстаткиИОбороты.ХарактеристикаНоменклатуры
ПОМЕСТИТЬ ВТОстатки
ИЗ
    РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&ВыбНачПериода, &ВыбКонПериода, День, ДвиженияИГраницыПериода, Номенклатура = &Номенклатура) КАК ТоварыНаСкладахОстаткиИОбороты
ГДЕ
    ТоварыНаСкладахОстаткиИОбороты.Номенклатура.ВидНоменклатуры = &ВидНоменклатуры

ИНДЕКСИРОВАТЬ ПО
    Номенклатура,
    Период
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    РегламентированныйПроизводственныйКалендарь.ДатаКалендаря
ПОМЕСТИТЬ втДаты
ИЗ
    РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь
ГДЕ
    РегламентированныйПроизводственныйКалендарь.ДатаКалендаря МЕЖДУ &ВыбНачПериода И &ВыбКонПериода
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    РазмазанныйПериод.ДатаКалендаря КАК ДатаКалендаря,
    РазмазанныйПериод.Период,
    РазмазанныйПериод.Номенклатура КАК Номенклатура,
    ВТОстатки.Остаток,
    ВТОстатки.ХарактеристикаНоменклатуры
ИЗ
    (ВЫБРАТЬ
        втДаты.ДатаКалендаря КАК ДатаКалендаря,
        МАКСИМУМ(ВТОстатки.Период) КАК Период,
        ВТОстатки.Номенклатура КАК Номенклатура
    ИЗ
        втДаты КАК втДаты
            ЛЕВОЕ СОЕДИНЕНИЕ ВТОстатки КАК ВТОстатки
            ПО (ВТОстатки.Период <= втДаты.ДатаКалендаря)
    
    СГРУППИРОВАТЬ ПО
        втДаты.ДатаКалендаря,
        ВТОстатки.Номенклатура) КАК РазмазанныйПериод
        ЛЕВОЕ СОЕДИНЕНИЕ ВТОстатки КАК ВТОстатки
        ПО (ВТОстатки.Период = РазмазанныйПериод.Период)
            И (ВТОстатки.Номенклатура = РазмазанныйПериод.Номенклатура)

УПОРЯДОЧИТЬ ПО
    Номенклатура,
    ДатаКалендаря
30 ИС-2
 
naïve
12.02.14
15:03
странно, что еще не предложили СКД
31 WildSery
 
12.02.14
15:57
(24) Забудь ты о ПОЛНОМ СОЕДИНЕНИИ, (8) фигню написал.
В календаре пропусков нет, нужно только ЛЕВОЕ СОЕДИНЕНИЕ.

Вообще очень-очень мало случаев когда нужно именно полное.
Я вот ни разу не воспользовался.
32 tiretrak
 
12.02.14
16:51
(30) до СКД еще дойдет черёд.
там потом к этим остаткам по дням нада будет прикрутить количество из заказов и количество запланированного
33 tiretrak
 
12.02.14
17:11
(29)  а зачем в результирующих полях и период и дата календаря?
34 catena
 
13.02.14
05:56
(33)Мой запрос, какие хочу поля, такие и вывожу :P
35 Witean
 
13.02.14
08:09
(32) Делаешь простой запрос на СКД с дополнением периода, вытаскиваешь программно из него ТаблицуЗначений, типа как тут http://help1c.com/faq/view/738.html. Получаешь таблицу с остатками товара на каждый день периода. Дальше вертишь этой таблицей как хочешь.
36 tiretrak
 
13.02.14
09:47
(35) непонятно(с)
37 tiretrak
 
13.02.14
11:01
(35) "запрос на СКД с дополнением периода" делал.брал пример из ссылок в самом начале. данные не верные и дата плюс день идет от реальных остатков. то есть смещение
38 Nenaviwu1c20
 
13.02.14
11:04
Два набора скд тебе в помощь!!!
39 tiretrak
 
13.02.14
11:12
(38) а поподробнее?
40 tiretrak
 
13.02.14
11:37
нашел в уорках Гелева по СКД. в 54м уроке как раз про отчет остатки по дням
41 tiretrak
 
13.02.14
14:08
(40) пи№№№ец . как жеж терь к этому прикрутить регистр план производства по тем же дням....
42 tiretrak
 
18.02.14
12:28
(35) метод не пашет.
{Форма.ФормаОтчета.Форма(283)}: Ошибка при вызове метода контекста (Выполнить)
    МакетКомпоновкиДанных = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,
по причине:
Ошибка компоновки макета
по причине:
Ошибка генерации макета
по причине:
Не поддерживается вывод таблиц, диаграмм и вложенных отчетов в универсальную коллекцию значений
43 tiretrak
 
18.02.14
13:47
(35) "Получаешь таблицу с остатками товара на каждый день периода"
товарищ ,вы ввели меня в заблуждение)).- "Не поддерживается вывод таблиц, диаграмм и вложенных отчетов в универсальную коллекцию значений!!!"

зачем советовать если не уверен на 100% ?
44 Enders
 
18.02.14
14:14
Вот пример :) Дни можно связать со справочником номенкларута по Истина и тогда соединять с РН не только по периоду, а и по номенклатуре.

ВЫБРАТЬ РАЗЛИЧНЫЕ
   КурсыВалют.Период
ПОМЕСТИТЬ Дни
ИЗ
   РегистрСведений.КурсыВалют КАК КурсыВалют
ГДЕ
   КурсыВалют.Период МЕЖДУ &НачалоПериода И &КонецПериода
;

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

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