Корисні приклади складання схеми компонування даних

  • приклади

Порахувати різницю з попереднім записом

Приклад того, як можна отримати поля попереднього запису в групуванні і не тільки. Зручно для обчислення різниці значень попередньої ціни та поточної.

Автор цього питання хотів порахувати відхилення поточної ціни від попередньої. Моє рішення виглядає так:

приклади

Суть рішення полягає у використанні функції мови виразів СКДОбчислитиВираз() у доданому обчислюваному полі, яке я назвавДельта. Функція має такі параметри:

  • Вираз. ТипРядок ;
  • Угруповання. ТипРядок ;
  • Тип Розрахунку. ТипРядок ;
  • Початок. Рядок, що містить один з варіантів;
  • Кінець. Рядок, що містить один з варіантів;
  • Сортування. Рядок;
  • ІєрархічнаСортування ;
  • ОбробкаОдінаковихЗначеньПорядку

Нас цікавить 4 та 5 параметр (Початок таКінець ). Вираз виглядатиме так:

isNULL((ВИЧИСЛИТИВИРАД("Ціна", , , "Попередня", "Попередня") - Ціна), 0)

- тут обчислюємо попереднє значення поляЦіна і з нього віднімаємо поточне значення поляЦіна. Природно, для першого запису попереднє значення не буде обчислено і результат віднімання зі значенням поточного поля буде Null, тому щоб все було «чисто» використовуємо функцію isNULL(єNull), щоб перетворити Null в число нуль.

складання

Помістити таблицю значень у комірку табличного документа

Іноді буває необхідно помістити табличну частину документа або дані, які є рядками табличної частини водин осередок табличного документа, наприклад так:

приклади

Для цього необхідно скористатися функцією:ОбчислитиВираз СгрупуваннямТаблицяЗначень(), яка має параметри:

  • Вираз - вираз, який потрібно обчислити. Тип Рядок. У рядку може бути перераховано кілька виразів через кому. Після кожного виразу може бути необов'язковим ключовим словом ЯК та ім'я колонки таблиці значень. Наприклад: "Контрагент, Сума (СуммаОборот) Як Об'єм Продаж".
  • Вирази ПолівУгруповання - вирази полів угруповання, перераховані через кому. Наприклад, "Контрагент, Партія";
  • ВідбірЗаписів - вираз, що застосовується до детальних записів. Наприклад, "Позначка Видалення = Брехня";
  • Відбір угруповань - відбір, що застосовується до групових записів. Наприклад: "Сума(СумаОборот) > &Параметр1".

Для цього створюємо обчислюване поле, в яке виводитимемо таблицю, потім поміщаємо це поле в ресурси з виразомОбчислитиВираз СгрупуваннямТаблицяЗначень("Номенклатура, Кількість")

Пронумерувати колонки

Приклад того, як можна пронумерувати колонки в СКД.

приклади

  1. Створюємо запит, у якому нумеруємо рядки результату запиту в межах певного підпорядкування
  2. Виводимо результат у крос-таблицю

ВАЖЛИВО!

Після того, як рядки в запиті пронумеровані, їх необхідно помістити в ВТ і потім з цієї ВТ вибирати, інакше СКД зробить все по-своєму і в угруповання потраплять не ті поля.

Для того щоб отримати результат необхідно створити обчислюване поле з виразом"Співробітник" + Формат(НВП,"ЧЦ=3; ЧВН=") і обчислюване поле ПІБ, в яке просто помістити Співробітник, потімпоміщаємо полеПІБ в ресурс з виразомМаксимум(ПІБ) або простоПІБ - ніякої різниці

Чергування груп із виділенням кольором

Десь на Місті або на тому ж 1Cskd.ru було питання як підсвічувати різним кольором рядки, що утворюють групи

приклади

Це досягається створенням поля, що обчислюється:

ВизначитиВираз("Кількість (Різні Номенклатура)". "Перша", "Попередня". "Разом") % 2

Вважаємо кількість різних "угруповань" поля Номенклатура, угруповання виходить вважати за рахунок встановлення значення параметра ОбробкаОдинаковихЗначеньПорядку = "Разом"

Залишок від поділу на два дасть зрозуміти це парна група чи ні, відповідно, створюємо елемент умовного оформлення з умовоюПоле = 1

Залишки у розрізі характеристик. Характеристики у рядок з кількістю у дужках

складання

Це досягається використанням тієї ж функціїОбчислитиВираз СгрупуваннямМассив()

У цьому прикладі функція виглядає так:

ОбчислитиВираз СгрупуваннямМасив( "ХарактеристикаНоменклатури.Найменування + ""("" + Формат(КількістьЗалишок,""ЧГ=0"") + "")"", , "ЗначенняЗаповнено(Характеристика"Номенклатура

Третій параметр - це відбір, що дозволяє уникнути уявлення порожнього рядка "" - відповідно ви не побачите залишків без характеристик

З'єднати дві таблиці з ключем Рядок = Число

Або варіант як у СКД значення типу число перетворити на рядок

Періодично на форумах бачу тему виду «Як перетворити число на рядок у запиті». Якщо ви пишете звіт на СКД і вам необхідно виконати подібне перетворення, то жодних хитрощів у запиті не треба писати.

Для того, щоб перетворити число в рядок,досить просто скористатися функцією мови виразів системи компонування даних СКДРядок() абоФормат()

Для того щоб перетворити рядок на число можна скористатися функцієюОбчислити()

Сортування за рядком як за числом

Завдання не нова і періодично зустрічається. Мене, наприклад, вперше попросили це зробити у звіті «Розрахункові листки організацій » - необхідно було відсортувати розрахункові листки за табельним номером співробітника як за кількістю. Востаннє зустріло це питання тут http://www.forum.mista.ru/topic.php? >

У своєму прикладі я просто виведу довідник співробітники, відсортувавши його за табельним номером (кодом)

Результат буде виглядати так:

приклади

Це досягається, створенням поля, що обчислюється, і використанням функції мови виразів СКДОбчислити()

  1. Створюємо обчислюване полеТабНомерЧисло, з виразом:Обчислити(Сотрудник.Код)
  2. Сортуємо за цим полем

по суті, це перетворення рядка в число за допомогою функції мови виразів СКДОбчислити()

Раджу так само подивитися "Відеоуроки по СКД"(легко шукається в гугле)

Під час розробки я використовую конвертовану консоль звітів СКД+.