Управляемые формы вывести регистр сведений

Динамический список

Как на управляемой форме разместить список регистра сведений с отбором?

Решение рассмотрено для элемента справочника (Контрагент и регистр КонтактнаяИнформация)

1. Создание реквизита:
Добавляем новый реквизит формы (. не путать с реквизитом справочника . ) с типом «ДинамическийСписок»
В поле «Основная таблица» выбираем нужный регистр сведений.

2. Отображение на форме:
Перетащить реквизит формы в элементы формы (c права налево .
Так же для отображения необходимо задать хотя-бы одну колонку для вывода.

3. Настройка отбора:
В процедуре ПриСозданииНаСервере вручную устанавливаем необходимый отбор.

Пример:
Код 1C v 8.2 УП

Решение явно не единственное, так что если кто что накопает ещё — пишите 😉

Похожие FAQ

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

Программное создание таблицы значений с условным оформлением 12
Как создать на форме таблицу и сделать для нее подсветку содержимого колонки в строке по условию? Итак для начала нам надо добавить реквизиты в форму. Для этого у нас есть метод: ИзменитьРеквизиты(). Перед тем как его использовать мы сформируем ма Поле выбора

Заполнение списка значений в элементе поле выбора на форме 10
//Заполнение списка перебором данных // Элемент формы МетаданныеВыбор имеет тип — Произвольный, Использование — Режим выбора из Списка, кнопка списка Для Каждого Метаданное из Метаданные.РегламентныеЗадания Цикл ЭлементыФормы.МетаданныеВыбор.Спи Поле выбора

Как ограничить список выбора? 8
Ограничим список элементов, установив отбор в открываемой форме //Пример 1 Процедура СтатьяПДРНачалоВыбора(Элемент, СтандартнаяОбработка) ФормаВыбора = Справочники.ПрочиеДоходыИРасходы.ПолучитьФормуВыбора(, Элемент); ЭлементОтбораВидПДР = Форма Посмотреть все в категории Работа с Формой (Диалог) и её элементами

Источник

Открытие управляемой формы 1С записи регистра сведений

Своё знакомство с управляемым приложением 1С как разработчик я начал достаточно давно, но некоторые примеры разработки управляемого приложения повергают меня в шок до сих пор. Один из таких примеров — программное открытие управляемой формы записи регистра сведений.

Рассмотрим пример программного открытия управляемой формы уже существующей записи регистра сведений.

Открытие управляемой формы 1С записи регистра сведений

Стояла достаточно простая задача — открыть запись регистра сведений 1С «Счета учета» по значениям измерений. Данная процедура вызывалась из таблицы значений, где хранились значения этих измерений.

Процедура в итоге выглядела следующим образом:

&НаКлиенте
Процедура СчетаУчетаНоменклатурыПередНачаломИзменения(Элемент, Отказ)

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

ПередаваемыеПараметры = Новый Структура; //формируем структуру полей измерений

ПередаваемыеПараметры.Вставить(«Номенклатура»,СтрокаТабличнойЧасти.Номенклатура);
ПередаваемыеПараметры.Вставить(«Организация»,СтрокаТабличнойЧасти.Организация);
ПередаваемыеПараметры.Вставить(«Склад»,СтрокаТабличнойЧасти.Склад);
ПередаваемыеПараметры.Вставить(«ТипСклада»,СтрокаТабличнойЧасти.ТипСклада);

ПараметрыМассив = Новый Массив;
ПараметрыМассив.Добавить(ПередаваемыеПараметры); // помещаем структуру в массив
КлючЗаписиРегистра = Новый(«РегистрСведенийКлючЗаписи.СчетаУчетаНоменклатуры», ПараметрыМассив); //с помощью массива со структурой создаем ключ записи
ОткрытьФормуМодально(«РегистрСведений.СчетаУчетаНоменклатуры.ФормаЗаписи», Новый Структура(«Ключ», КлючЗаписиРегистра)); // передаем в форму ключ записи и открываем её

  1. занесли в структуру значения измерений;
  2. поместили структуру в массив;
  3. с помощью массива создали ключ записи;
  4. с помощью ключа записи открыли форму.

Почему так сложно?

Этот способ я подсмотрел в типовой конфигурации. Я не очень понимаю, зачем в итоге такая длинная цепочка, если кто-то видел более простой способ. Просьба, напишите, как, в комментариях, буду очень Вам благодарен. Спасибо!

К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.

Источник

Как создать табличку регистра с отбором в справочнике или документе на управляемой форме

Решение задачи на самом деле очень простое, нам нужно в самой форме, на вкладке «Командный интерфейс» поставить галочку Автовидимость и видимость. Тогда с лева на форме у нас появится ссылка на наш регистр с уже готовым отбором.

НО! А что если нужно это все дело организовать другим способом, например на форме поставить табличку, и что бы можно было прямо от туда добавлять записи в регистр. Тогда:

1. На форме на панели реквизитов добавляем новый реквизит с типом: «ДинамическийСписок».

2. Выбираем тип основной таблицы с нашем регистром например.

3. Размещаете токшо созданый реквизит на форму.

4. Прописать сам отбор в событии формы «ПриСозданииНаСервере»:

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

НовыйЭлемент = Водители.Отбор.Элементы.Добавить(Тип(«ЭлементОтбораКомпоновкиДанных»));
НовыйЭлемент.Использование = Истина;
НовыйЭлемент.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(«ТранспортноеСредство»);
НовыйЭлемент.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
НовыйЭлемент.ПравоеЗначение = Объект.Ссылка;

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

Источник

Регистр сведений как дополнение объекта

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

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

Без регистров сведений сегодня сложно представить какую-либо конфигурацию. Эта довольно несложная для понимания группа метаданных одновременно представляет собой мощное средство для решения возникающих у 1С-ника задач. Реквизиты компаний имеют свойство иногда меняться? – смотрим в сторону Регистров сведений. Хотим учитывать подходящую к оборудованию номенклатуру запчастей? Снова к регистрам сведений. И не предлагайте табличные части, ведь менеджер, который закупает запчасти, тоже захочет оценить куда они подходят, когда сообразит, что ему это весьма полезно. Вот тогда с табличной частью-то и намучаемся.

Есть и менее очевидные вещи – если пересадить в 1С фанатичных любителей Excel, независимо от того добровольно для них это было или нет, очень быстро появляются те, кому не нравится для редактирования документов открывать их в отдельной форме. Помучавшись с чтением / записью этих документов при активизации строки скоро начинаешь понимать – а ведь проще работая с такими господами ничего кроме номера, даты и пары реквизитов, которые в здравом уме после его создания никто не соберется править, в самом документе не иметь (о документе говорим нестандартном, конечно же) а всё, что господа там дозаполняют по 20 раз на день вынести все в тот же регистр сведений. Ну а если господа выдумали некую группу показателей, которую даже теоретически должны видеть только три человека, в то время как все остальные – половина пользователей, сами Боги велели вынести эти показатели в отдельную табличку, и естественно это будет регистр сведений.
Еще одно из решений, связанных с использованием регистров сведений, к которому пришел я (и вполне допускаю, что и еще много кто), причем задолго до появления таких технологий, как расширения, это вынесение в них нетиповой информации вместо добавления реквизитов или табличных частей к основным объектам. В свое время даже делал публикацию публикацию на эту тему.

Скрывать нечего, в моем случае наиболее богатым на всяческие дополняющие таблички оказался справочник номенклатуры. Помимо уже имеющихся из коробки УПП, касающихся его регистров сведений, добавлены еще несколько своих. Информация, хранимая в них, поделена на логически законченные блоки: один регистр хранит параметры, которые имеют значение при планировании закупок запчастей и материалов для ремонта оборудования, другой – сведения о размерах упаковок продукции предприятия, третий – необходимые для интеграции с головными предприятием параметры ну и т.д. У каждой подобной таблицы свой круг пользователей, которых интересует их участок, но соседний для них что-то слишком заумное и «лишнее». Естественно, что «лишнее» нужно прятать, а еще лучше вообще ограничить к нему доступ. Группировка данных в регистры сведений «по тематике» тут оказывается очень кстати. Возьмем, к примеру, такие:

Положим, со структурой данных определились, насоздавали регистров в конфигурации, но что делать с интерфейсом? Ведь пользователя, который в восторге от того, что для занесения данных нужно пробежаться по нескольким таблицам найти очень сложно. Пользователю удобно, когда все в одном окне – открыл, скажем, все ту же номенклатуру и увидел все, что о ней интересно знать, а что и как там хранится в недрах базы ну совершенно не интересно. Решение есть, и оно весьма простое. В зависимости от того имитируем для пользователя набор реквизитов объекта или его табличную часть, на форму объекта добавляем реквизиты типа «РегистрСведенийМенеджерЗаписей» или «РегистрСведенийНаборЗаписей» размещаем на форме Элементы как захочется, в событии формы «ПриСозданииНаСервере» обеспечиваем их прочтение, в событии «ПослеЗаписиНаСервере» — запись.

В общем-то, для тех, кто успешно преодолел уровень новичка, тут все просто, понятно и даже рутинно. Какое-то время я так и делал. Но довольно быстро понял – подобная рутина отнимает не то, чтобы сильно много времени, но происходит это обязательно в те моменты, когда хоть какой-то результат нужно выдать вчера. Ну и банально – лень это каждый раз писать или копипастить/ поправлять, тем более после недолгой обкатки приема с регистрами сведений, их количество и области применения в конфигурации стали разрастаться, как грибы после летнего дождя. Тогда, выкроив несколько свободных часов, и взялся за очередной универсализм. Так родился небольшой модуль, позволяющий минимизировать трудозатраты на описание чтения / записи присоединенных к формам объектов регистров. Принцип потратить пару часов сейчас, но выиграть десятки потом, сработал на ура. Так родился небольшой модуль следующего содержания:

Вызывается это так:

Основных процедур получилось четыре: ПрочитатьНаборЗаписейРС, ЗаписатьНаборЗаписейРС, ПрочитатьМенеджерЗаписиРС, ЗаписатьМенеджерЗаписейРС с почти идентичными параметрами:

  • УпрФорма – форма, к которой выполняем подключение, обязательный параметр
  • ИмяРегистра – Имя регистра сведений в дереве метаданных, обязательный параметр
  • СтруктураОтбора – ключ структуры аналогичен имени измерения регистра, по которому требуется отфильтровать записи, значение – собственно значение, по которому фильтруем, обязательный параметр
  • ИмяРеквизитаУФ – Имя реквизита на переданной в первом параметре форме, в который / из которого нужно выполнить чтение / запись, необязательный параметр, если не задан, имя реквизита будет считаться идентичным имени регистра (второй параметр)
  • ЗначенияЗаполнения – есть только в процедурах записи, позволяет автоматически проставить значения ресурсов и реквизитов регистра, которыми пользователь не управляет, но они требуются нам для корректной работы системы.

Теперь получается много удобнее и быстрее. Больше не нужно расписывать очередной регистр, интегрируя его на форму, пару строк и все, что нужно прочитано и в нужный момент записано. Справедливости ради, должен заметить, что покрывая 99% подобных задач, всеобщей панацеей это решение все-таки не является. Исключением будут те редкие случаи, когда в редактировании одного и того же объекта одновременно участвуют несколько пользователей. В таком режиме остается место для ситуации, когда один из пользователей открывает объект и долго-нудно его поправляет. В это время второй открывает, быстро вносит свою лепту и сохраняет. Когда же первый заканчивает, он записывает свою версию, в том числе затерев то, что сделал его коллега. Вероятность такой ситуации всегда нужно учитывать. Если в нашей номенклатуре она нулевая, то в гипотетической системе управления задачами она вполне реальна. На те случаи выход тоже есть и заключается в использовании динамических списков с отборами, но это уже отдельная история со своей спецификой и своими подводными камнями.

Источник

Читайте также:  Как отмыть стеклянный чайник внутри
Оцените статью