Пользовательские поля в отчетах СКД
Давным давно мной был написан отчет "Продажи товаров по отгрузке" //infostart.ru/public/16477/. В данной публикации не будем обсуждать его актуальность и достоинства. Данный отчет возьмется как шаблон для экспериментов, видоизменений. Тем более в комментариях спрашивали, как добавлять Поля.
Открываем "Настройки..." и переходим на закладку "Пользовательские настройки".
2. Добавляем "Новое поле Выражение"

|
Заголовок: Цена продажи |
Как будет отображаться при формировании |
|
Выражение детальных записей: [Сумма продажи] / Количество |
Собственно из чего получились данные |
|
Выражение итоговых записей: [Сумма продажи] / Количество |
Выражение для получения итогов по группировкам |
Добавление полей проставляет собой прописывание арифметических действий между Доступными полями, (это позволительно отмеченных зеленым квадратиком). Также особенность, если название такого поля состоит из двух или более слов, его необходимо заключить в квадратные скобки [ ]. Получиться вот так - [Сумма продажи].

После сохранения, это поле станет доступно для выбора:
Вот с помощью несложных манипуляций получаете нужное для себя значение. Данная возможность позволить добавлять нужные поля. В таких вариантах расчета как вам необходимо. Рентабельность, Эффективность и прочее значения будут считаться в вашей логики арифметических расчетов.
Итого, необходимо сохранить что вы сделали:


В этом случае ваша работа не будет потеряна и при следующем открытии отчета можно будет воспользоваться.
Функций, используемые при написании полей.
1. Арифметические « + , - , * , / » с этим понятно, думаю объяснить принцип их действия не надо.
2. Логические выражения в используются для определения отборов. « > , < , = , >= , <= , <>, И, ИЛИ, НЕ ». Данные выражения используется с операцией выбора.
3. Операции выбора. Применяться для получения одного из возможных значений в соответствии с указанными условиями
ВЫБОР
КОГДА < Операция выбора > ТОГДА <Выражение>
ИНАЧЕ <Выражение>
КОНЕЦ
Пример:
ВЫБОР
КОГДА Количество > 0 и Сумма > 0 ТОГДА «Правильно»
ИНАЧЕ «Ошибка»
КОНЕЦ
Это расшифровывается так: при условии когда количество больше нуля и сумм больше нуля, будет выводиться текст «Правильно», а если хоть одно из условий не соблюдено выводиться «Ошибка».
4. Встроенная функция, позволяет произвести определенные преобразования с полями.
ПОДСТРОКА ( «Выражение» , «Начальная позиция» , «Конечная Позиция») – выбирается часть «Выражения», ограниченного рамками «Начальной…» и «Конечной…».
Как это поисходит при значении Номенклатура - «Паста шоколадная» формула Подстрока(Номенклатура,1,5) выведет значение «Паста»
Для работы с датой используются функции
ГОД(<Дата>), КВАРТАЛ(<Дата>), МЕСЯЦ(<Дата>), ДЕНЬГОДА(<Дата>), ДЕНЬ(<Дата>), НЕДЕЛЯ(<Дата>), ДЕНЬНЕДЕЛИ(<Дата>), ЧАС(<Дата>), МИНУТА(<Дата>), СЕКУНДА(<Дата>)
Будет выводится соответствующий названию функции значение.
НАЧАЛОПЕРИОДА(«Дата», «Период сдвига»), КОНЕЦПЕРИОДА(«Дата», «Период сдвига»). Для данных функции, значение Выражения даты на начало или конец заданной даты.
ДОБАВИТЬКДАТЕ («Дата», «Период сдвига», «Величина, на которую требуется увеличить дату») - функция позволяет увеличить или уменьшить дату на определенное значение.
РАЗНОСТЬДАТ («Дата1», «Дата2», «Период сдвига») - Функция предназначена для получения разницы между двумя датами.
«Период сдвига» одно из «Минута, Час, День, Неделя, Месяц, Квартал, Год, Декада, Полугодие».
5.Агрегатные функции языка запросов используются при группировке результатов подсчете итогов
СУММА ( <> ) арифметическую сумму всех попавших в выборку значений.
СРЕДНЕЕ ( <> ) вычисляет среднее значение всех попавших в выборку
МИНИМУМ ( <> ) вычисляет минимальное значение из всех попавших в выборку значений
МАКСИМУМ ( <> ) вычисляет максимальное значение из всех попавших в выборку значений
КОЛИЧЕСТВО ( <> ) подсчитывает количество значений параметра, попавших в выборку. Данная функция позволяет имеет варианты использования. КОЛИЧЕСТВО(*) - позволяет подсчитать количество строк в результате. КОЛИЧЕСТВО(РАЗЛИЧНЫЕ «Выражение») - позволяет подсчитать количество различных значений указанного поля.
Примеры:
Сумма(Выбор
Когда Подстрока(Номенклатура, 1, 5) = "Паста"
Тогда Количество *0.2
Иначе Количество *0.35
Конец)
Получится сумма значений при этом когда в начале наименования номенклатуры присутствует «Паста» в этом случает количество увеличивается на 0.2 если не присутствует увеличивается на 0.35.
Год([Документ.Дата])
Выведется Год когда документ записан/проведен.
Более сложный пример, без расшифровки.
Выбор
Когда Квартал([Документ.Дата]) = 1 И Подстрока(Номенклатура, 1, 5) = "Паста"
Тогда Количество * 0.2
Иначе Выбор
Когда Квартал([Документ.Дата]) = 2
Тогда Количество * 0.3
Иначе Выбор
Когда Квартал([Документ.Дата]) = 3
Тогда Количество * 0.4
Иначе Выбор
Когда Квартал([Документ.Дата]) = 4
Тогда Количество * 0.5
Конец
Конец
Конец
Конец
ps:
Бухгалтерская Справка для БП - //infostart.ru/public/64188/
Все налоги ФОТ по сотрудникам Для БП 2 - //infostart.ru/public/15836/
Реестр по документу Счет-ФактураВыданный для БП и УПП - //infostart.ru/public/18911/
Отчет по себестоимости и продажам товаров для БП - //infostart.ru/public/16477/
Одновременная печать Торг12 + С-Ф и Акт на услуги + С-Ф для БП - //infostart.ru/public/93943/
Одновременная печать Торг12 + С-Ф и Акт на услуги + С-Ф для УТ 10 - //infostart.ru/public/96636/
ТОП-6 инструментов для разработчика 1С
Подборка лучших инструментов для разработчика 1С включает Toolkit, DCT, OneDebugger, PrintWizard, DataFormWizard и Infostart MCP. Любой инструмент со скидкой 20% при покупке от двух решений.
Вступайте в нашу телеграмм-группу Инфостарт
Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
См. также
Инструментарий разработчика Роли и права Запросы СКД Разработчик Руководитель проекта 1С:Предприятие 8 Платные (руб)
Инструменты для разработчиков 1С 8.3 и 8.5: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.
16500 руб.
02.09.2020 286381 1611 423
СКД Разработчик 1С:Предприятие 8 Бесплатно (free)
Как решить проблему с отборами по полям СКД, когда с одинаковым отбором Отчет показывает одно, а Консоль запросов другое.
16.06.2026 6435 sapervodichka 45
Инструментарий разработчика СКД Разработчик 1С 8.3 Бесплатно (free)
В этой статье представлен ПовелительОтчетов — общий модуль-обёртка над объектной моделью СКД, который сокращает код в 3-4 раза и делает его читаемым.
29.01.2026 9528 458 shapa_pro 31
СКД Разработчик 1С:Предприятие 8 Бесплатно (free)
Статья написана по результатам проведенного внутреннего обучающего вебинара для разработчиков ГК «СофтБаланс». Если осилить 25 000 знаков - задача для вас непосильная, где-то на бескрайних просторах интернета видео есть (или будет). Но здесь информация точнее. Разберем, чем запрос для СКД принципиально отличается от обычного запроса и как модифицируется в зависимости от настроек. Изучим «базовый рецепт» написания запроса для СКД, сформируем чек-лист. Полезно будет всем – от стажеров до тех. лидов. Всем, кто не снимает галку «автозаполнение» и пишет запросы для отчетов в консоли запросов – читать (вдумчиво) обязательно.
29.10.2025 27226 ovetgana 112
СКД Разработчик 1С:Предприятие 8 Бесплатно (free)
Описан способ заполнения списка доступных значений для полей наборов данных и параметров в схеме компоновки данных для любых конфигураций (с использованием БСП или без).
01.07.2025 15892 krasnoshchekovpavel 7
СКД Разработчик Стажер 1С:Предприятие 8 Россия Бесплатно (free)
Несколько способов управления формами выбора параметров и отборов СКД.
10.04.2025 15295 Neti 0
СКД Разработчик 1С:Предприятие 8 Бесплатно (free)
Хорошая отчетная форма - сродни искусству. Есть какое-то невероятное эстетическое удовольствие в том, чтобы разобраться в логике учета и анализируемых показателях, спроектировать архитектуру хранения данных так, чтобы оптимально собрать эти показатели вместе с аналитическими разрезами в запросе, а затем настроить отображение так, чтобы, глядя на результат, сразу было понятно, что это за отчет и какие задачи он призван решать. Система компоновки данных - это моя первая, главная и, наверное, единственная "рабочая" любовь. Ее я использую везде, где только можно и где нельзя тоже. Хочу поделиться с вами некоторыми практическими приемами в работе с отчетами на СКД, которые, надеюсь, будут полезны.
27.02.2025 19905 ovetgana 50
СКД Разработчик 1С:Предприятие 8 Бесплатно (free)
СКД – инструмент, на базе которого в современных конфигурациях реализованы практически все отчеты. СКД используется в динамических списках, печатных формах и универсальных механизмах. Если построить простейший отчет может каждый разработчик, то с нюансами знакомы далеко не все. Расскажем о неочевидных на первый взгляд приемах, способных значительно повысить качество отчетов.
24.12.2024 17807 Akcium 17
В отчета сделанных с помощью "Схемы компоновки данных" из пользовательского режима можно добавлять свои Поля, которые будет выводиться при формировании.
В данных полях позволительно применять арифметические действа.
У Хрусталёвой гораздо грамотнее написано. Вот если б где найти полное описание синтаксиса и допустимых функций для этого "языка СКД"... Так надоело искать аналоги и в угадайку играть.
Хотя вот есть
Например, создал пользовательское поле "Вид школы" в завистмости от класса ученика
Выбор
Когда Класс <= 3 Тогда "Начальная"
Когда Класс > 3 И Класс < 9 Тогда "Средняя"
Иначе "Высшая"
Конец
Для этого не нужно заполнять итоговое поле, можно оставить его пустым.
В результате у поля будет не зеленый значок, обозначающий ресурс, а обычный.
Подобное поле удобно юзать, например, как период и делать группировку по нужным периодам (день, неделя, месяц и т.п.)
Однако, действительно жалко, что русские люди не знают русского языка.
Однако, действительно жалко, что русские люди не знают русского языка.
вы так уверены, в моей национальности?
не возникало вопроса, что отсутствует способность к таким знаниям (кому что дано)?
ВЫБОР КОГДА Поле = NULL ТОГДА 0 ИНАЧЕ 1 КОНЕЦВЫБОР КОГДА Поле Есть Null ТОГДА 0 ИНАЧЕ 1 КОНЕЦА программерам очень рекомендую книгу Хрусталевой Е.Ю. "Разработка сложных отчетов в 1С Предприятии 8. Система компоновки данных". Не ленитесь, там таких "откровений" полкниги, а вторые полкниги - как это все реализуется программно.
Не могу не поделиться!
Половину дня сидел думал как в СКД представить дату в виде HH:mm:ss, при условии, что часов больше 24. СКД хоть убей ставит следующий день и часы новых суток.
Так, например, 30 часов в вышеозначенном формате выглядит так: 06:00:00. Попытка вычислять и собирать часы минуты секунды как текст ни к чему путному не привела.
И тут:
Хрусталёва "разработка сложных отчетов" страница 138 . Перефразирую: "В пользовательских полях и в выражениях представления можно использовать функции из общего модуля. Для этого они должны быть объявлены как экспортные". ДА! эта фраза должна быть первой строкой в учебниках по СКД!
Сумма([Сумма продажи]) / Сумма(Количество)
А лучше так
Выбор когда Сумма(Количество) = 0 Тогда 0 Иначе Сумма([Сумма продажи]) / Сумма(Количество) Конец
Подскажите, пожалуйста, возможно ли в пользовательском поле выполнить преобразование текстовой строки в число для выполнения арифметической операции?
Если точнее - номенклатура учитывается в штуках, но в комментарии каждой номенклатуры проставлен объем. Необходимо в пользовательском поле отчета проставить формулу: количество номенклатуры из документа * на объем из комментария к исходной номенклатуры
[Номенклатура.Комментарий] * Количество или Число([Номенклатура.Комментарий]) * Количество -не проходит.
Но можно, используя в компоновке данных, в Вычисляемых полях используя внешнюю функцию получить нужное значение.
Еще вариант использовать Свойства справочника, т.е. создать к примеру для Номенклатуры свойство Объем с типом число. Вот к нему обращаться.
У хрусталевой это не описано, найдено методом тыка
Образно примерно так:
Среднее начисление = ПодразделениеОрганизации.Сумма/ ПодразделениеОрганизации.КоличествоСотрудников
Образно примерно так:
Среднее начисление = ПодразделениеОрганизации.Сумма/ ПодразделениеОрганизации.КоличествоСотрудников
в полях можно использовать теже выражения что в запросе
Часто ещё округление необходимо, добавлю пример типа:
Выбор
Когда [Начальный остаток] + Приход <> 0
Тогда Выразить(Расход / ([Начальный остаток] + Приход) * 100, "ЧИСЛО(3, 0)")
Иначе 0
КонецВ пользовательском поле -> формула ->[Оклад, тарифная ставка]/[Cтавка]
Только берется первая "Оклад, тарифная ставка", которая имеет строковой тип
Ошибка: Отчет не сформирован. Неверные параметры "/".
Как указать в пользовательском поле брать ресурс, если 2 поля с одинаковым названием?
К параметрам обращаться нужно через слово Параметры, затем точка и как ты видишь название параметра в режиме предприятие. Если название параметра состоит из нескольких слов - то его нужно взять в квадратные скобки.
Вот еще нормальная статья
Выбор Когда [Номенклатура] В ИЕРАРХИИ ( [Параметры.Аква ЛП] ) Тогда Выручка Иначе 0 КонецОшибка при вызове метода контекста (УстановитьПредставлениеВыражений)
{mngbase/dcsexpsuserfield.lf(8)}:Data.SetExpressionsPresentation(DetailRecordExpressionPresentation, TotalRecordExpressionPresentation);
по причине:
Ожидается ключевое слово "Тогда"
Если на вскидку такое или в запросе вычислять или попробовать СКД - Ресурс
Среднее(Выбор
Когда Количество > 0
Тогда 1
Иначе 0
Конец) * 100 / [Номер по порядку], "ЧДЦ=0")Но если загнать получение норма дней в функцию общего модуля, то к ней можно обратиться из Вычисляемого поля.
т.е. отчет придется сделать внешним.
Детальные записи:
Выбор
Когда [Валюта.Цифровой код] = "643"
Тогда Сумма
Иначе 0
КонецИтоговые записи:
Сумма(Выбор
Когда [Валюта.Цифровой код] = "643"
Тогда [Документ.Сумма]
Иначе 0
Конец)Выбор
Когда [Хозяйственная операция] = Перечисление.ХозяйственныеОперации.ВозвратТоваровОтКлиента
Тогда -1 * Сумма
Иначе Сумма
Конецвыдаст ошибку что Перечисление пол не найдено
Имеется таблица: по строкам Наименования товаров, в колонке Количество. По колонке в качестве ресурса Факт.
Добавил еще одну строку в виде пользовательского поля-выражения Остаток, который должен рассчитываться как разница между ресурсами План и Факт.
Как настроить правильно формулу для поля-выражения "Остаток"?
Подскажите, пожалуйста, как настроить пользовательские поля в Трудовом договоре, чтобы автоматически заполнялись следующие данные:
1. время начало работы (смены):
2. время окончания работы (смены):
3. время перерыва в работе для отдыха и питания:
Есть документ в нем табличная часть, в таблице допустим есть колонка номенклатура в которой 10 фруктов. И таких 5 документов.
Вывожу отчёт, нужен отбор: если в документе в таблице хотя бы 1 раз встречается ЯБЛОКО, то вывести документ в отчет.
Допустим у меня в 2х документах яблоки есть, а в трёх нет.
Добавляю пользовательское поле:
ВЫБОР КОГДА документ.таблица.номенклатура= "яблоки" ТОГДА найдено
КОНЕЦ
Если яблоки стоят в начале, то отбор работает, яблоки в конце и середине не ищет. Такое ощущение что запрос не видит что в таблице есть несколько номенклатур.
КОЛИЧЕСТВО (ВЫБОР КОГДА документ.таблица.номенклатура= "яблоки" ТОГДА найдено
КОНЕЦ) - так тоже не работает, думала найду количество яблок и если их >0 то смогу отобрать документы таким образом, но колонка не выводится в отчёт вообще.
Кто-то сталкивался с таким?
ВЫБОР КОГДА документ.таблица.номенклатура ПОДОБНО "%яблоки%" ТОГДАПодтягивайте мат.часть:
Вы пробовали найти значение в таблице документа через пользовательское поле? Получилось? Поделитесь опытом, пожалуйста, если да.
Если в списке Яванская груша, Ятоба и Яблоки.
То он найдет "Яблоки"? Вот сейчас не ищет, т.к. яблоко не первое в списке.
Но это только в пользовательском поле (( в коде нормально запрос работает.
(81)
вы определитесь как делать отбор по части слова или обратится к табличной части
Отбор это выше.
А табличной части нужно с начало сформировать запрос к Табличной части.
И если задаете такие вопросы то темболее учите/читайте теорию. А как минимум книгу по СКД.
Как в ПОЛЬЗОВАТЕЛЬСКОМ ПОЛЕ (не СКД ИЛИ ДРУГИМ СПОСОБОМ) определить, что в таблице документа есть яблоки. В документе есть яблоки? = Да/Нет. Вывести пользовательское поле в отчёт.
Что вы мануалами тыкаете. Вопрос же простой, нет?)))
Вы хоть попробуйте сами, ради интереса - удивление обеспеченно)
(83)
Вы можете заказать платную консультацию или разработку у автора. Будет создан приватный заказ на «Бирже заказов» для автора.
№ 97245
Создание 07.11.11 14:13
Обновление 10.11.11 15:19
Просмотры 338182
Загрузки 0
Рейтинг
266
Комментарии 86
Код открыт Не указано
Рубрики СКД
Кому Разработчик
Тип файла Нет файла
Платформа 1С:Предприятие 8
Конфигурация 1C:Бухгалтерия
Операционная система Не имеет значения
Страна Россия
Отрасль Не имеет значения
Налоги Не имеет значения
Вид учета Не имеет значения
Доступ к файлу Бесплатно (free)