Имя: Пароль:
1C
1С v8
СКД: Процент по строке к общему итогу
0 Mikhail Volkov
 
09.12.16
03:36
В производственный отчет попросили вставить колонки процентов по затратам (номенклатуре). В "Вычисляемые поля" вставил выражения:
КоличествоЗатрата/ВычислитьВыражение("Сумма(КоличествоЗатрата)","","ОбщийИтог")*100
СтоимостьЗатрата/ВычислитьВыражение("Сумма(СтоимостьЗатрата)","","ОбщийИтог")*100
В ресурсы: Сумма(ПроцентКоличествоЗатрата) и Сумма(ПроцентСтоимостьЗатрата), получил результат: http://s017.radikal.ru/i438/1612/38/1a3331c64e3d.jpg - вроде все как надо.
Но, когда добавили группировку по категории затраты: http://s020.radikal.ru/i722/1612/87/b9e66e441209.jpg - мои проценты стали странными: итоги по категории верные (и общие 100%), а внутри - у каждой итог по 100%!?
Вопрос по функции ВычислитьВыражение(Выражение, Группировка, ТипРасчета, , , , , ), ее параметру Группировка - что в нее писать?
1 Mikhail Volkov
 
09.12.16
04:15
Нашел подробное описание этого параметра: http://1centerprise8.blogspot.ru/2016/06/funkcii-skd.html
Группировка (Строка). Содержит имя группировки, в контексте которой необходимо вычислить выражение. В случае если в качестве имени группировки используется пустая строка, вычисление будет выполнено в контексте текущей группировки. В случае если в качестве имени группировки будет использована строка ОбщийИтог, вычисление будет выполнено в контексте общего итога. В остальных случаях вычисление будет выполняться в контексте родительской группировки с таким именем.
Убрал "" из параметров, вроде заработало как надо: http://s12.radikal.ru/i185/1612/05/4cbdcfebb0cf.jpg
Вообще-то первоначальное выражение брал из примера, в некоторых источниках по другому описывают функцию ВычислитьВыражение(). От версии платформы зависит? Если у клиента (которому делаю отчет) платформа 8.2 не последняя, то может не заработать как надо?
2 SleepyHead
 
гуру
09.12.16
05:46
Можно же проще. С 8.3.6 для числовых полей (ресурсов) при выборе поля отчета можно его развернуть и выбрать процент от общего итога.
3 SleepyHead
 
гуру
09.12.16
05:48
4 SleepyHead
 
гуру
09.12.16
05:48
5 SleepyHead
 
гуру
09.12.16
05:49
Ага, увидел, что там вообще 8.2, ну что же, надо мучаться с выражениями :)
6 h-sp
 
09.12.16
07:00
(5) есть эти проценты в 8.2
7 Mikhail Volkov
 
09.12.16
09:51
(6) Да есть, и очень много разных. В моем случае какой брат ПроцентОбщий?
8 Mikhail Volkov
 
10.12.16
05:51
+ Да, ПроцентОбщий правильно отображает, и внутри группировки по категории. Но заголовки колонок уж больно корявые. Можно их как-то поправить (желательно чтобы как в предыдущем варианте)?
http://s019.radikal.ru/i634/1612/15/e344406182e8.jpg
9 Худой
 
10.12.16
06:59
(8)Ты можешь выкладывать свои картинки на другой ресурс?
А то задолбали эти рекламы сопроводительные. Сразу отпадает желание темой заниматься
10 Mikhail Volkov
 
10.12.16
07:32
(9) Какой ресурс, посоветуй (самого задолбила эта реклама)!?
С заголовками разобрался: в настройках "Выбранные поля" по правой кнопке мыши можно любой "Задать заголовок...". Еще нарыл здесь v8: компоновка данных, но мне не подходит. Поскольку в моем "Набор данных" нет полей процентов.
11 Mikhail Volkov
 
10.12.16
08:23
Вообще-то тема эта родилась по сомнением возможностей СКД. Проценты вычисляются к общим итогам, т.е. в конце формирования отчета. А в целом задача в объединении 2-х типовых: "Выпуск продукции" и "Затраты на выпуск". Беда в том, что по количеству все нормально, результаты сходятся. А по стоимости результаты появятся только по закрытию месяца, после расчета себестоимости. Поэтому пока их делают в Excel, количества берут из типовых отчетов, а стоимость вычисляют по ценам рассчитанным из предыдущих уже закрытых периодов. Специально для этого РС рассчитанная себестоимость создали. При этом итоги 2-х отчетов конечно же не сходятся. В Excel их просто подгоняют: общий итог стоимости берут из полученного в "Затраты на выпуск", считают корректирующий коэффициент: Итог стоимости затрат/Итог стоимости выпуска. И все стоимости выпуска (каждой продукции) умножают на этот коэффициент.
Подобное в СКД можно реализовать?
12 mistеr
 
10.12.16
08:51
(10) Imgur нормальный.

(11) Про плановую себестоимость в УПП у вас там в курсе?
13 Худой
 
10.12.16
11:25
Действительно, обычно используют плановую. Естественно, она должна быть адекватная.
И что мешает расчтывать себестоимость, если она так необходима?
14 Mikhail Volkov
 
10.12.16
11:44
(12) Imgur.com? Хотел инструкцию скачать, предлагает доп. ПО, какое-то Амиго... Как им пользоваться?
Про плановую себестоимость в УПП вроде в курсе, недавно План - фактный анализ продаж переделывал.
(13) Рассчитывать себестоимость очень трудоемко, база сильно зависает (рассчитывают в копии на другом сервере, после как-то  результаты в рабочую переносят. Прошлый месяц не всегда рассчитан, не говоря о текущем.
15 Mikhail Volkov
 
10.12.16
12:49
Задал КоэффициентЦены в "Вычисляемые поля" выражением:
ВЫБОР
    КОГДА ВычислитьВыражение("Сумма(СтоимостьВыпуск)",,"ОбщийИтог") = 0
        ТОГДА 1
    ИНАЧЕ ВычислитьВыражение("Сумма(СтоимостьЗатрата)",,"ОбщийИтог")/ВычислитьВыражение("Сумма(СтоимостьВыпуск)",,"ОбщийИтог")
КОНЕЦ
Пробовал в "Ресурсы" добавить вместо Сумма(СтоимостьВыпуск) на Сумма(СтоимостьВыпуск)* КоэффициентЦены дает:
Ошибка получения данных
по причине:
Выражение не может быть вычислено "Сумма(НаборДанных1.СтоимостьВыпуск), "
В текст запроса пытался вставить КоэффициентЦены - не воспринимает. Куда вставить этот КоэффициентЦены чтобы СтоимостьВыпуск скорректировать?
16 Mikhail Volkov
 
10.12.16
17:56
Выражение в ресурсах: Сумма(СтоимостьВыпуск)* КоэффициентЦены - вроде явно не подходит, там может быть только из списка: Сумма, Среднее..? Создал СтоимостьВыпускСкорректированная - к тому же выражению приписал множитель СтоимостьВыпуск. Кстати, в ВычислитьВыражение() 2-м параметром пришлось добавлять "", иначе та же ошибка (15) выскакивает!? В итоге получилось такое выражение:

СтоимостьВыпуск*(ВЫБОР
    КОГДА ВычислитьВыражение("Сумма(СтоимостьВыпуск)","","ОбщийИтог") = 0
        ТОГДА 1
    ИНАЧЕ ВычислитьВыражение("Сумма(СтоимостьЗатрата)","","ОбщийИтог")/ВычислитьВыражение("Сумма(СтоимостьВыпуск)","","ОбщийИтог")
КОНЕЦ)

Не знаю на сколько это правильно, но теперь итоговые стоимости выпуска и затрат сходятся.
Вот только цены выпуска не соответствуют СтоимостьВыпуск/КоличествоВыпуск, они же берутся из РС рассчитанная себестоимость. Как их скорректировать?
17 mistеr
 
10.12.16
19:03
(16) >Хотел инструкцию скачать, предлагает доп. ПО, какое-то Амиго

Ты где-то не там скачивал. Imgur прекрасно работает без доп. ПО.
18 Mikhail Volkov
 
11.12.16
08:33
Казалось, что тут думать, тоже выражение, только вместо СтоимостьВыпуск подставить Цена из РС:

Цена*(ВЫБОР
    КОГДА ВычислитьВыражение("Сумма(СтоимостьВыпуск)","","ОбщийИтог") = 0
        ТОГДА 1
    ИНАЧЕ ВычислитьВыражение("Сумма(СтоимостьЗатрата)","","ОбщийИтог")/ВычислитьВыражение("Сумма(СтоимостьВыпуск)","","ОбщийИтог")
КОНЕЦ)

но оказалось сама Цена неправильно рассчитывается у продукции. В запросе берется так:
РасчитаннаяСебестоимостьСрезПоследних.Себестоимость КАК Цена
Выражение в ресурсах: Среднее(Цена). Стал копать, задал выражение: Количество(Различные Цена), то вывелось 24 у основной продукции!? Откуда такое? у всех остальных затрат по 1.
19 Mikhail Volkov
 
11.12.16
12:53
Оказывается 24 - это позиции затрат. Запрос был следующим:

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

СГРУППИРОВАТЬ ПО
    ВыпускПродукцииОбороты.Подразделение,
    ВыпускПродукцииОбороты.НоменклатурнаяГруппа,
    ВыпускПродукцииОбороты.Продукция,
    ВыпускПродукцииОбороты.ХарактеристикаПродукции,
    ВыпускПродукцииОбороты.СерияПродукции,
    ВыпускПродукцииОбороты.Спецификация,
    ВыпускПродукцииОбороты.ДокументВыпуска,
    ВыпускПродукцииОбороты.Период,
    РасчитаннаяСебестоимостьСрезПоследних.Себестоимость

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

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

СГРУППИРОВАТЬ ПО
    ЗатратыНаВыпускПродукцииОбороты.Подразделение,
    ЗатратыНаВыпускПродукцииОбороты.НоменклатурнаяГруппа,
    ЗатратыНаВыпускПродукцииОбороты.Продукция,
    ЗатратыНаВыпускПродукцииОбороты.ХарактеристикаПродукции,
    ЗатратыНаВыпускПродукцииОбороты.СерияПродукции,
    ЗатратыНаВыпускПродукцииОбороты.Спецификация,
    ЗатратыНаВыпускПродукцииОбороты.ДокументВыпуска,
    ЗатратыНаВыпускПродукцииОбороты.Период,
    ЗатратыНаВыпускПродукцииОбороты.Затрата,
    РасчитаннаяСебестоимостьСрезПоследних.Себестоимость

Полагая, что для выпуска продукции Цена берется только по продукции (вроде стоимость продукции правильно рассчиталась). Теперь запрос переделал, сделал раздельно ЦенаВыпуск и ЦенаЗатрата:

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

СГРУППИРОВАТЬ ПО
    ВыпускПродукцииОбороты.Подразделение,
    ВыпускПродукцииОбороты.НоменклатурнаяГруппа,
    ВыпускПродукцииОбороты.Продукция,
    ВыпускПродукцииОбороты.ХарактеристикаПродукции,
    ВыпускПродукцииОбороты.СерияПродукции,
    ВыпускПродукцииОбороты.Спецификация,
    ВыпускПродукцииОбороты.ДокументВыпуска,
    ВыпускПродукцииОбороты.Период,
    РасчитаннаяСебестоимостьСрезПоследних.Себестоимость

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

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

СГРУППИРОВАТЬ ПО
    ЗатратыНаВыпускПродукцииОбороты.Подразделение,
    ЗатратыНаВыпускПродукцииОбороты.НоменклатурнаяГруппа,
    ЗатратыНаВыпускПродукцииОбороты.Продукция,
    ЗатратыНаВыпускПродукцииОбороты.ХарактеристикаПродукции,
    ЗатратыНаВыпускПродукцииОбороты.СерияПродукции,
    ЗатратыНаВыпускПродукцииОбороты.Спецификация,
    ЗатратыНаВыпускПродукцииОбороты.ДокументВыпуска,
    ЗатратыНаВыпускПродукцииОбороты.Период,
    ЗатратыНаВыпускПродукцииОбороты.Затрата,
    РасчитаннаяСебестоимостьСрезПоследних.Себестоимость

Но ничего не исправилось, та же хрень, цены продукции не те, не совпадают с РС РасчитаннаяСебестоимость!?
20 Mikhail Volkov
 
12.12.16
06:04
В "Вычисляемые поля" для ЦенаВыпускСкорректированная прописал:

ВЫБОР
    КОГДА КоличествоВыпуск = 0
        ТОГДА 0
    ИНАЧЕ СтоимостьВыпуск/КоличествоВыпуск*(
    ВЫБОР
        КОГДА ВычислитьВыражение("Сумма(СтоимостьВыпуск)","","ОбщийИтог") = 0
            ТОГДА 1
        ИНАЧЕ ВычислитьВыражение("Сумма(СтоимостьЗатрата)","","ОбщийИтог")/ВычислитьВыражение("Сумма(СтоимостьВыпуск)","","ОбщийИтог")
    КОНЕЦ)
КОНЕЦ

СтоимостьВыпуск и КоличествоВыпуск правильно рассчитываются, но и это не помогло?
21 Mikhail Volkov
 
15.12.16
06:28
Еще один эксперимент, фрагмент:

    РасчитаннаяСебестоимостьСрезПоследних.Себестоимость КАК Цена,
    СУММА(ВыпускПродукцииОбороты.КоличествоОборот) КАК КоличествоВыпуск,
    СУММА(ВыпускПродукцииОбороты.КоличествоОборот * РасчитаннаяСебестоимостьСрезПоследних.Себестоимость) КАК СтоимостьВыпуск,

Заменил на:

    ВЫБОР
        КОГДА СУММА(ВыпускПродукцииОбороты.КоличествоОборот) = 0
            ТОГДА 0
        ИНАЧЕ СУММА(ВыпускПродукцииОбороты.КоличествоОборот * РасчитаннаяСебестоимостьСрезПоследних.Себестоимость) / СУММА(ВыпускПродукцииОбороты.КоличествоОборот)
    КОНЕЦ КАК Цена,
    СУММА(ВыпускПродукцииОбороты.КоличествоОборот) КАК КоличествоВыпуск,
    СУММА(ВыпускПродукцииОбороты.КоличествоОборот * РасчитаннаяСебестоимостьСрезПоследних.Себестоимость) КАК СтоимостьВыпуск,

СтоимостьВыпуск и КоличествоВыпуск правильно рассчитываются, а их частное от деления - нет. В СКД какая-то хитрая арифметика?