В этом ролике специалист организации Profession Store Павел Шемякин создаст отчет на СКД с гибкой нумерацией колонок.
В процессе создания отчета, мы разберем следующие моменты:
- Работа с характеристиками в СКД
- Постобработка отчета на СКД: программное изменение результата вывода отчета.
Изучайте программирование в 1С в месте с моей книги «Программировать в 1С за 11 шагов»
- Книга написана понятным и простым языком — для новичка.
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Научитесь понимать архитектуру 1С;
- Станете писать код на языке 1С;
- Освоите основные приемы программирования;
- Закрепите полученные знания при помощи задачника;
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
- Очень доступный и понятный язык изложения
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Поймете идеологию управляемого приложения 1С
- Узнаете, как разрабатывать управляемое приложение;
- Научитесь разрабатывать управляемые формы 1С;
- Сможете работать с основными и нужными элементами управляемых форм
- Программирование под управляемым приложением станет понятным
Промо-код на скидку в 15% — 48PVXHeYu
Если Вам помог этот урок решить какую-нибудь проблему, понравился или оказался полезен, то Вы можете поддержать мой проект, перечислив любую сумму:
можно оплатить вручную:
Яндекс.Деньги — 410012882996301
Web Money — R955262494655
Рассмотрим задачу, когда колонку СКД нужно выводить в зависимости от выполнения какого-то условия.
Рассмотрим на примере внешнего отчета (без формы отчета, только СКД), условие вывода колонки задано в параметре СКД с типом Булево. Все доступные параметры выведены на форму отчета с помощью свойства параметров Включать в пользовательские настройки (правой кнопкой мышки по параметру Свойства элемента пользовательских настроек) (рис. 1):
Рис. 1. Свойства параметра отчета
В списке выбранных полей отчета присутствует колонка Себестоимость, выводом которой нужно управлять (рис. 2):
Рис. 2. Выбранные поля отчета
У параметра Себестоимость, отвечающего за вывод колонки отчета СКД Себестоимость, на закладке Параметры в СКД задаем свойству Использование значение Всегда, чтобы пользователи выбирали только значение параметра и не могли управлять использованием параметра (рис. 3):
Рис. 3. Свойство параметра Использование
Далее в модуле объекта отчета определяем процедуру ПриКомпоновкеРезультата(), в функции КолонкаСебестоимостьДоступна() прописываем возможные дополнительные условия вывода колонки:
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
Для Каждого ПараметрОтчета Из ПараметрыОтчета Цикл
Если ТипЗнч(ПараметрОтчета) = Тип("ЗначениеПараметраНастроекКомпоновкиДанных") И ПараметрОтчета.Параметр = Новый ПараметрКомпоновкиДанных("Себестоимость") Тогда
Если НЕ (КолонкаСебестоимостьДоступна() И ПараметрОтчета.Значение) Тогда
//убирем из выводимых колонок
Для Каждого ЭлКолонки Из КомпоновщикНастроек.Настройки.Выбор.Элементы Цикл
Если ЭлКолонки.Поле = Новый ПолеКомпоновкиДанных("Себестоимость") Тогда
//добавляем, если нет
Для Каждого ЭлКолонки Из КомпоновщикНастроек.Настройки.Выбор.Элементы Цикл
Если ЭлКолонки.Поле = Новый ПолеКомпоновкиДанных("Себестоимость") Тогда
Задача
. достаточно простая. Нужно создать отчет на СКД, который выводит остатки по номенклатуре в разрезе складов. Рассмотрим два варианта решения.
Первый будет осуществлен стандартными возможностями СКД без единой строчки кода. Второй вариант будет усложнен дополнительным условием при выводе отчета. Но обо всем по порядку.
Стандартные возможности
Система компоновки данных имеет стандартные возможности по фиксации колонок в отчете. Настройки фиксации как таковые отсутствуют, но мы можем влиять на нее через изменение структуры отчета. Например, если нам нужно в отчете, скриншот которого представлен выше, сделать фиксацию для колонки "Номенклатура", то достаточно настроить структуру вывода следующим образом:
Тогда при формировании отчета мы получим необходимый результат. Фиксация будет происходить для всех полей, которые находятся в разделе "Строки".
Таким образом, без единой строчки кода, используя только стандартные возможности СКД, мы решили задачу с фиксацией колонки в отчете. Но что, если нам нужно зафиксировать не только первую колонку "Номенклатура", но и первую колонку склада (в нашем случае это "Главный склад"). Стандартные возможности СКД тут не помогут, пойдем другим путем.
Другой путь
Используя отчет из предыдущей части статьи зафиксируем первую колонку "Склад" в выводимом табличном документе. Для этого программно сформируем отчет в обработке "ПриКомпоновкеРезультата" модуля объекта отчета. Листинг этой процедуры-обработчика представлен на следующем листинге:
Чтобы провести фиксацию первой колонки выводимого склада, выполним вывод отчета в табличный документа. Затем установим фиксацию в табличном документе слева в значение 3 (3 ячейки).
Почему фиксация имеет значение именно 3? Обратимся к следующему скриншоту:
И так, задача решена. Конечно, не универсальным образом, но пример изначально планировался простым.
На изображении показано количество ячеек от левого края, для которых нужно включить фиксацию.
В результате формирования отчета мы увидим следующий результат:
Заключение
В предыдущих статьях мы не раз изменяли табличный документ после работы процессора вывода компоновки данных. Этот пример еще раз показывает, что, работая с программным формированием отчета на СКД, мы можем создать отчет практически любой сложности, с любым внешним видом.