Вывод списка табличных данных в зависимости от реквизита

1. user1565257 26.04.21 11:30 Сейчас в теме
Добрый день!
Пытаюсь победить отраслевую конфигурацию. Структура базы - есть головные изделия и куча их исполнений (-01, -02, -03...). В карточке у каждого элемента есть прикрепленные файлы. Задача - привязать чертежи только к головным изделиям, а у исполнений должны отображаться файлы головных изделий. Я добавил дополнительную вкладку в карточке "Прикрепленные файлы головного изделия", присвоил ей свою форму (по образцу оригинальной формы "Прикрепленные файлы"). В основном справочнике создал дополнительный реквизит "ГоловноеИсполнение" и раскидал значения в номенклатуре. Не могу осилить последний шаг. В форме "Прикрепленные файлы головного изделия" нужно отредактировать вывод списка (нужно выводить прикрепленные файлы не текущей позиций, а позиции, которая указана в реквизите "ГоловноеИсполнение"). Насколько я понимаю, вот процедура вывода "Прикрепленных файлов", в которую нужно добавить зависимость от реквизита. Подскажите люди добрые.
&НаКлиенте
Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
	
	Если Элементы.Список.РежимВыбора Тогда
		Возврат;
	КонецЕсли;
	
	СтандартнаяОбработка = Ложь;
	
	ТекущиеДанные = Элементы.Список.ТекущиеДанные;
	
	Если Элементы.Список.ТекущиеДанные = Неопределено Тогда
		Возврат;
	КонецЕсли;
	
	Если ТекущиеДанные.ЭтоГруппа Тогда
		ПоказатьЗначение(, ВыбраннаяСтрока);
		Возврат;
	КонецЕсли;
	
	КакОткрывать = РаботаСФайламиСлужебныйКлиентСервер.ПерсональныеНастройкиРаботыСФайлами().ДействиеПоДвойномуЩелчкуМыши;
	
	Если КакОткрывать = "ОткрыватьКарточку" Тогда
		ПоказатьЗначение(, ВыбраннаяСтрока);
		Возврат;
	КонецЕсли;
	
	ДанныеФайла = РаботаСФайламиСлужебныйВызовСервера.ДанныеФайлаДляОткрытия(ВыбраннаяСтрока,
		Неопределено, УникальныйИдентификатор, Неопределено, ПредыдущийАдресФайла);
	
	ПараметрыОбработчика = Новый Структура;
	ПараметрыОбработчика.Вставить("ДанныеФайла", ДанныеФайла);
	Обработчик = Новый ОписаниеОповещения("СписокВыборПослеВыбораРежимаРедактирования", ЭтотОбъект, ПараметрыОбработчика);
	
	РаботаСФайламиСлужебныйКлиент.ВыбратьРежимИРедактироватьФайл(Обработчик, ДанныеФайла, Истина);
	
КонецПроцедуры

Показать
+
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. BehV 14 26.04.21 12:27 Сейчас в теме
День добрый, как я понял список динамечский, можете попробовать дать отбор к нему, в процедуре "ПриСозданиеНаСервере", условный код ниже:
        ЭлементОтбора = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));

	ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ВладелецФайла");
	ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
	ЭлементОтбора.Использование = Истина;
	ЭлементОтбора.ПравоеЗначение = ВладелецФайла.ГоловноеИсполнение;
+
4. user1565257 26.04.21 13:30 Сейчас в теме
(2) Спасибо за направление. Ваш метод работает, но это отбор. Т.е. в головном изделии, в котором привязаны файлы, но ГоловноеИсполнение не указано - список пуст. Как только я указываю ГоловноеИсполнение его же самого, в списке файлы появляются, так как в этой позиции они есть и условие отбора выполняется. А если в другой позиции (в исполнении) указываю ГоловноеИсполнение, список пуст - условие работает, но файлы ему взять не от куда. Извините за прикрепленный код, не в ту часть формы посмотрел, мой косяк. Работаю конструктором, опыта в 1С нет, а конфигурацию под свои задачи допилить хочется. Во вставке код с Вашим отбором.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа.
		Возврат;
	КонецЕсли;
	
	ВладелецФайла = Параметры.ВладелецФайла;
	
	ТекущаяСсылка = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(Параметры, "ТекущаяСтрока");
	СписокОткрытИзКарточкиФайла = ЗначениеЗаполнено(ТекущаяСсылка);
	Элементы.ВладелецФайла.Видимость = СписокОткрытИзКарточкиФайла;
	Если СписокОткрытИзКарточкиФайла И ВладелецФайла = Неопределено Тогда
		ВладелецФайла = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ТекущаяСсылка, "ВладелецФайла");
		Параметры.ВладелецФайла = ВладелецФайла;
	КонецЕсли;
	Если Параметры.ВладелецФайла = Неопределено Тогда
		ВызватьИсключение НСтр("ru = 'Список присоединенных файлов можно посмотреть
		                             |только в форме объекта-владельца.'");
	КонецЕсли;
	
	ТипВладельца = ТипЗнч(Параметры.ВладелецФайла);
	Если Метаданные.ОпределяемыеТипы.ВладелецФайлов.Тип.СодержитТип(ТипВладельца) Тогда
		ПолноеИмяВладельца = Метаданные.НайтиПоТипу(ТипВладельца).Имя;
		Если Метаданные.Справочники.Найти(ПолноеИмяВладельца + "ПрисоединенныеФайлы") = Неопределено Тогда
			ЭтоВладелецЭлементовСправочникаФайлы = Истина;
		КонецЕсли;
	КонецЕсли;
	
	Элементы.ФормаРедактировать.ТолькоВоВсехДействиях           = Параметры.ПростаяФорма;
	Элементы.ФормаОткрыть.ТолькоВоВсехДействиях                 = Параметры.ПростаяФорма;
	Элементы.ФормаЗакончитьРедактирование.ТолькоВоВсехДействиях = Параметры.ПростаяФорма;
	Элементы.СписокВажныеРеквизиты.Видимость                    = Не Параметры.ПростаяФорма;
	Предпросмотр                                                = Параметры.ПростаяФорма;
	
	ПоказыватьКолонкуРазмер = РаботаСФайламиСлужебныйВызовСервера.ПолучитьПоказыватьКолонкуРазмер();
	Если Не ПоказыватьКолонкуРазмер Тогда
		Элементы.СписокРазмер.Видимость = Ложь;
	КонецЕсли;
	
	Если Не ПустаяСтрока(Параметры.ЗаголовокФормы) Тогда
		Заголовок = Параметры.ЗаголовокФормы;
	ИначеЕсли СписокОткрытИзКарточкиФайла Тогда
		Заголовок = Заголовок + " (" + Строка(ТипЗнч(ВладелецФайла)) + " " + Строка(ВладелецФайла) + ")";
	КонецЕсли;
	
	Если ЗначениеЗаполнено(Параметры.ПараметрыОтправки) Тогда
		ПараметрыОтправки = Параметры.ПараметрыОтправки;
	Иначе
		ПараметрыОтправки = РаботаСФайламиСлужебный.ПодготовитьСтруктуруПараметровОтправки();
	КонецЕсли;
	
	Если Параметры.РежимВыбора Тогда
		СтандартныеПодсистемыСервер.УстановитьКлючНазначенияФормы(ЭтотОбъект, "ВыборПодбор");
		РежимОткрытияОкна = РежимОткрытияОкнаФормы.БлокироватьОкноВладельца;
		Заголовок = НСтр("ru = 'Выбор присоединенного файла'");
	Иначе
		Элементы.Список.РежимВыбора = Ложь;
	КонецЕсли;
	
	НастройкиФайлов = РаботаСФайламиСлужебный.НастройкиФайлов();
	
	ИмяСправочникаХранилищаФайлов = Неопределено;
	
	ЗаголовокОшибки = НСтр("ru = 'Ошибка при настройке динамического списка присоединенных файлов.'");
	ОкончаниеОшибки = НСтр("ru = 'В этом случае настройка динамического списка невозможна.'");
	
	ИмяСправочникаХранилищаФайлов = РаботаСФайламиСлужебный.ИмяСправочникаХраненияФайлов(
		Параметры.ВладелецФайла, "", ЗаголовокОшибки, ОкончаниеОшибки);
		
	ТипСправочникаСФайлами = Тип("СправочникСсылка." + ИмяСправочникаХранилищаФайлов);
	
	МассивИсключенийСозданияФайловПоШаблону = Новый Массив;
	
	МетаданныеСправочникаСФайлами = Метаданные.НайтиПоТипу(ТипСправочникаСФайлами);
	
	ИмяСправочникаХранилищаВерсийФайлов = РаботаСФайламиСлужебный.ИмяСправочникаХраненияВерсийФайлов(
		Параметры.ВладелецФайла, "", ЗаголовокОшибки, ОкончаниеОшибки);
	
	ВозможностьСоздаватьГруппыФайлов = МетаданныеСправочникаСФайлами.Иерархический;
	
	Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.УправлениеДоступом") Тогда 
		МодульУправлениеДоступом = ОбщегоНазначения.ОбщийМодуль("УправлениеДоступом");
		ЕстьПравоИспользоватьШаблоны = МодульУправлениеДоступом .ЕстьПраво("Чтение", Справочники.ПапкиФайлов.Шаблоны);
	Иначе
		ЕстьПравоИспользоватьШаблоны = ПравоДоступа("Чтение", Метаданные.Справочники.Файлы) И ПравоДоступа("Чтение", Метаданные.Справочники.ПапкиФайлов)
	КонецЕсли;
	
	Если НЕ ЕстьПравоИспользоватьШаблоны Или НастройкиФайлов.НеСоздаватьФайлыПоШаблону.Найти(Метаданные.НайтиПоТипу(ТипЗнч(ВладелецФайла))) <> Неопределено Тогда
		Элементы.ДобавитьФайлПоШаблону.Видимость = Ложь;
		Элементы.СписокКонтекстноеМенюДобавитьФайлПоШаблону.Видимость = Ложь;
	КонецЕсли;
	
	ВозможностьСоздаватьВерсииФайлов = ЭтоВладелецЭлементовСправочникаФайлы;
	
	НастроитьДинамическийСписок(ИмяСправочникаХранилищаФайлов);
	
	Если Не ВозможностьСоздаватьГруппыФайлов Тогда
		СкрытьКнопкиСозданияГруппы();
	КонецЕсли;
	
	ЕстьПравоДобавления = Истина;
	
	Если НЕ ПравоДоступа("ИнтерактивноеДобавление", МетаданныеСправочникаСФайлами) Тогда
		СкрытьКнопкиДобавления();
		ЕстьПравоДобавления = Ложь;
	КонецЕсли;
	
	Если ПользователиКлиентСервер.ЭтоСеансВнешнегоПользователя() Тогда
		ТолькоПросмотр = Не ПравоДоступа("Редактирование", МетаданныеСправочникаСФайлами);
	Иначе	
		ТолькоПросмотр = Параметры.ТолькоПросмотр Или НЕ ПравоДоступа("Редактирование", МетаданныеСправочникаСФайлами)
			Или НЕ ПравоДоступа("Редактирование", Параметры.ВладелецФайла.Метаданные());
	КонецЕсли;
	
	Если ТолькоПросмотр Тогда
		СкрытьКнопкиИзменения();
		ЕстьПравоДобавления = Ложь;
	КонецЕсли;
	
	ИменаВсехКомандФормы = ПолучитьИменаКомандФормы();
	ИменаЭлементов = Новый Массив;
	
	Для Каждого ЭлементФормы Из Элементы Цикл
		
		Если ТипЗнч(ЭлементФормы) <> Тип("КнопкаФормы") Тогда
			Продолжить;
		КонецЕсли;
		
		Если ИменаВсехКомандФормы.Найти(ЭлементФормы.ИмяКоманды) <> Неопределено
			Или ИменаВсехКомандФормы.Найти(ЭлементФормы.Имя) <> Неопределено Тогда
				ИменаЭлементов.Добавить(ЭлементФормы.Имя);
		КонецЕсли;
		
	КонецЦикла;
	
	ИменаЭлементовКнопокФормы = Новый ФиксированныйМассив(ИменаЭлементов);
	
	ПриИзмененииИспользованияПодписанияИлиШифрованияНаСервере();
	
	Если КлиентскоеПриложение.ТекущийВариантИнтерфейса() = ВариантИнтерфейсаКлиентскогоПриложения.Версия8_2 Тогда
		Элементы.ФормаИзменить.Видимость = Ложь;
		Элементы.ФормаИзменить82.Видимость = Истина;
		Элементы.ФормаСкопировать.ТолькоВоВсехДействиях = Ложь;
		Элементы.УстановитьПометкуУдаления.ТолькоВоВсехДействиях = Ложь;
	КонецЕсли;
	
	ИспользоватьПредпросмотр = ОбщегоНазначения.ХранилищеОбщихНастроекЗагрузить(
		ТипСправочникаСФайлами,
		"Предпросмотр");
	
	Если ИспользоватьПредпросмотр <> Неопределено Тогда
		Предпросмотр = ИспользоватьПредпросмотр;
	КонецЕсли;
	
	Элементы.АдресДанныхФайла.Видимость = Предпросмотр;
	Элементы.Предпросмотр.Пометка       = Предпросмотр;
	
	РасширенияПоддерживающиеПредпросмотр = РаботаСФайламиСлужебный.СписокРасширенийДляПредпросмотра();
	
	ОбновитьПояснениеОблачногоСервиса();
	
	Элементы.НастроитьСинхронизацию.Видимость = ПравоДоступа("Редактирование", Метаданные.Справочники.УчетныеЗаписиСинхронизацииФайлов);
	ЕстьЭлектроннаяПодпись = ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ЭлектроннаяПодпись");
	Элементы.ПечатьСоШтампом.Видимость = ЕстьЭлектроннаяПодпись;
	
	Элементы.СравнитьФайлы.Видимость = Не ОбщегоНазначенияКлиентСервер.ЭтоLinuxКлиент()
		                             И Не ОбщегоНазначенияКлиентСервер.ЭтоВебКлиент();
	
	ЗапрещенныеРасширения = РаботаСФайламиСлужебный.СписокЗапрещенныхРасширений();
	
	УстановитьУсловноеОформление();
	
	РаботаСФайламиПереопределяемый.ПриСозданииФормыСпискаФайлов(ЭтотОбъект);
	
	ЭлементОтбора = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));

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

Показать
+
5. user1565257 27.04.21 08:50 Сейчас в теме
(2)Ткните носом пожалуйста. Не вывожу(
+
3. гаврюша 2 26.04.21 12:33 Сейчас в теме
Может: ПоказатьЗначение(, ВыбраннаяСтрока.ГоловноеИсполнение);
+
Внимание! Тема сдана в архив

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот