Какого вида может быть создано пользовательское поле 1с
В данной статье разберем механизм работы пользовательских полей в системе компоновки данных. Вы можете создать новое пользовательское поле в отчете и запрограммировать в нём собственный алгоритм вывода данных. Название «пользовательское» у него тоже появилось не случайно. Предполагается, что работать с ним будет именно пользователь. Почему пользователь? Потому что эти поля доступны в настройках отчета, то есть Вам не нужно снимать с поддержки конфигурацию и даже не нужно иметь доступ в конфигуратор, чтобы доработать типовой отчет. Этот функционал доступен из пользовательского режима.
К слову, аналогичный функционал создан и для разработчиков, это – вычисляемые поля в отчете. Техническое отличие вычисляемых полей состоит только в том, что в их выражениях можно использовать собственные функции, написанные на языке программирования. Однако на них подробнее остановимся в будущих статьях, здесь же речь пойдет именно о пользовательских полях в 1С.
2. Доработка отчета "Ведомость расчетов с клиентами"
Отработаем следующий кейс: директор требует в типовой отчет ERP «Ведомость расчетов с клиентами» добавить дополнительное поле, которое явно бы указывало, кто должник: мы или партнер. Директор – человек занятой и во все эти цифры вникать времени не имеет. Задачу поставили руководителю отдела продаж. Штатного программиста в организации нет, доступа в конфигуратор также нет, платные работы директор не согласует, а результат нужен через час.
Рис. 1 Пользовательское поле в отчете "Ведомость расчетов с клиентами"
На самом деле уложиться в срок вполне реально. Приступаем.
Проваливаемся в «Продвинутые настройки отчета»
Рис. 2 Продвинутые настройки отчета для добавления пользовательского поля в 1С
Добавляем новое пользовательское поле в СКД, тут два варианта «Выбор» и «Выражение».
Поле выбор – специализированный механизм, работа с ним интуитивно понятна, но круг задач ограничивается выводом значения по заданному условию.
Поле выражение – универсальный механизм, как правило более трудоемкий и требующий больших знаний, однако способный решить гораздо больший круг задач.
Рис. 3 Изменение варианта отчета "Ведомость расчета с клиентами"
Наше поле должно сравнить задолженности и вывести нужное значение. Поле "Выбор" отлично справится с данной задачей, используем его.
В заголовке поля можно использовать пробелы. Добавляем отбор, проваливаемся в выражение.
Переносим долг клиента в отбор, теперь его можно сравнить с любым значением, а если наступить на значение и кликнуть правой кнопкой мышки, появится меню, в котором можно включить сравнение с другим полем.
Рис. 4 Сравнение полей в отчете "Ведомость расчетов с клиентами"
В значении выбираем "Наш долг". Отбор готов – завершаем редактирование условия.
Рис. 5 Завершение редактирования пользовательского поля в отчете
Теперь, если заданное условие будет выполняться, значением поля будет единица (это тоже можно использовать, например, при подсчете должников). Представление – это строка. Если представление не заполнено, в отчет будет выводиться значение поля. Аналогично настроим ситуацию, где должен выводиться маячок о нашей задолженности, только с учебной целью: настроим вывод надписи "Наш" прямо в значении.
Рис. 6 Редактирование пользовательского поля в 1С
В отборе действия аналогичные, только долг клиента теперь будет меньше нашего. Теперь провалимся в значение и видим: типом может быть не только число, но и строка, дата, галочка, а если выбрать тип "поле компоновки", то значением пользовательского поля может быть любое другое поле отчета. Нам нужна строка – выбираем, и теперь можем вписать слово "Наш" в значении.
Рис. 7 Редактирование пользовательского поля СКД
Пользовательское поле в СКД готово, нажимаем «Ок».
Рис. 8 Пользовательского поле в СКД готово
Теперь пользовательское поле в 1С СКД появилось в доступных полях, выводим его в отчет.
Рис. 9 Выводим пользовательское поле в отчет
Сохраним полученный вариант.
Рис. 10 Ведомость расчетов с клиентами с пользовательским полем
В название варианта добавим информацию об особенностях отчета и откроем доступность всем пользователям.
Рис. 11 Открытие доступа пользовательского поля в отчете всем пользователям
Рис. 12 Новая версия Ведомости расчетов с клиентами
Директор остался доволен, наградил выходным 31 декабря, но, как это часто бывает, главный бухгалтер Марья Ивановна была свидетелем Вашего триумфа и нам прилетает новый кейс.
3. Доработка поля "Валюта"
Необходимо в поле валюта добавить код этой валюты в скобочках. Валют много, с кодами им работать удобнее, а скобочки – это красиво.
Казалось бы, что может быть проще. Идем в "Продвинутые настройки", проваливаемся в группировку с валютой, находим её код, добавляем реквизит. Согласно настроек по умолчанию реквизит поля будет вместе с владельцем.
Рис. 13 Редактирование поля "Валюта"
Рис. 14 Результат редактирования поля "Валюта"
Сдаем главбуху, но Марья Ивановна непреклонна. Без скобочек – некрасиво, запятую – убрать, и пусть написано будет по-русски. Переделать!
Вариант решения мы нашли, это – пользовательское поле в СКД. Начинаем с размышлений, какой вариант пользовательского поля в отчете взять? Тут мы ничего не сравниваем, и нам потребуется написать выражение, которые не умеет поле "Выбор", поэтому используем поле "Выражение".
Наберем следующее выражение:
[Валюта.Наименование валюты] + " ( " + [Валюта.Цифровой код] + " ) "
Здесь мы в квадратных скобках прописываем доступные поля или их реквизиты, в кавычках – любые символы (не забывайте про пробелы), а плюсиками мы их всех соединяем в единое целое.
На ранних релизах платформы система не может перевести код валюты в строку и потребуется дополнить выражение командой СТРОКА — вот так :
[Валюта.Наименование валюты] + " ( " + СТРОКА([Валюта.Цифровой код]) + " ) "
Нижнее окошко (Выражение итоговых записей) требуется заполнить, если хотим сделать поле реквизитом, в нашем кейсе этого не требуется, но имейте это ввиду – пригодится.
Рис. 15 Редактирование пользовательского поля "Выражение"
Поле мы создали и можем его вставить в группировку, получив такой результат:
Рис. 16 Результат редактирования пользовательского поля в СКД
Но нам же нужно подменить валюту на наше самописное поле.
Обращаю внимание, просто заменить поле "Валюта" нельзя, даже если при тестировании отчет будет работать, нет гарантий, что при работе обменов или переносе данных из другой программы отчет не сломается. Поле "Валюта2" – это ссылка, а в пользовательском поле используется наименование и код, что может привести к дублям или ошибке.
Надежнее не заменять ссылку на "Валюту", а заменить ее представление. Я не зря упомянул функционал выражения-представления из конфигуратора. Фактически, в нашем кейсе мы движемся тем же путем. У нас есть ссылка – "Валюта", мы создали её представление –"Наименование валюты для бухгалтерии", осталось уговорить программу отображать данное представление валюты в отчете.
Для этого воспользуемся закладкой "Условное оформление". Найдите там параметр "Текст". Проваливаемся, выбираем "Поле компоновки данных", находим наше пользовательское поле для бухгалтерии.
Рис. 17 Поле компоновки данных
Картинка получилась такая
Рис. 18 Результат замены поля "Валюта"
Переходим на закладку "Оформляемые поля" и указываем, что данное представление мы задали для поля "Валюта".
Рис. 19 Представление для поля "Валюта"
Завершаем редактирование. Проверяем отчет, сохраняем вариант.
Рис. 20 Конечный результат в отчете "Ведомость расчетов с клиентами"
Специалист компании «Кодерлайн»
Вас могут заинтересовать следующие статьи:
94 [PROP_CODE] => TAGS2 [TITLE] => Вас могут заинтересовать следующие семинары: ) --> 95 [PROP_CODE] => TAGS [TITLE] => Вас могут заинтересовать следующие вебинары: ) -->
Вас могут заинтересовать следующие вебинары:
Форма - это интерфейсный механизм. Формы необходимы для отображения и редактирования информации, содержащейся в базе данных. Формы могут быть обычные и управляемые; по умолчанию в приложениях 1С:8.3 формы только управляемые, но если включена работа в режиме совместимости, то доступны и обычные формы:
Управляемые формы отрисовываются платформой; разработчик лишь дает некоторые указания платформе, как расположить элементы. Доступны в режиме тонкого, толстого, веб-клиентов:
Вопрос 10.01 экзамена 1С:Профессионал по платформе. Какие виды форм позволяет использовать Платформа 8.3?
- Всегда возможно совместное использование обычных и управляемых форм
- Обычные формы только в режиме совместимости с 8.1
- Управляемые формы только в режиме управляемого приложения
- Возможность использования обычных и управляемых форм зависит от настроек конфигурации и клиентского приложения
- в толстом клиенте
- в тонком клиенте
- в веб-клиенте
- верные варианты 1 и 2
- верны все варианты в зависимости от настроек конфигурации
- в толстом клиенте в режиме обычного приложения
- в толстом клиенте в режиме управляемого приложения
- в тонком клиенте
- в веб-клиенте
- верные варианты 1 и 2
- верны все варианты в зависимости от настроек конфигурации
Вопрос 10.04 экзамена 1С:Профессионал по платформе. Как реализован механизм автопреобразования обычных форм в управляемые и обратно
- С помощью механизма ввода на основании
- С помощью изменения свойства формы "Тип формы"
- С помощью специальной программы конвертация форм
- Автопреобразование не поддерживается
Вопрос 10.30 экзамена 1С:Профессионал по платформе. Возможность системы создания "налету" форм по умолчанию в режиме "1С:Предприятие".
- следует использовать только в тех случаях, когда обращения к данной форме редки, поскольку "притормаживает" работу системы
- следует использовать во всех случаях, когда не требуется выполнение программных действий в форме, и нет особых требований по отношению внешнего вида формы объекта со стороны пользователя
- следует использовать только в тех случаях, когда форму необходимо исключить из состава основных
- следует использовать только для объектов, обладающих простой структурой
Вопрос 10.43 экзамена 1С:Профессионал по платформе. Сколько может быть создано форм, подчиненных справочнику "Номенклатура"?
- Произвольное количество
- Форма элемента, форма группы (для иерархических справочников) и произвольное количество форм списка
- Только пять (по числу основных форм)
Вопрос 10.77 экзамена 1С:Профессионал по платформе. При обращении к форме "извне" для считывания данных.
Пользовательские поля в СКД - это пользовательские поля в настройках отчета. Они позволяют в пользовательском режиме добавлять новые поля, которые будут вычисляться по некоторому заданному алгоритму (и группироваться) или будут показывать определенные данные в зависимости от ваших условий отбора. Это позволяет модифицировать отчеты на «лету»
Разберем их по порядку на тестовом примере.
Формирование поля выбора.
Допустим, у нас есть отчет показывающий срок работы сотрудников в компании, рис 01.
Кадровику не интересно видеть количество дней отработанных сотрудником а ему интересно видеть пройден сотрудником испытательный срок (допустим 40-к дней) или нет.
Заходим в отчет->Настройки->Пользовательские поля->Новое поле выбора. Рис 02
В открывшейся форме указываем заголовок «Пройден испытательный срок» и добавляем новую строку вариантов. Открываем колонку отбор и добавляем вариант отбора. Причем мы можем добавлять как группы условий, так и единичное условие. Рис 03
Выбираем поле, на основании которого мы будем определять пройден испытательный срок или нет, это поле «Период работы», указываем «Вид сравнения» больше 40 и заканчиваем редактирование отбора.
В форме «Пользовательское поле выбор», в колонке «Значение» выбираем тип «Булево» и указываем ее значение «Да». В нашей ситуации колонки «Значение» и «Представление» равнозначны. Рис 04
Повторяем предыдущие шаги для создания варианта отбора, когда значение «Период работы» , меньше или равен 40-ка дней. Рис 06
Теперь осталось добавить наше созданное поле в отчет, для этого переходим на закладку «Выбранные поля» и в группировку «Пользовательские поля» и добавляем наше поле в список выбранных полей. Рис 05
Вот итоговый отчет. Рис 07
Теперь необходимо сохранить наши изменения рис 08
Формирование полей выражения
Работая над этой заметкой, я наткнулся на аналогичную статью в которой подробно разбирается формирование выражений.
Хочется дополнительно упомянуть, что все арифметические выражения можно применять как к полю «Выражение детальные записи», именно этот случай описывает автор, НО и к полю «Выражение итоговые записи». Что позволяет использовать для подсчета итогов в разнообразных вариациях.
Дополнение готовых отчетов своими колонками.
В отчета сделанных с помощью "Схемы компоновки данных" из пользовательского режима можно добавлять свои Поля, которые будет выводиться при формировании.
В данных полях позволительно применять арифметические действа.
Открываем "Настройки. " и переходим на закладку "Пользовательские настройки".
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
Конец
Конец
Конец
Конец
Рассмотрим возможность добавления пользовательских полей в схему компоновки данных отчета 1С 8. Для примера добавим поле 1С 8.3 “Цена” в типовой отчет “Валовая прибыль предприятия” и разместим его между колонками “Количество” и “Выручка” в 1С.
Рис. 1 Типовой отчет “Валовая прибыль предприятия”
Нам нужно нажать на кнопку “Еще”, перейти на закладку “Прочее” и выбрать пункт “Изменить вариант отчета”.
Переходим на закладку “Пользовательские поля”, нажимаем кнопку “Добавить”, выбираем пункт “Новое поле выражение”
Рис. 2 Добавление нового поля в отчет
2. Как избежать ошибки деления на 0
В поле “Заголовок” указываем название нашей колонки. Оно будет выводится в отчет. В поле “Выражение детальных записей” укажем следующий код 1С 8.3:
КОГДА Количество <> 0
Эта конструкция нужна, чтобы избежать ошибки деления на 0. Разберем ее подробнее.
“КОГДА Количество <> 0 ТОГДА” – проверяем поле “Количество” на неравенство нулю. Если условие выполняется (“Количество” не равно нулю), то выполняется конструкция “Выручка/Количество”. Если же условие не выполняется (“Количество” равно нулю), то делаем поле “Количество” равным нулю – “ИНАЧЕ 0”.
В общем виде эта конструкция выглядит так:
Аналогичным образом можно добавить любую другую формула в 1С для расчета пользовательского поля. Важно помнить, что обращение к полям отчета осуществляется по заголовкам колонок отчета 1С 8.
Копируем данную конструкцию в поле “Выражение итоговых записей”.
Рис. 3 Код для избегания ошибки деления на ноль
Сохраняем созданное поле, нажав на кнопку “Ок”. Видим, что наше поле появилось на вкладке “Пользовательские поля”.
Рис. 4 Вкладка “Пользовательские поля”
Настроим округление поля 1С 8.3 Цена до двух знаков после запятой. Переходим на закладку Условное оформление 1С и нажимаем кнопку “Добавить”
Рис. 5 Настройка округления данных в поле
На закладке Оформление находим параметр “Формат”. Устанавливаем флаг использования, нажимаем на кнопку выбора.
Рис. 6 Редактирование элемента условного оформления
На закладке “Число” устанавливаем флаг использования на поле “Точность”, задаем нужное количество знаков после запятой. Ниже можно посмотреть пример, как будет выглядеть наше число после применения настроек 1С 8.3. Сохраняем изменения, нажав на кнопку “ОК”.
Рис. 7 Результат проведения настроек округления
Для параметра “Формат” установилось нужное нам значение
Рис. 8 Для параметра формат было установлено необходимое значение
Перейдем на закладку “Оформляемые поля”. Найдем в доступных полях группировку “Пользовательские поля”, раскроем ее и увидим созданное нами поле “Цена”. Выбираем его двойным кликом или перенеся его мышкой в список выбранных полей.
Рис. 9 Перенос созданного поля в список выбранных
Видим, что наша настройка формата добавилась в таблицу на вкладке “Условное оформление”.
Рис. 10 Настройка формата добавлена в таблицу
Осталось разместить колонку “Цена” между колонками “Количество” и “Выручка” в 1С. Для этого переходим на закладку “Поля”. В списке доступных полей находим группировку “Пользовательские поля”, раскроем ее и увидим созданное нами поле “Цена”. Переносим его мышкой между колонками “Количество” и Выручка в 1С.
Важно обратить внимание, что в отчет 1С 8 выводятся только колонки, у которых стоит флаг использования. Поэтому неважно, что колонка “Цена” стоит перед колонками “Вес (нетто)” и “Объем”. Флаг использование у них не стоит, в отчет 1С 8 они выведены не будут.
Нажимаем кнопку “Завершить редактирование”.
Рис. 11 Перенос нового поля и завершение редактирования отчета в 1С
Переформируем отчет 1С 8 и посмотрим на результат
Рис. 12 Новый вид отчета “Валовая прибыль предприятия”
Специалист компании «Кодерлайн»
Вас могут заинтересовать следующие статьи:
94 [PROP_CODE] => TAGS2 [TITLE] => Вас могут заинтересовать следующие семинары: ) --> 95 [PROP_CODE] => TAGS [TITLE] => Вас могут заинтересовать следующие вебинары: ) -->
Вас могут заинтересовать следующие вебинары:
Читайте также: