Имя: Пароль:
1C
1С v8
Сделайте за меня отчет на СКД
0 D_Pavel
 
22.03.12
06:40
Запарился с отчетом. Нужно остатки по товарам на начало и конец периода из регистра, а так же приход и расход товаров из документов.
Сделал запрос по регистру остатков с полным объединением движений товаров из документов, с группировкой по товаром.
В результате остатки считаются не правильно, в большую сторону.
Тот же запрос в консоли отчетов дает другой результат.
Что за фигня?

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

СГРУППИРОВАТЬ ПО
   ЗаказТЧасть.Товар
1 Amra
 
22.03.12
06:42
Смени пол, смени внешность, покажи сиськи))))
2 Kassius
 
22.03.12
06:42
Казалось бы, причем тут весна?
3 Wobland
 
22.03.12
06:43
>Тот же запрос в консоли отчетов дает другой результат.
часто иногда из-за параметров
4 Amra
 
22.03.12
06:52
(2) Весна непричем, традиция Мисты всего лишь)
5 D_Pavel
 
22.03.12
06:54
(3) уже проверял, параметры одинаковые. Сумма группировки не правильно считается.
6 D_Pavel
 
22.03.12
06:56
(1) Если я сестру уговорю показать сиськи, этого хватит?
7 golden-pack
 
22.03.12
06:58
(6) сколько ей лет ?
8 D_Pavel
 
22.03.12
07:15
20
9 Balabass
 
22.03.12
07:18
(8) Давай!
10 Никола_
Питерский
 
22.03.12
07:20
(6) Уаха-ха-ха ! Зачет.
11 Никола_
Питерский
 
22.03.12
07:21
вместо периода, поставь Авто и скажи че будет ?
12 MKMK
 
22.03.12
07:24
(6)она заказчик отчета?
13 D_Pavel
 
22.03.12
07:31
(11) Никакой разницы. Остаток конечный так же 2 там где должен быть 1.
14 Voronve
 
22.03.12
07:31
(6) Отжег )
15 badboychik
 
22.03.12
07:40
Надо ПериодСекунда включать в вывод
16 ЭсОдин
 
22.03.12
07:42
ЗаказТЧасть.Товар  и по непроведённым тоже считаем? Так оно надо?
17 badboychik
 
22.03.12
07:42
если надо только остатки, зачем таблицу ОстаткиИОбороты берешь?
Зачем полное соединение?
18 D_Pavel
 
22.03.12
07:42
(15) Поставил период секунда в запросе, стало еще больше остатков
19 D_Pavel
 
22.03.12
07:43
(17) Мне надо остатки на начало и на конец. Если брать только таблицу остатков, то придется брать их две.
20 D_Pavel
 
22.03.12
07:44
(16) Это пока не важно, потом поставлю условие по проведенным. Проблема в другом.
21 Kassius
 
22.03.12
07:46
(6) так что там с сестрой? =)
22 D_Pavel
 
22.03.12
07:46
Сделал в группировке по товарам не сумму, а максимум, стало выводить правильные остатки по каждому товару, но нужно чтобы по иерархии и общие остатки тоже посчитались
23 ЭсОдин
 
22.03.12
07:46
Убирай ПОЛНОЕ, правильно (17) говорит.
24 D_Pavel
 
22.03.12
07:47
(21) Сначала надо отчет сделать, с сестрой договорюсь. А то сразу сиськи посмотрите и ищи вас потом...
25 badboychik
 
22.03.12
07:48
Надо выбрать только по товарам из заказов? Почему просто из регистра оборотов не берешь все товары?
26 D_Pavel
 
22.03.12
07:48
(23) тогда не будет хватать строк по движениям или по остаткам. Я уже пробовал
27 D_Pavel
 
22.03.12
07:49
(25) В движениях документов не все движения товаров отображаются, а только движения изменяющие остатки. Потому нужно их брать из документов.
28 badboychik
 
22.03.12
07:50
тогда делай так:
1) выбери все уникальные товары из заказов во врем. таблицу
2) соедини ее с остатками и с движениями ВНУТРЕННИМ соединением
29 badboychik
 
22.03.12
07:51
а уже в СКД настрой группировку по иерархии, ресурсы и т.д.
30 D_Pavel
 
22.03.12
07:51
(28) Тогда из остатков на начало и на конец тоже нужно выбрать все унникальные товары и присоединить к товарам из заказов?
31 badboychik
 
22.03.12
07:53
зачем выбирать товары из остатков если они уже выбраны будут? не тупи
32 D_Pavel
 
22.03.12
07:58
(31) Где выбраны? Если движений в выбранном периоде не было то товар не выберется же.
33 D_Pavel
 
22.03.12
08:01
сделал ВНУТРЕННЕЕ СОЕДИНЕНИЕ, все равно конечный остаток 2 там где должен быть 1.
34 D_Pavel
 
22.03.12
08:02
Если вместо СУММА(ТоварыНаСкладеОстаткиИОбороты.КолВоКонечныйОстаток) сделать Количество(ТоварыНаСкладеОстаткиИОбороты.КолВоКонечныйОстаток), то везультат 2, тоесть остаток выбирается два раза, а потом суммируется.
35 badboychik
 
22.03.12
08:04
(32) ты из заказов выберешь все товары независимо от движений
Если движений нет, тогда надо делать ЛЕВОЕ соединение, будет стоять товар и движение=0
36 D_Pavel
 
22.03.12
08:08
(35) Думаешь это поможет? С учетом (33)
37 mikeA
 
22.03.12
08:17
ВЫБРАТЬ
   ТоварыНаСкладахОстаткиИОбороты.Номенклатура,
   ТоварыНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток,
   ТоварыНаСкладахОстаткиИОбороты.КоличествоПриход,
   ТоварыНаСкладахОстаткиИОбороты.КоличествоРасход,
   ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток
ИЗ
   РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(
           &ДатаНачала {(&ДатаНачала)},
           &ДатаОкончания {(&ДатаОкончания)},
           ,
           ,
           Номенклатура В
               (ВЫБРАТЬ
                   ЗаказПокупателяТовары.Номенклатура
               ИЗ
                   Документ.ЗаказПокупателя.Товары КАК ЗаказПокупателяТовары
               ГДЕ
                   ЗаказПокупателяТовары.Ссылка.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания)) КАК ТоварыНаСкладахОстаткиИОбороты
38 badboychik
 
22.03.12
08:18
ВЫБРАТЬ
   ТоварыВЗаказах.Номенклатура,
   ТоварыНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток,
   ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток,
   ТоварыНаСкладахОстаткиИОбороты.КоличествоОборот,
   ТоварыНаСкладахОстаткиИОбороты.КоличествоПриход,
   ТоварыНаСкладахОстаткиИОбороты.КоличествоРасход
ИЗ
   (ВЫБРАТЬ
       ЗаказПокупателяТовары.Номенклатура КАК Номенклатура
   ИЗ
       Документ.ЗаказПокупателя.Товары КАК ЗаказПокупателяТовары
   ГДЕ
       ЗаказПокупателяТовары.Ссылка = &Ссылка
       ) КАК ТоварыВЗаказах
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты КАК ТоварыНаСкладахОстаткиИОбороты
ПО ТоварыВЗаказах.Номенклатура = ТоварыНаСкладахОстаткиИОбороты.Номенклатура
39 badboychik
 
22.03.12
08:19
в чем проблема ваще не понимаю, делов на 2 минуты
40 badboychik
 
22.03.12
08:20
может у тебя двоятся остатки потому что получаются повторяющиеся строки, если выбрать много заказов и товар есть в нескольких? Во вложенном запросе тогда будет ВЫБРАТЬ РАЗЛИЧНЫЕ
41 D_Pavel
 
22.03.12
08:23
В этих запросах движения из заказов не выбираются. Может через Объединить все сделать?
42 D_Pavel
 
22.03.12
08:32
Хм... Через ОБЪЕДИНИТЬ ВСЕ стало гораздо лучше!
43 badboychik
 
22.03.12
08:39
блиа, какие движения из заказов??
Движения из регистра выбираются, в заказах ты только нужные товары отбираешь!
Причем тут "ОБЪЕДИНИТЬ ВСЕ" ??
44 D_Pavel
 
22.03.12
08:52
(43) Движения выбираются из документа Заказ
45 ЭсОдин
 
22.03.12
08:54
Вот тебе типовой запрос от GROOVY, замени только регистр остатков на оборотный и свои вычисления!
Запрос = Новый Запрос;

Запрос.Текст = "ВЫБРАТЬ

|     РасходнаяТовары.Номенклатура,

|     СУММА(РасходнаяТовары.Количество) КАК Количество

|ПОМЕСТИТЬ ДокТЧ

|ИЗ

|     Документ.Расходная.Товары КАК РасходнаяТовары

|ГДЕ

|     РасходнаяТовары.Ссылка = &Ссылка

|

|СГРУППИРОВАТЬ ПО

|     РасходнаяТовары.Номенклатура

|;

|

|////////////////////////////////////////////////////////////////////////////////

|ВЫБРАТЬ

|     ДокТЧ.Номенклатура,

|     ДокТЧ.Количество,

|     ЕСТЬNULL(ОстаткиТоваровОстатки.КоличествоОстаток,0) КАК Остаток

|ИЗ

|     ДокТЧ КАК ДокТЧ

|           ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиТоваров.Остатки(

|                       ,

|                       Склад = &Склад

|                            И Номенклатура В

|                                  (ВЫБРАТЬ

|                                        ДокТЧ.Номенклатура

|                                  ИЗ

|                                        ДокТЧ КАК ДокТЧ)) КАК ОстаткиТоваровОстатки

|           ПО ДокТЧ.Номенклатура = ОстаткиТоваровОстатки.Номенклатура";

Запрос.УстановитьПараметр("Склад", Склад);

Запрос.УстановитьПараметр("Ссылка", Ссылка);

РезультатЗапроса = Запрос.Выполнить();
46 D_Pavel
 
22.03.12
09:08
Всем спасибо. Все оказалось гораздо проще. ОБЪЕДИНИТЬ ВСЕ помогло.

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

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

ВЫБРАТЬ
   ТоварыНаСкладеОстаткиИОбороты.Товар,
   0,
   0,
   ТоварыНаСкладеОстаткиИОбороты.КолВоНачальныйОстаток,
   ТоварыНаСкладеОстаткиИОбороты.КолВоКонечныйОстаток
ИЗ
   РегистрНакопления.ТоварыНаСкладе.ОстаткиИОбороты(&дата1, &Дата2, Период, , ) КАК ТоварыНаСкладеОстаткиИОбороты
47 Hazer79
 
22.03.12
09:39
(46) не хочешь ли ты сказать, что сисек не будет ?
48 badboychik
 
22.03.12
09:43
*facepalm*

какую-то хрень нагородил в итоге, только мозги всем переимел тут. У тебя будут сначала вся номенклатура из документов а потом опять вся номенклатура из регистра остатков, причем вся какая есть в базе
49 D_Pavel
 
22.03.12
09:54
(47) Я сделал отчет, мне смотреть на сиськи. Хотя я их уже видел, так что в расчете.

(48) Ну я же проверил. Номенклатура вся что надо, не задваивается. Итоги считаются. Группировки тоже хорошо сделались.
50 Escander
 
22.03.12
09:56
>Я сделал отчет, мне смотреть на сиськи

Ыыыыыыы! В мемориз!!!
51 Новиков
 
22.03.12
10:05
Запрос от Груви...звучит.

Мне кажется, Павлу пора издавать книжку рецептов.

"101 запрос от GROOVY"
52 Escander
 
22.03.12
10:30
(51)это реально не интересно, вот если-б был задачник и отдельно варианты решения - цены-б такой книжке не было!
53 D_Pavel
 
23.03.12
13:50
(51) А я тут при чем?
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.