Имя: Пароль:
1C
 
СКД - пользовательские поля
0 ОператорПК
 
21.10.08
11:26
Ситуевина такая:
Строим отчет с 2 группировками (например Склад/Номенклатура) и 3 числовыми полями К1,К2,К3 при этом:

К1 -вычисляется по некоторой сложной формуле
К2 -вычисляется по некоторой сложной формуле
К3 = К1+К2

В построителе для корректного подщета итогов (закладка итоги)писали не Сумма(К3) а
К3 = Сумма(К1)(вычисляется по некоторой сложной формуле)+Сумма(К2)(вычисляется по некоторой сложной формуле) т.е. записывали всю формулу целиком, в компановке хотелось использовать "Пользовательские поля" т.к. по логике пользователь не обязан знать/понимать всю цепь формирования К1 и К2 ему нужно просто получить К3 = К1+К2 так вот. в результате в отчете детальные записи получаются как К3 = К1+К2 (что есть верно) а вот все верхние группировки есть просто сложение детальных записей (что в корне не верно). Пользовательское поле оформляю как Сумма(К1)+Сумма(К2)


Для сравнения таблица которая получается:
               К1   К2  К3
Склад1          8    2   27
Номенклатура1  10   8   18
Номенклатура2  3    6   9

и которую хотелось бы видить:
               К1   К2  К3
Склад1          8    2   10
Номенклатура1  10   8   18
Номенклатура2  3    6   9

т.е. на группировке Склад1 должно быть К3=8+2=10  а не К3=18+9=27

есть идеи?
1 ОператорПК
 
21.10.08
11:34
польщен интересом к ветке :))
2 IronDemon
 
21.10.08
11:38
"К3 = Сумма(К1)(вычисляется по некоторой сложной формуле)+Сумма(К2)(вычисляется по некоторой сложной формуле)" - так напиши так-же в ресурсах
3 Долорес И
 
21.10.08
11:46
(2)так хотелось бы как раз от этого уйти:
слишком громоздкие формулы получатся(величины, участвующие в выражение, вычисляются, в свою очередь через другие, а те - через третьи. в итоге зависимость четвертого пятого порядка. если все подставить в конечную формулу - будет жесть). + проблематично вносить малейшие изменения в таком случае.
--
просто хотелось бы обращаться к полям итогов как к поименованным областям, это решило бы проблему. Ведь к детальным такое обращение возможно.
4 ОператорПК
 
21.10.08
11:51
(2) ну да этот способ известен, хотелось бы от него избавится т.к. если меняеются формулы у К1 и К2 то придется менять все с ними связаное.... а это не есть айс (когда формул много в отчете).
5 ОператорПК
 
21.10.08
12:03
(3) +1000
6 ОператорПК
 
21.10.08
12:10
Нихто не заморачивалси чтоль с СКД?
7 ОператорПК
 
21.10.08
12:22
вот запрос который нормально работает в построителе (а в компоновке при использованиии пользовательских полей работает как описано в (0))
ВЫБРАТЬ
   ПоступлениеТоваровУслугТовары.Ссылка.Склад КАК Склад,
   ПРЕДСТАВЛЕНИЕ(ПоступлениеТоваровУслугТовары.Ссылка.Склад),
   ПоступлениеТоваровУслугТовары.Номенклатура КАК Номенклатура,
   СУММА(ПоступлениеТоваровУслугТовары.Количество) КАК Количество,
   СУММА(ПоступлениеТоваровУслугТовары.СуммаНДС) КАК СуммаНДС,
   СУММА(ПоступлениеТоваровУслугТовары.Сумма) КАК Сумма,
   ПРЕДСТАВЛЕНИЕ(ПоступлениеТоваровУслугТовары.Номенклатура),
   СУММА(ВЫБОР
           КОГДА ПоступлениеТоваровУслугТовары.Количество = 0
               ТОГДА 0
           ИНАЧЕ ПоступлениеТоваровУслугТовары.Сумма / ПоступлениеТоваровУслугТовары.Количество
       КОНЕЦ) КАК Цена,
   СУММА(ВЫБОР
           КОГДА ПоступлениеТоваровУслугТовары.СуммаНДС = 0
               ТОГДА 0
           ИНАЧЕ ПоступлениеТоваровУслугТовары.Сумма / ПоступлениеТоваровУслугТовары.СуммаНДС
       КОНЕЦ) КАК ХЗ,
   СУММА(ВЫБОР
           КОГДА ПоступлениеТоваровУслугТовары.Количество = 0
               ТОГДА 0
           ИНАЧЕ ПоступлениеТоваровУслугТовары.Сумма / ПоступлениеТоваровУслугТовары.Количество
       КОНЕЦ + ВЫБОР
           КОГДА ПоступлениеТоваровУслугТовары.СуммаНДС = 0
               ТОГДА 0
           ИНАЧЕ ПоступлениеТоваровУслугТовары.Сумма / ПоступлениеТоваровУслугТовары.СуммаНДС
       КОНЕЦ) КАК СуммаВсего
ИЗ
   Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары

СГРУППИРОВАТЬ ПО
   ПоступлениеТоваровУслугТовары.Номенклатура,
   ПоступлениеТоваровУслугТовары.Ссылка.Склад
ИТОГИ
   ВЫРАЗИТЬ(ВЫБОР
           КОГДА СУММА(Количество) = 0
               ТОГДА 0
           ИНАЧЕ СУММА(Сумма) / СУММА(Количество)
       КОНЕЦ КАК ЧИСЛО(15, 2)) КАК Цена,
   ВЫРАЗИТЬ(ВЫБОР
           КОГДА СУММА(СуммаНДС) = 0
               ТОГДА 0
           ИНАЧЕ СУММА(Сумма) / СУММА(СуммаНДС)
       КОНЕЦ КАК ЧИСЛО(15, 2)) КАК ХЗ,
   ВЫРАЗИТЬ(ВЫБОР
           КОГДА СУММА(СуммаНДС) = 0
               ТОГДА 0
           ИНАЧЕ СУММА(Сумма) / СУММА(СуммаНДС)
       КОНЕЦ + ВЫБОР
           КОГДА СУММА(Количество) = 0
               ТОГДА 0
           ИНАЧЕ СУММА(Сумма) / СУММА(Количество)
       КОНЕЦ КАК ЧИСЛО(15, 2)) КАК СуммаВсего
ПО
   ОБЩИЕ,
   Склад,
   Номенклатура
8 ОператорПК
 
21.10.08
12:54
вверх
9 ОператорПК
 
21.10.08
13:30
исче идеи :))
10 ОператорПК
 
21.10.08
13:50
Как говорили учительницы в школе - "Лес рук" (с) :))
11 MoneG
 
21.10.08
14:38
На вкладке "Ресурсы" задай Поле К3 два раза. При этом в "Выражение" для одного пиши "Сумма(К1+К2)", а в "Рассчитывать по..." - группировку Номенклатура. Для "второго" К3 - тоже "Сумма(К1+К2)", но в "Рассчитывать по..." - укажи только группировку Склад. Думаю, прокатит.
12 ОператорПК
 
21.10.08
14:46
(11) вообще пользователи сами могут выбирать последовательность группировок.... я если чесно вообще не понимаю как можно пользоваться "Пользовательскими полями" если ей даеш прямое указание как считать Сумма(к1)+Сумма(к2) а не Сумма(к3) кстате парадокс как не пиши результат одинаков) он все равно считает как Сумма(к3).....
13 ОператорПК
 
21.10.08
14:51
под к1 и к2 понимаются сложные выражения:
к1=а/п*е+100*г/р типа того...
формула в построителе выглядит как

Сумма(а)/Сумма(п)*Сумма(е)+100*Сумма(г)/Сумма(р)
14 MoneG
 
21.10.08
14:53
и пусть меняют они последовательность. "Рассчитывать по..." пофигу порядок. у тебя разбит расчет итогов по группировкам? если разбит и (К1+К2) рассчитывается по-разному для склада и для номенклатуры, то результат одинаков не будет.
15 ОператорПК
 
21.10.08
14:58
(14) формула расчета для Номенклатуры,Склада и Общих итогов одинаковая.
16 MoneG
 
21.10.08
15:03
Используй Уровень() и ,может, Вычислить() ...
Да. почитай про Вычислить() - ибо именно через него итоги СКД считает.
17 ОператорПК
 
21.10.08
15:07
(16) с Вычислить() геморой устраивал но толку НУЛЬ как я понял (может я и не прав) его можно использовать только в детальных записях (когда нужно например вычислить значение в текущем поле и этоже значение до какойто группировки или общих итогов) а для группировок использовать нельзя.... кроме того там это и не нужно т.к. в групировкам мы и так "все время находимся на нужной нам записи"...
18 ОператорПК
 
21.10.08
17:02
вверх
19 MoneG
 
21.10.08
18:32
В директории, где установлена 1Сина, (_1С_Dir_\AddDoc\RU\) есть файл V8AddDoc81.htm. Найди строку "Вычислить (Eval)". Там про Вычислить() хоть и кратко, но доступно. Работает оно как раз в контексте группировок, а не "только в детальных записях". СКД победима ;)
20 ОператорПК
 
07.11.08
10:17
Если кому интересно, пришол официальный ответ от 1С: "Такой возможности нет."  (Доступно и всерьез).
Основная теорема систематики: Новые системы плодят новые проблемы.