1с параметры выбора фиксированный массив

Обновлено: 04.07.2024

При разработке отчета на СКД часто требуется указать связь между параметрами этого отчета. Например если в отчете имеется параметры "Номенклатура" и "Серия", при выборе серии показывать только серии данной номенклатуры. Или нужно отображать в списке выбора элементов справочника "ЗначенияСвойствОбъектов" только значения, принадлежащие определенному элементу плана видов характеристик "ДополнительныеРеквизитыИСведения". Несмотря на то, что в полях и параметрах СКД есть возможность указать параметры выбора и связи параметров выбора, этот механизм не работает (по крайней мере, так обстоит дело в ERP 2.4.9.98).

Можно написать свою форму отчета, разместить на ней элементы отбора и сделать в ней все, что угодно. Но не хотелось бы терять мощные механизмы общей формы "ФормаОтчета" или копипастить их в свой отчет.

Можно модифицировать общую форму "ФормаОтчета" под свои задачи. Но не хотелось бы это делать каждый раз при разработке нового отчетов.

Предлагаю пример решения этой задачи для двух вариантов:

1. Фиксированный параметр выбора для поля "Отбор". В отчете сделан отбор по полю с типом "Справочник.ЗначенияСвойствОбъектов". При выборе значения отбора требуется показать пользователю только элементы с заданным владельцем.

2. Связи параметров выбора для поля "Параметр". В отчете имеется 2 параметра: Номенклатура и Серия. При выборе серии, показывать пользователю только серии выбранной номенклатуры

1. Фиксированный параметр выбора

Создаем отчет (файл ВнешнийОтчет_ФиксированныеПараметрыОтбора.erf).

Если отчет встроен в расширение, то необходимо:

1. Добавить в расширение подсистему ПодключаемыеОтчетыИОбработки

2. Добавить отчет в эту подсистему

3. В модуле менеджера отчета написать код:

В 1С добавить дополнительный реквизит справочника Номенклатура "Раздел комплектации" с типом значений "Дополнительное значение". Указать или сгенерировать имя реквизита, в моем случае это "РазделКомплектации_c7a03c267bb64e0eb58489873f24c25e"

В отчете составляем текст запроса:

Для поля "РазделКомплектации" нужно указать тип значения СправочникСсылка.ЗначенияСвойствОбъектов

На вкладке "Параметры" укажем выражение для параметра "Свойство": ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоРеквизиту("Имя", "РазделКомплектации_c7a03c267bb64e0eb58489873f24c25e", Истина)

Включим отбор по полю "РазделКомплектации" в пользовательские настройки: на вкладке "Настройки", "Отбор" добавими отбор "РазделКомплектации", щелкнем на нем правой кнопкой мыши, "Свойства элементов пользовательских настроек", установим флажок "Включать в пользовательские настройки".

В модуле отчета указываем, что мы перехватываем событие "ПослеЗаполненияПанелиБыстрыхНастроек":
В обработчике этого события нужно найти элемент формы в панели быстрого отбора, в котором пользователь указывает значение отбора "Раздел комплектации". В параметрах выбора этого элемента задаем отбор по владельцу - плану видов характеристик "Раздел комплектации":

2. Связи параметров выбора

Здесь мне уже не получилось обойтись без модификации общей формы "ФормаОтчета". Произошло это потому, что не получилось задать связи параметров выбора в существующих элементах панели быстрых настроек. Я выбрал обходной путь - скрывать существующий элемент формы со значением отбора, и подставлять на его место свой элемент. Связи параметров выбора зависимого элемента (серии) я задаю с данными этого элемента. Я постарался свести изменения ФормыОтчета к минимуму, и сделать их универсальными (их не нужно переписывать при создании другого отчета).

Создаем отчет (файл ВнешнийОтчет_СвязиПараметровВыбора.erf).

Как и в предыдущем примере, если отчет встроен в расширение, то необходимо:

1. Добавить в расширение подсистему ПодключаемыеОтчетыИОбработки

2. Добавить отчет в эту подсистему

3. В модуле менеджера отчета написать:

В отчете составляем текст запроса:

Параметры "Номенклатура" и "Серия" включим в пользовательские настройки (см. выше).

В модуле отчета указываем, что мы перехватываем событие "ПослеЗаполненияПанелиБыстрыхНастроек":
В обработчике этого события:

1. Находим элементы формы - значения параметров "Номенклатура" и "Серия"

2. Добавляем в форму новый реквизит "МойРеквизит_Номенклатура". Добавить элемент формы для этого реквизита.
Элементу формы указать обработчик события "ПриИзменении" (обработчик этого события и будет то единственным изменением общей формы "ФормаОтчета").

3. Скрываем старый элемент формы "Номенклатура".

4. Для элемента формы "Серия" задаем связи параметров выбора.

5. Сохраняем необходимую в дальнейшем информацию в дополнительных свойствах пользовательских настроек компоновщика настроек:

При разработке отчета на СКД часто требуется указать связь между параметрами этого отчета. Например если в отчете имеется параметры "Номенклатура" и "Серия", при выборе серии показывать только серии данной номенклатуры. Или нужно отображать в списке выбора элементов справочника "ЗначенияСвойствОбъектов" только значения, принадлежащие определенному элементу плана видов характеристик "ДополнительныеРеквизитыИСведения". Несмотря на то, что в полях и параметрах СКД есть возможность указать параметры выбора и связи параметров выбора, этот механизм не работает (по крайней мере, так обстоит дело в ERP 2.4.9.98).

Можно написать свою форму отчета, разместить на ней элементы отбора и сделать в ней все, что угодно. Но не хотелось бы терять мощные механизмы общей формы "ФормаОтчета" или копипастить их в свой отчет.

Можно модифицировать общую форму "ФормаОтчета" под свои задачи. Но не хотелось бы это делать каждый раз при разработке нового отчетов.

Предлагаю пример решения этой задачи для двух вариантов:

1. Фиксированный параметр выбора для поля "Отбор". В отчете сделан отбор по полю с типом "Справочник.ЗначенияСвойствОбъектов". При выборе значения отбора требуется показать пользователю только элементы с заданным владельцем.

2. Связи параметров выбора для поля "Параметр". В отчете имеется 2 параметра: Номенклатура и Серия. При выборе серии, показывать пользователю только серии выбранной номенклатуры

1. Фиксированный параметр выбора

Создаем отчет (файл ВнешнийОтчет_ФиксированныеПараметрыОтбора.erf).

Если отчет встроен в расширение, то необходимо:

1. Добавить в расширение подсистему ПодключаемыеОтчетыИОбработки

2. Добавить отчет в эту подсистему

3. В модуле менеджера отчета написать код:

В 1С добавить дополнительный реквизит справочника Номенклатура "Раздел комплектации" с типом значений "Дополнительное значение". Указать или сгенерировать имя реквизита, в моем случае это "РазделКомплектации_c7a03c267bb64e0eb58489873f24c25e"

В отчете составляем текст запроса:

Для поля "РазделКомплектации" нужно указать тип значения СправочникСсылка.ЗначенияСвойствОбъектов

На вкладке "Параметры" укажем выражение для параметра "Свойство": ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоРеквизиту("Имя", "РазделКомплектации_c7a03c267bb64e0eb58489873f24c25e", Истина)

Включим отбор по полю "РазделКомплектации" в пользовательские настройки: на вкладке "Настройки", "Отбор" добавими отбор "РазделКомплектации", щелкнем на нем правой кнопкой мыши, "Свойства элементов пользовательских настроек", установим флажок "Включать в пользовательские настройки".

В модуле отчета указываем, что мы перехватываем событие "ПослеЗаполненияПанелиБыстрыхНастроек":
В обработчике этого события нужно найти элемент формы в панели быстрого отбора, в котором пользователь указывает значение отбора "Раздел комплектации". В параметрах выбора этого элемента задаем отбор по владельцу - плану видов характеристик "Раздел комплектации":

2. Связи параметров выбора

Здесь мне уже не получилось обойтись без модификации общей формы "ФормаОтчета". Произошло это потому, что не получилось задать связи параметров выбора в существующих элементах панели быстрых настроек. Я выбрал обходной путь - скрывать существующий элемент формы со значением отбора, и подставлять на его место свой элемент. Связи параметров выбора зависимого элемента (серии) я задаю с данными этого элемента. Я постарался свести изменения ФормыОтчета к минимуму, и сделать их универсальными (их не нужно переписывать при создании другого отчета).

Создаем отчет (файл ВнешнийОтчет_СвязиПараметровВыбора.erf).

Как и в предыдущем примере, если отчет встроен в расширение, то необходимо:

1. Добавить в расширение подсистему ПодключаемыеОтчетыИОбработки

2. Добавить отчет в эту подсистему

3. В модуле менеджера отчета написать:

В отчете составляем текст запроса:

Параметры "Номенклатура" и "Серия" включим в пользовательские настройки (см. выше).

В модуле отчета указываем, что мы перехватываем событие "ПослеЗаполненияПанелиБыстрыхНастроек":
В обработчике этого события:

1. Находим элементы формы - значения параметров "Номенклатура" и "Серия"

2. Добавляем в форму новый реквизит "МойРеквизит_Номенклатура". Добавить элемент формы для этого реквизита.
Элементу формы указать обработчик события "ПриИзменении" (обработчик этого события и будет то единственным изменением общей формы "ФормаОтчета").

3. Скрываем старый элемент формы "Номенклатура".

4. Для элемента формы "Серия" задаем связи параметров выбора.

5. Сохраняем необходимую в дальнейшем информацию в дополнительных свойствах пользовательских настроек компоновщика настроек:

ФиксированныйМассив, элементами которого могут быть значения перечисленных типов, включая ФиксированныйМассив. ФиксированныйМассив не допускает никаких изменений своего содержимого и может быть сконструирован из объекта типа "Массив";

А если проще, то: Фиксированный массив от того и фиксированный, что не поддается изменению.
Инициализируй массив один раз, помещай в фиксированный и больше не трогай
Код 1C v 8.х

Разместил: E_Migachev  Версии: | 8.x | 8.2 УП |  Дата: 30.11.2013   Прочитано: 25079

Распечатать

Похожие FAQ

Еще в этой же категории

Сравнение двух структур  7
// Сравнение 2-х стурктур // Возвращает структуру с полями которые отличаются и значением из сравниваемой // Если в стСравнимое нет нужного поля,то в результат добавляется поля = Неопределенно // стОсновная, стСравнимое - сравниваемые структуры Массив

Как удалить повторяющиеся элементы массива?  5
Функция УдалитьПовторяющиесяЭлементыМассива(Массив) Экспорт ТекущийИндекс = 0; ВсегоЭлементов = Массив.Количество(); Пока ТекущийИндекс ВсегоЭлементов Цикл Индекс2 = ТекущийИндекс + 1; Пока Индекс2 ВсегоЭлементов Цикл Если Массив = Структура

Преобразовании Структуры в Таблицу Значений  4
//Струтура в ТЗ Функция СтруктураВТЗ(Структр) ТЗ = Новый ТаблицаЗначений; ТЗ.Колонки.Добавить(" Значение" ); ТЗ.Колонки.Добавить(" Описание" ); Для Каждого ТекЭлем из Структр Цикл НовСтр=ТЗ.Добавить(); НовСтр.Значение = ТекЭлем.Ключ; НовСтр Структура

Создать структуру и добавить элементы  3
// Создание структуры СозданнаяСтруктура = Новый Структура; // Создание структуры и добавление элементов СтруктураОтбора = Новый Структура; СтруктураОтбора.Вставить(" Качество" , Качество); СтруктураОтбора.Вставить(" Номенклатура" , Номенкла Массив

Как Свернуть Массив?  2
НовыйМассив = Новый Массив; Соответствие = Новый Соответствие; Для каждого ЭлементМассива Из Массив Цикл Соответствие.Вставить(ЭлементМассива); КонецЦикла; Для каждого КлючИЗначение Из Соответствие Цикл НовыйМассив.Добавить(КлючИЗначение.Знач Посмотреть все в категории Работа с Массивом, Структурой, Соответствием

Объекты типа массив в 1С 8.3 представляют собой совокупность упорядоченных значений любого типа, в том числе и типа «массив», что в свою очередь позволяет организовывать многомерные массивы. Идентификация значений осуществляется по индексам, нумерация которых начинается с «0».

Создание массива

Синтаксис:

Примеры:

Добавление элементов в массив

Примеры:


Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания - попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>



Получение значения элемента по индексу

Поиск в массиве 1С

Присвоение значений элементам массива

Примеры:

Как узнать количество элементов массива (размер массива)

Перебор массива 1С

Примеры:

Перебор всех элементов двумерного массива

Примеры:

Удаление элементов из массива

Примеры:

Как разложить строку в массив


Пример преобразования массива в список значений


Пример преобразования массива в таблицу значений


Сортировка массива 1С разными способами

Примеры:

Как свернуть массив в 1С

Пример:


Поддержите нас, расскажите друзьям!

СПРОСИТЕ в комментариях!

Услуги 1С

Наш канал на Youtube


При использовании данного сайта, вы подтверждаете свое согласие на использование файлов cookie в соответствии с настоящим уведомлением в отношении данного типа файлов. Если вы не согласны с тем, чтобы мы использовали данный тип файлов, то вы должны соответствующим образом установить настройки вашего браузера или не использовать сайт.

Отправляя любую форму на сайте, вы соглашаетесь с политикой конфиденциальности данного сайта.

Читайте также: