Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
16 апр 2024, 21:22

Вывод списка комплектующих в управляемой форме.

Автор sas_255, 11 апр 2021, 21:56

0 Пользователей и 1 гость просматривают эту тему.

LexaK

А выше шла речь о табличной части в РМ!
В общем можете реализовать свой вариант
с динамическим списком, все как описывалось
выше.
Запрос примерно такой

Выбрать
Рег.*
из
РегистрНакопления.ВашРег.Остатки(,Склад = &СсылкаРМ) рег

Дальше логика как первом письме.
Только внимательно подставьте свои наименования в запросе.
если помогло нажмите: Спасибо!

sas_255

Цитата: LexaK от 12 апр 2021, 10:29Да, вроде все как вы описали так и делайте. Создайте реквизит формы Состав, динамический список, произвольный запрос к табличной части рабочего места с условием отбора с параметом Ссылка на рабочее место. Выведите этот Состав на форму. В модуле формы добавьте обработчик события активизации строки в списке рабочих мест(РМ), в обработчике получаете ссылку текущего РМ и передаёте/утанавливаете в параметр дин.списка Состав.
После запуска формы, мышкой кликанте на любом РМ и справа отобразить его состав.

Подниму тему, чтоб не плодить новое.
Согласно предыдущим советам создал общую форму с двумя динамическими списками.
В одном списке выводиться список всех рабочих мест в форме.
Со вторым немного завис на уровне передачи ссылки.
Я так понимаю нужно получить ссылку на рабочее место из динамического списка с рабочими местами потом установить эту ссылку в качестве параметра отбора для соседнего списка "Состав".
Есть два списка РабочиеМеста и СоставРМ
Что я сделал:
Отбор рабочих мест

ВЫБРАТЬ
РабочиеМеста.Код КАК Код,
РабочиеМеста.ВладелецРабочегоМеста КАК ВладелецРабочегоМеста
ИЗ
Справочник.РабочиеМеста КАК РабочиеМеста

Состав рабочих мест

ВЫБРАТЬ
ОстатикиПоРМОстатки.РабочееМесто КАК РабочееМесто,
ОстатикиПоРМОстатки.СерийныйНомер КАК СерийныйНомер,
ОстатикиПоРМОстатки.ЦенаОстаток КАК ЦенаОстаток,
ОстатикиПоРМОстатки.КоличествоОстаток КАК КоличествоОстаток,
Устройства.Код КАК Код,
Устройства.ТипУстройства КАК ТипУстройства,
Устройства.Производитель КАК Производитель,
Устройства.Модель КАК Модель,
Устройства.СостояниеУстройства КАК СостояниеУстройства,
Устройства.ОкончаниеГарантии КАК ОкончаниеГарантии
ИЗ
РегистрНакопления.ОстатикиПоРМ.Остатки КАК ОстатикиПоРМОстатки
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Устройства КАК Устройства
ПО ОстатикиПоРМОстатки.СерийныйНомер = Устройства.Код
ГДЕ
ОстатикиПоРМОстатки.РабочееМесто = &РабочееМесто

И попытка передать параметр рабочее место в динамический список СоставРМ

&НаКлиенте
Процедура РабочиеМестаКодНажатие(Элемент, СтандартнаяОбработка)
РабочиеМестаКодНажатиеНаСервере();
КонецПроцедуры


&НаСервере
Процедура РабочиеМестаКодНажатиеНаСервере()



РМ = Справочники.РабочиеМеста.ПолучитьСсылку();
СоставРМ.Параметры.УстановитьЗначениеПараметра("РабочееМесто",РМ);
КонецПроцедуры


По итогу при запуске формы выдает ошибку

{(17, 37)}: Не задано значение параметра "РабочееМесто"
ОстатикиПоРМОстатки.РабочееМесто = <<?>>&РабочееМесто

Что я делаю не так? Может неправильный метод получения ссылки или ее передачи?







LexaK

так, попробуем зайти с другого края, вы пишите, что у вас отлично работает отчет отображающий текущее состояние/состав РМ,
-- вот и отлично
просто на форму рабочего места, добавьте поле ТабличныйДокумент, и при создании/открытии формы (НаСервере)
программно выполните/сформируйте свой отчет (Ссылка на РМ у вас есть) и выведите отчет (данные отчета по этому РМ)
в это поле табличного документа на форме.
 

если помогло нажмите: Спасибо!

sas_255

А что не так с моим решением то?
С другого края, я просто получу отчет, в то время как хотелось бы получить именно список, клацая по элементам которого можно открывать устройство и все что там к нему в справочнике прикреплено. Список то РМ он выдает без проблем, да и состав он тоже выдает нормально если проверять в консоли запросов с установкой параметра вручную. Мне надо понять как передать параметр из левого динамического списка РабочиеМеста в правый СоставРМ. Скрин прилагаю.
 

LexaK

в вашей форме в динамическом списке должно быть событие
ПриАктивизацииСтроки
в обработчике,
лкСсылка = Элементы.ВашСписок.ТекущиеДаные.Ссылка; //ссылка на РМ, должна быть в составе полей вашего ДС

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

sas_255

Спасибо за подсказку заработало.
Вот так сделал (вдруг кому пригодится):

&НаКлиенте
Процедура РабочиеМестаПриАктивизацииСтроки(Элемент)

лкСсылка = Элементы.РабочиеМеста.ТекущиеДанные;
лкСсылка = лкСсылка.Код;
УстановитьПараметр(лкСсылка);

КонецПроцедуры

&НаСервере
Процедура УстановитьПараметр(лкСсылка);

СоставРМ.Параметры.УстановитьЗначениеПараметра("РабочееМесто",лкСсылка);

КонецПроцедуры

sas_255

Еще раз подниму тему по связанному вопросу. Я реализовал форму с двумя динамическими списками описанными ранее.
Возможно ли в списке рабочих мест отображать иерархию. То есть Владельца подразделения отображать как группу а рабочие места которые к нему, владельцу относятся отображать внутри группы. Владелец подразделения выбирается из справочника, то есть изначально группой в справочнике не является. Пробовал настроить группировку в настройках динамического списка но ничего не поменялось, возможно не там ищу.
Скрин формы прилагаю.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск