Содержание:
1. Что такое пользовательское поле в отчете?
2. Доработка отчета "Ведомость расчетов с клиентами"
1. Что такое пользовательское поле в отчете?
В данной статье разберем механизм работы пользовательских полей в системе компоновки данных. Вы можете создать новое пользовательское поле в отчете и запрограммировать в нём собственный алгоритм вывода данных. Название «пользовательское» у него тоже появилось не случайно. Предполагается, что работать с ним будет именно пользователь. Почему пользователь? Потому что эти поля доступны в настройках отчета, то есть Вам не нужно снимать с поддержки конфигурацию и даже не нужно иметь доступ в конфигуратор, чтобы доработать типовой отчет. Этот функционал доступен из пользовательского режима.
К слову, аналогичный функционал создан и для разработчиков, это – вычисляемые поля в отчете. Техническое отличие вычисляемых полей состоит только в том, что в их выражениях можно использовать собственные функции, написанные на языке программирования. Однако на них подробнее остановимся в будущих статьях, здесь же речь пойдет именно о пользовательских полях в 1С.
2. Доработка отчета "Ведомость расчетов с клиентами"
Отработаем следующий кейс: директор требует в типовой отчет ERP «Ведомость расчетов с клиентами» добавить дополнительное поле, которое явно бы указывало, кто должник: мы или партнер. Директор – человек занятой и во все эти цифры вникать времени не имеет. Задачу поставили руководителю отдела продаж. Штатного программиста в организации нет, доступа в конфигуратор также нет, платные работы директор не согласует, а результат нужен через час.
Рис. 1 Пользовательское поле в отчете "Ведомость расчетов с клиентами"
На самом деле уложиться в срок вполне реально. Приступаем.
Проваливаемся в «Продвинутые настройки отчета»
Рис. 2 Продвинутые настройки отчета для добавления пользовательского поля в 1С
Добавляем новое пользовательское поле в СКД, тут два варианта «Выбор» и «Выражение».
Поле выбор – специализированный механизм, работа с ним интуитивно понятна, но круг задач ограничивается выводом значения по заданному условию.
Поле выражение – универсальный механизм, как правило более трудоемкий и требующий больших знаний, однако способный решить гораздо больший круг задач.
Рис. 3 Изменение варианта отчета "Ведомость расчета с клиентами"
Наше поле должно сравнить задолженности и вывести нужное значение. Поле "Выбор" отлично справится с данной задачей, используем его.
В заголовке поля можно использовать пробелы. Добавляем отбор, проваливаемся в выражение.
Переносим долг клиента в отбор, теперь его можно сравнить с любым значением, а если наступить на значение и кликнуть правой кнопкой мышки, появится меню, в котором можно включить сравнение с другим полем.
Рис. 4 Сравнение полей в отчете "Ведомость расчетов с клиентами"
В значении выбираем "Наш долг". Отбор готов – завершаем редактирование условия.
Рис. 5 Завершение редактирования пользовательского поля в отчете
Теперь, если заданное условие будет выполняться, значением поля будет единица (это тоже можно использовать, например, при подсчете должников). Представление – это строка. Если представление не заполнено, в отчет будет выводиться значение поля. Аналогично настроим ситуацию, где должен выводиться маячок о нашей задолженности, только с учебной целью: настроим вывод надписи "Наш" прямо в значении.
Рис. 6 Редактирование пользовательского поля в 1С
В отборе действия аналогичные, только долг клиента теперь будет меньше нашего. Теперь провалимся в значение и видим: типом может быть не только число, но и строка, дата, галочка, а если выбрать тип "поле компоновки", то значением пользовательского поля может быть любое другое поле отчета. Нам нужна строка – выбираем, и теперь можем вписать слово "Наш" в значении.
Рис. 7 Редактирование пользовательского поля СКД
Пользовательское поле в СКД готово, нажимаем «Ок».
Рис. 8 Пользовательского поле в СКД готово
Теперь пользовательское поле в 1С СКД появилось в доступных полях, выводим его в отчет.
Рис. 9 Выводим пользовательское поле в отчет
Задача выполнена.
Сохраним полученный вариант.
Рис. 10 Ведомость расчетов с клиентами с пользовательским полем
В название варианта добавим информацию об особенностях отчета и откроем доступность всем пользователям.
Рис. 11 Открытие доступа пользовательского поля в отчете всем пользователям
Рис. 12 Новая версия Ведомости расчетов с клиентами
Директор остался доволен, наградил выходным 31 декабря, но, как это часто бывает, главный бухгалтер Марья Ивановна была свидетелем Вашего триумфа и нам прилетает новый кейс.
3. Доработка поля "Валюта"
Необходимо в поле валюта добавить код этой валюты в скобочках. Валют много, с кодами им работать удобнее, а скобочки – это красиво.
Казалось бы, что может быть проще. Идем в "Продвинутые настройки", проваливаемся в группировку с валютой, находим её код, добавляем реквизит. Согласно настроек по умолчанию реквизит поля будет вместе с владельцем.
Рис. 13 Редактирование поля "Валюта"
Рис. 14 Результат редактирования поля "Валюта"
Сдаем главбуху, но Марья Ивановна непреклонна. Без скобочек – некрасиво, запятую – убрать, и пусть написано будет по-русски. Переделать!
Замечу, что для выполнения данной задачи в Системе компоновки данных в 1С есть выражение-представление, но этот функционал находится в конфигураторе, а править типовой отчет нам никто не разрешит, делать же расширения или внешний отчет дублем к этому мы можем, если других вариантов нет и, если есть доступ к конфигуратору.
Вариант решения мы нашли, это – пользовательское поле в СКД. Начинаем с размышлений, какой вариант пользовательского поля в отчете взять? Тут мы ничего не сравниваем, и нам потребуется написать выражение, которые не умеет поле "Выбор", поэтому используем поле "Выражение".
Наберем следующее выражение:
[Валюта.Наименование валюты] + " ( " + [Валюта.Цифровой код] + " ) "
Здесь мы в квадратных скобках прописываем доступные поля или их реквизиты, в кавычках – любые символы (не забывайте про пробелы), а плюсиками мы их всех соединяем в единое целое.
На ранних релизах платформы система не может перевести код валюты в строку и потребуется дополнить выражение командой СТРОКА — вот так :
[Валюта.Наименование валюты] + " ( " + СТРОКА([Валюта.Цифровой код]) + " ) "
Нижнее окошко (Выражение итоговых записей) требуется заполнить, если хотим сделать поле реквизитом, в нашем кейсе этого не требуется, но имейте это ввиду – пригодится.
Рис. 15 Редактирование пользовательского поля "Выражение"
Поле мы создали и можем его вставить в группировку, получив такой результат:
Рис. 16 Результат редактирования пользовательского поля в СКД
Но нам же нужно подменить валюту на наше самописное поле.
Обращаю внимание, просто заменить поле "Валюта" нельзя, даже если при тестировании отчет будет работать, нет гарантий, что при работе обменов или переносе данных из другой программы отчет не сломается. Поле "Валюта2" – это ссылка, а в пользовательском поле используется наименование и код, что может привести к дублям или ошибке.
Надежнее не заменять ссылку на "Валюту", а заменить ее представление. Я не зря упомянул функционал выражения-представления из конфигуратора. Фактически, в нашем кейсе мы движемся тем же путем. У нас есть ссылка – "Валюта", мы создали её представление –"Наименование валюты для бухгалтерии", осталось уговорить программу отображать данное представление валюты в отчете.
Для этого воспользуемся закладкой "Условное оформление". Найдите там параметр "Текст". Проваливаемся, выбираем "Поле компоновки данных", находим наше пользовательское поле для бухгалтерии.
Рис. 17 Поле компоновки данных
Картинка получилась такая
Рис. 18 Результат замены поля "Валюта"
Переходим на закладку "Оформляемые поля" и указываем, что данное представление мы задали для поля "Валюта".
Рис. 19 Представление для поля "Валюта"
Завершаем редактирование. Проверяем отчет, сохраняем вариант.
Рис. 20 Конечный результат в отчете "Ведомость расчетов с клиентами"
Задача выполнена.
Специалист компании «Кодерлайн»
Дмитрий Доронов