Представление РегистраСведений в форме в виде ДереваЗначений
Добрый день, такая ситуация: в справочнике, например Номенклатура, нужно отбражать данные Регистра сведений. При этом данные хочется отбражать в виде дерева с группировкой по виду показателя, хранящегося в регистре сведений. Добавил в справочник дату, и на эту дату выбираю запросом со зрезом последних из регистра сведений нужные данные. Группирую их как надо, вывожу в справочник номенклатура в виде дерева, у реквизита тип ДеревоЗначений. Все врожде бы хорошо. Но теперь как быть с редактированием данных и добавлением. Добавление вроде решил. При добавлении в дерево значений, получаю форму записи регистра, добавляю туда данные и потом в этой форме в процедуре ПослеЗаписи проверяю, если Тип владельца формы справояник Номенклатура, то вызываю из его формы процедуру, которая заполняет ДеревоЗначений. Как работает устраивает, но есть ли способ попроще, может чего забыл уже? Теперь с редактированием, столкнулся с проблемой. При редактированиии с помощью метода Выбрать РегистраСведений и Отбора по нужным мне показателям, хочу получить нужное мне значение в виде РегистрСведенийВыборка, потом получить менеджерЗаписи и через него открыть форму для редактирования выбранного в ДеревеЗначений элемента. Тоже кажется сложновато все, есть ли способ попроще. Плюс проблема в том что Выбрать с моим отбором не хочет работать, почему-то выдает ошибку. Без отбора все работает открываются все формы. Вроде все делаю, как положенно отбор ввиде структуры,у измерений регистра, по которым делается отбор поставил галочки ведущее. Все-равно не работает, что пропустил, куда копать?
Отбор разве только по одному измерению можно делать? Когда в отборе оставляю один показатель срабатывает, когда пару ошибка.
походу только по одному, так не пойдет, тогда есть ли еще какой способ решить указанную выше проблему?
для редактирования тоже все просто — по позициям в своем дереве формируешь ключ записи
например
— на 1-ом уровне текущего элемента дерева «дата»
— на 2-м уровне текущего элемента дерева «группа показателей»
— на 3-м уровне текущего элемента дерева «Показатель»
— на последнем уровне позиционированного элемента дерева «Номенклатура»
собрал вю эту катавасию в ключ записи и открымл запись на редактирование.
вообще группировки и формирование дерева на форме — дорогое удаовольствие, у меня например регистры технологических показателей содержат миллионы записей и такой подход не катит.
слева маленкие узкие таблички «Дата», «Группа показателей», .
спрва список записей регистра
юзер шариться по маленьким мастерам, в том числе в иерархии и получает список согласно этим отборам
на дспсиках при активизации строк мастеров — происходит простая установка параметров запроса главного списка и система не делает ничего лишнего и кучи кода в обработчиках не надо
кароче так примерно для однораноговой мастер-детали
НаКлиенте
Процедура СписокУчетПоказателиПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа)
ПараметрыФормы = Новый Структура;
Если Копирование И Элемент.ТекущиеДанные <> Неопределено Тогда
// Инициализируем переменные групп параметров
ГруппПоказателейПустая = Параметры.СписокЗначенийТипов.Получить(5).Значение;
ГруппПоказателейРежим = Параметры.СписокЗначенийТипов.Получить(6).Значение;
ГруппПоказателейСкважины = Параметры.СписокЗначенийТипов.Получить(7).Значение;
ГруппПоказателейПТИ = Параметры.СписокЗначенийТипов.Получить(8).Значение;
Если ТипЗнч(ТочкаИзмерения) = Тип(«СтрокаГруппировкиДинамическогоСписка») Тогда
Предупреждение(«Необходимо выбрать элемент точки измерения в списке состава, а не группировку», 10);
Возврат;
//Если ЗначениеЗаполнено(ТочкаИзмерения.Ключ) Тогда
// ТочкаИзмерения = ПараметрДСЗначениеУстановить.Ключ;
//Иначе
// ПараметрДСЗначениеУстановить = Элементы.Список.ТекущаяСтрока;
//КонецЕсли;
Если ТочкаИзмерения = Неопределено Тогда
Предупреждение(«Не выбрана точка измерения в списке состава», 10);
Возврат;
КонецЕсли;
Если ТочкаИзмерения.Пустая() Тогда
Предупреждение(«Не выбрана точка измерения в списке состава», 10);
Возврат;
КонецЕсли;
Если Показатель = Неопределено Тогда
Предупреждение(«Не выбран показатель измерения в списке состава», 10);
Возврат;
КонецЕсли;
Если Показатель.Пустая() Тогда
Предупреждение(«Не выбран показатель измерения в списке состава», 10);
Возврат;
КонецЕсли;
СтруктураЗначенияЗаполнения = Новый Структура;
СтруктураЗначенияЗаполнения.Вставить(«ОбъектИзмерений», ТочкаИзмерения);
СтруктураЗначенияЗаполнения.Вставить(«Показатель» , Показатель);
СтруктураЗначенияЗаполнения.Вставить(«СостояниеУчета» , Параметры.СписокЗначенийТипов.Получить(4).Значение);
ОткрытьФормуМодально(«РегистрСведений.Add_IR_УчетПоказателей.Форма.ФормаЗаписи», ПараметрыФормы, ЭтаФорма);
&НаКлиенте
Процедура СписокУчетПоказателиПередНачаломИзменения(Элемент, Отказ)
ПараметрыФормы = Новый Структура;
Если Элемент.ТекущиеДанные <> Неопределено Тогда
ПараметрыФормы.Вставить(«Ключ», Элемент.ТекущаяСтрока);
ОткрытьФормуМодально(«РегистрСведений.Add_IR_УчетПоказателей.Форма.ФормаЗаписи», ПараметрыФормы, ЭтаФорма);
Предупреждение(«Не выбрана текущая строка списка», 10);
Возврат;
Получается при изменении он создает форму с заполненными данными такими же как в выбранной строке, а не открывает уже существующую запись регистра?
(6) если при редактировании передать в окрывемую форму полный ключ записи, то откроется форма сущекствующей записи — читай сп «ключзаписирегистра»
Не пойму вроде все данные передаю, а открывается пустая формы при редактировании. В регистре есть Период, Номенклатура, Полказатель, ЗначениеПоказателя, ЗначениеМин, ЗначениеМас и ЕдиницаИзмерения. Все эти данные закидываю в структуру вот так:
ПараметрыФормы = Новый Структура;
Отбор = Новый Структура;
Отбор.Вставить(«Период» , ВыбраннаяСтрока.Период);
Отбор.Вставить(«Номенклатура», Ссылка);
Отбор.Вставить(«Показатель» , ВыбраннаяСтрока.Показатель);
Отбор.Вставить(«ЗначениеПоказателя», ВыбраннаяСтрока.ЗначениеПоказателя);
Отбор.Вставить(«ЗначениеМин», ВыбраннаяСтрока.ЗначениеМин);
Отбор.Вставить(«ЗначениеМакс», ВыбраннаяСтрока.ЗначениеМакс);
Отбор.Вставить(«ЕдиницаИзмерения», ВыбраннаяСтрока.ЕдиницаИзмерения);
Сделал так
Регистр = РегистрыСведений.алкНормативныеПоказателиАнализовНоменклатуры.СоздатьМенеджерЗаписи();
Регистр.Период = ТекущийЭлемент.ТекущаяСтрока.Период;
Регистр.Номенклатура = Ссылка;
Регистр.Показатель = ТекущийЭлемент.ТекущаяСтрока.Показатель;
ФормаЗаписи = Регистр.ПолучитьФорму(ФормаЗаписи, ЭтаФорма,);
ФормаЗаписи.Открыть();
Источник
Форма списка регистра сведений в виде дерева #775002
Привет Есть регистр сведений с одним измерением(эл). Хотелось бы чтобы в форме списка он отображался в виде дерева по владельцу: владелец1 —эл1 —эл2 владелец2 —эл3 Такое возможно настройкой формы списка? Программировать не очень хочется. Вся надежда на вас.
Это не возможно, только программировать В виде дерево возможно только представление справочников с иерархией.
Но программировать очень мало, просто вместо динамического списка, показываешь результат запроса с соотвествующими группировками, выгруженный в дерево значений.
Или конкретно для твоего случая в форме списка справчоника владельца добавляешь динамический список, в котором меняеш отбор при выборе элемента — владельца. Единственное что — лучше отсрочить установку отбора по владельца на 0.2 секунды для улучшения навигации по справочнику.
Спасибо за «не возможно»)) Не хочется писать обработку редактирования записей дерева, поэтому будет список, пусть отборами отбирают)
Похожие вопросы 1С
В этой группе 1С
- ERP. НДС при списании недостач товаров.
- Акт сверки в БП 3.0
- УТ 11.2 Автозапуск РМК, с запретом закрытия
- изменение номера документа при смене организации
- Универсальный журнал документов в БП 3.0
- Модуль менеджера не видит типовых функций внешних модулей.
- v7: ОбработкаЯчейкиТаблицы не срабатывает из модуля
- В возвратной поставщику не формирует проводки по второму товару
- Неизвестное имя формы. Имя: «Документ.Акт.ФормаДокумента»
- Нужно подключиться к 1С из внешнего приложения
- Сравнение времени в 1с 8.2
- БП 3.0 Не выполняется перепроведение документов при закрытии месяца
- ЗУП не считает начисления по отпускным
- КА2: сч-ф выданная на аванс, зачесть аванс из ввода остатков, не дает выбрать.
- ЕГАИС. УТМ. Одинаковые ТТН
- УТ 11 как отразить корректировку реализации в колич. уч.
- Запрос по регистру накопления (Остатки и обороты)
- v7: Растет время записи документа
- Настроить дополнительный вид расчета пропорционально отработанному времени
- v7: ScanOPOS
Источник
Как записать в регистр сведений дерево значений?
Всем добрый день!
Кто сталкивался с записью или каким-либо сохранением элементов дерева в регистр сведений?
Стоит задача записывать элементы дерева в справочник со связью родитель-приемник. Или может быть кто-то подобное реализовывал?
и чтобы была возможность просматривать данную иерархию и возможность пользоваться ей.
Буду благодарна на помощь!
(1) Создать справочник и хранить иерархию элементов искомого справочника в табличной части, деревьев, как я понимаю, может быть неограниченное количество?
(4)да, все верно.
Но я не знаю, как лучше реализовать, так как не очень хотелось бы плодить справочники лишние.
Но это дело нужно где-то хранить
Со справочником — это лишь один из вариантов, которым бы не очень хотелось пользоваться)
(1) Добрый день!
Самый очевидный вариант — это добавить в регистр сведений «служебный» реквизит «Родитель», где хранить признак родительской записи. Так в принципе делают, когда дерево значений конвертируют в таблицу значений и обратно.
Если потом в запросе как-то обрабатывать, то просто добавить ключ и ключ родителя. Если просто хранить — лучше в каком-нить хранилище значений. В общем не совсем понятно, что с этими данными дальше делать собираетесь.
а причем здесь сохранение в регистр сведений?
или это для вас одно и тоже? (справочник и регистр сведений)
(3) Я, наверное, не совсем так выразилась, отвлекали)
у меня есть справочник Номенклатура, мне нужно хранить у каждого объекта справочника его состав
Номенклатура,как матрешка должна раскрываться, соответственно связь родитель-приемник надо где-то хранить, решила, что лучше всего в регистре сведений, но потом поняла, что это не совсем норм, так как ветвей может быть огромное кол-во)
например:
Пневмопресс
в него включается:
Блок подготовки воздуха
в свою очередь вышеупомянутый блок собирается из:
Штуцера и Пластины
Пластина закупается, а штуцер состоит там ещё из чего нибудь
вот всю енту структуру надо где-то хранить)
В типовых реализована такая штука, как спецификация. Она определяет связь выпускаемой продукции с ее комплектующими. И тут решается две проблемы сразу:
1. Одну и ту же продукцию можно сделать по-разному. Например, фарш можно из любого куска мяса накрутить.
2. Для любой составной части можно сделать свою спецификацию.
Но тут появляется еще одна проблема — зацикленность. Например, что-то может быть использовано, как сырье для какого-либо своего компонента. Это как в документе и справочнике есть сцылка, а внутри сцылки есть эта же сцылка — можно двигаться бесконечно внутрь в том же дереве запроса. Поэтому нужно всегда держать в уме этот аспект, ибо в противном случае однажды все может просто встать колом )))
Допустим дерево у тебя 2-ух уровневое. На первом уровне данные по родителю, на втором о сына (или доча). Делаем через вложенный цикл (например). В теле первого цикла создаем запись регистра набора, заполняем данными родителя, во втором (вложенном) цикле заполняем эту же запись данными сынадочи. Потом записываем в конце итерации внешнего (первого) цикла. если дерево больше 2-ух уровней, то суть такая же: во внешнем создаешь запись набора, во вложенных дозаполняешь запись — профит.
(6) самое простое, добавьте в этот справочник ТабличнуюЧасть ТЧ — Состав
с двумя основными колонками
Номенклатура (Тип он же), Количество (число) и разместите на форме элемента
в него и будете забивать из чего состоит текущий элемент, из элементарных частей и из узлов
которые тоже, сами по себе, являются элементами справочника и имеют свой состав!
вот вам и дерево составов
(7)Хранение будет логически понятным (пользователю удобно), а как поучить все составляющие закупаемые (исходные) элементы: жуть программиста))
Для восстановления иерархической структуры достаочно хранить связь с родителем и по ней потом строится дерево (1 элемент к 1 родителю) — используйте либо реквизит элемента справочника либо регистр сведений
Для хранения недревоидной структуры (когда элемент может иметь несколько родителей) — (1 элемент ко многим родителям) — используйте регистр сведений
Источник