Как легко в СКД сделать переключатель: рубли, тыс. руб., млн. руб.

Программирование - Практика программирования

СКД Формат чисел Округление тысячи УсловноеОформление 1С 8.3

69
Достаточно часто пользователи просят добавить в отчеты функцию округления показателей отчетов до тысяч или миллионов. Работая в франчайзи, я встречал различные варианты реализации, например, разные варианты отчетов или округление значения показателей сразу в запросе и т.д. и т.п. Хочу предложить вариант решения данной задачи в отчетах, построенных в СКД.

1. Для того, чтобы на форме отчета СКД появился список выбора формата отражения чисел в показателях отчета, добавим в Параметры схемы компоновки данных новый параметр и назовем его, например, "ЕдиницаИзмерения" (можно Формат чисел или как кому удобно).  Тип параметра указываем "Строка". Открываем список "Доступные значения" и вносим туда значения "Рубли, копейки, Рубли, Тыс. рублей, Млн. рубл.".  Указываем значение из внесенного нами списка".

 

2. Переходим на закладку "Настройки" схемы компоновки данных и настраиваем в закладке "Параметры" доступность пользователям и режим редактирования, а также можно указать значение по умолчанию.

3. Переходим в "Условное оформление" и для каждого значения Параметра добавляем оформление. Рассмотрим пример на Тыс. рубл.  Открываем окно оформление и в строке Формат указываем "ЧДЦ=0; ЧС=3". (Если кто не знает то ЧС, это сдвиг на количество знаков, т.е. ЧС=3 это деление на 1000, для миллионов ЧС=6).  В условие добавляем Левое значение "ПараметрыДанных.ЕдимницаИзмерения" равно ПравоеЗначение можно выбрать из уже заложенного нами списка,  в нашем случае выбираем "Тыс. рубл.". в оформляемые поля добавляем все показатели для которых нужно будет округление в отчете. Ну и указываем область использования  в группировке,  в итогах и в иерархической группировке. 

 

Еще раз повторюсь, что если мы в доступных значениях параметра "ЕдиницаИзмерения" указали четыре значения, то и строк оформления у нас должно быть четыре, т.е. для каждого значения. Оформление будет работать в зависимости от выбранного значения "ЕдиницаИзмерения" пользователем. Строки оформления отличаются только форматом оформления и условием. 

Всё, запускаем отчет и пользуемся!

69

См. также

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо
1. Yashazz 2314 07.08.18 12:06 Сейчас в теме
Имхо, проще было это программно сделать, чем ручками в конструкторе СКД прописывать)
Такой код и портировать проще было бы, кстати.
ser6702; dabu-dabu; +2 Ответить
4. echo77 989 08.08.18 08:50 Сейчас в теме
(1)Покажите, пожалуйста, пример, того, что вы имеете ввиду
susumanin; +1 Ответить
6. Yashazz 2314 08.08.18 12:26 Сейчас в теме
(1) а вот уже коллеги успели ссылку подкинуть)
2. WalterMort 290 07.08.18 12:28 Сейчас в теме
Теперь осталось объяснить пользователю, что отбор он всё равно должен указывать в рублях.
Darklight; kuzyara; rpgshnik; Ta_Da; sommid; +5 Ответить
3. YanTsys 12 08.08.18 08:33 Сейчас в теме
Замечательное решение но думаю нужно акцентировать внимание его пользователей на том факте, что итоги не будут сходится с суммой значений строк...
Darklight; +1 Ответить
5. ser6702 63 08.08.18 10:58 Сейчас в теме
Программно проще - еще в древности так делал
https://infostart.ru/public/349714/
Alien_job; Yashazz; +2 Ответить
8. swimdog 582 17.09.18 16:09 Сейчас в теме
7. Denis_CFO 13 08.08.18 12:58 Сейчас в теме
Ну и судя по "Мил. руб" - у них там (где-то на работе), вообще привыкли всё не по-стандартам делать....
9. buganov 51 18.09.18 06:04 Сейчас в теме
Мое мнение, что в СКД гораздо лучше сделать по методу автора, чем разводить колхоз в запросе
11. Darklight 16 19.09.18 12:11 Сейчас в теме
(9)Метод автора хороший, но не лишён недостатка - вручную вбивать в редакторе СКД это всё очень не удобно (хотя при использовании копирования строк формата это всё немного упрощается).

Но можно выгружать настройку в xml и быстро вставлять туда заранее подготовленный текст (с внесёнными исправлениями по полям - это всё тоже быстро делается в хорошем текстовом редакторе, например в Notepad++), а потом настройка загружается обратно.

Или использовать гибридный вариант - вносить такие же настройки, что описаны в статье, но программно (можно сделать общую универсальную функцию, анализирующую ресурсы, или каждый раз копировать и редактировать код), задавая нужные настройки условного оформления и параметр СКД. У этого подхода тоже есть недостаток - нужно вклиниваться в код формы отчета - чтобы выполнить такой алгоритм. Но, обычно формы не самых тривиальных отчетов и так всегда создаются (у продвинутых программистов даже - из готового шаблона) - так что это не такой уж большой недостаток.
12. buganov 51 19.09.18 13:03 Сейчас в теме
(11) у метода запросом есть существенный недостаток - конечный пользователь не сможет сделать свое оформление. Например, количество целочисленное, добавить свои триллиарды. По таким ситуациям будут дергать кодера
13. Darklight 16 19.09.18 13:32 Сейчас в теме
(12)Это редкий случай. Можно и дёрнуть. А если пользователь настолько продвинут, что хочет делать своё оформление - он его и в настройках СКД сам сделает как раз (или я не понял в чём проблема).
14. buganov 51 19.09.18 19:31 Сейчас в теме
(13)да нет, если дергать программиста по таким пустякам, не получится непрерывной разработки. Да и раздражает, когда приходится отвлекаться с нормальной задачи на такие пустяки. Проще один раз показать, конечно
10. German_Tagil 6 19.09.18 06:37 Сейчас в теме
15. BackHand001 19 22.09.18 18:36 Сейчас в теме
Спасибо!
Познавательно.
Оставьте свое сообщение