Получение данных динамического списка

1. bytecoded 26 09.09.15 08:20 Сейчас в теме
Для получения всех строк динамического списка МегапротозаказПозиции я использую следующий код:

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

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

Способ, работающий для метода ДанныеСтроки() – установка галочки «Использовать всегда» в свойствах нужного реквизита, который не выведен на форму – в данном случае бесполезен: данные по реквизиту в итоговой ТЗ по-прежнему не формируются.
По теме из базы знаний
Ответы
Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. tristarr1 58 09.09.15 08:28 Сейчас в теме
(1) bytecoded, Самый простой способ добавить недостающие поля в выбранные поля перед выполнением компоновки. чуть более сложный - дать пользователю перед компоновкой самому выбрать состав необходимых полей.
3. bytecoded 26 09.09.15 13:13 Сейчас в теме
(2) tristarr1, подключать пользователя к задаче, к сожалению, не вариант – в недостающих полях находится внутренняя техническая информация, которую ему видеть не нужно. Каким образом можно добавить недостающие поля в выбранные? Насколько я понимаю, ВыбранныеПоля – это свойство построителя макета или построителя запроса, здесь эти объекты не используются.
4. tristarr1 58 10.09.15 08:41 Сейчас в теме
(3) bytecoded, Это свойство исполняемых настроек СКД. В вашем случае будет как: Настройки.Выбор.
bytecoded; +1 Ответить
5. bytecoded 26 10.09.15 11:46 Сейчас в теме
(4) tristarr1, попробовал:

		Схема = Элементы.МегапротозаказПозиции.ПолучитьИсполняемуюСхемуКомпоновкиДанных();
		Настройки = Элементы.МегапротозаказПозиции.ПолучитьИсполняемыеНастройкиКомпоновкиДанных();
		
		НовоеПоле = Настройки.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));

		НовоеПоле.Использование = Истина;
		НовоеПоле.Заголовок = "Номенклатура";
		НовоеПоле.Поле = Новый ПолеКомпоновкиДанных("Номенклатура");
		
		КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных();
		МакетКомпоновки = КомпоновщикМакета.Выполнить(Схема, Настройки, , , Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
		                        
		ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
		ПроцессорКомпоновки.Инициализировать(МакетКомпоновки);
		
		ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
		
		СтрокиМегапротозаказа = ПроцессорВывода.Вывести(ПроцессорКомпоновки);		
Показать

Результата нет – отрабатывает без ошибок, однако номенклатура в числе полей итоговой таблицы значений не появляется. Упускаю какой-то момент? Поле Номенклатура есть в числе доступных полей (коллекция Настройки.Выбор.ДоступныеПоляВыбора); не вполне понятно, в чем ошибка.
6. tristarr1 58 10.09.15 13:04 Сейчас в теме
(5) bytecoded, И потестить-то не на чем. 8.3.5 только есть. Попробуйте добавить еще авто поле...
8. bytecoded 26 11.09.15 07:24 Сейчас в теме
Разобрался. Настройки вывода хранились в другом месте, конкретно нужные выбранные поля требовалось добавить в коллекцию Настройки.Структура[0].Выбор.Элементы.

(6) tristarr1, спасибо за наводку!
headMade; murat_; +2 Ответить
9. tristarr1 58 11.09.15 10:15 Сейчас в теме
(8) bytecoded, Всегда пожалуйста. А что за структура[0]? Он разве не настройки схемы компоновки данных возвращает?
10. bytecoded 26 17.09.15 09:30 Сейчас в теме
(9) tristarr1, тип Настройки.Структура[0] – ГруппировкаКомпоновкиДанных. Видимо, при наличии группировки выбранные поля нужно задавать персонально для нее, а не глобально в Настройки.Выбор.
11. tristarr1 58 17.09.15 09:46 Сейчас в теме
(10) bytecoded, Вообще оно должно работать так: Настройки.Выбор - задаются поля, которые участвуют во всех группировках, если в в этих группировках присутствует АвтоПоле, если же оно не присутствует то надо добавлять поля в каждую группировку. Странно почему получаема схема не добавляет автополя в группировки.
13. rmobil 17.10.17 15:03 Сейчас в теме
(8) Спасибо тебе, добрый человек! Я голову сломал себе об эту же проблему.
7. bytecoded 26 11.09.15 07:07 Сейчас в теме
	Схема = Элементы.МегапротозаказПозиции.ПолучитьИсполняемуюСхемуКомпоновкиДанных();
	Настройки = Элементы.МегапротозаказПозиции.ПолучитьИсполняемыеНастройкиКомпоновкиДанных();
		                                                                               
	НовоеПоле = Настройки.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));
	НовоеПоле.Использование = Истина;

Нет, автополе тоже не срабатывает в этой ситуации (не добавляет нужные поля в ТЗ). Комбинация из автополя и выбранного поля – тоже.
12. orion_king 17.09.15 11:30 Сейчас в теме
А почему сразу не обратиться к источнику данных у элемента?
Там и хранятся все строки, даже те которые не выведены
14. 6JIoHguH 29 13.08.19 10:41 Сейчас в теме
Вот так, вроде, получилось отобразить в настройках колонку:

	Схема = Элементы.ДинамическийСписокФормы.ПолучитьИсполняемуюСхемуКомпоновкиДанных();
	Настройки = Элементы.ДинамическийСписокФормы.ПолучитьИсполняемыеНастройкиКомпоновкиДанных();
	
	НовоеПоле = Настройки.Структура[0].Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
	НовоеПоле.Использование = Истина;	
	НовоеПоле.Поле = Новый ПолеКомпоновкиДанных("СкрытоеНаФормеПолеСписка");
	НовоеПоле.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ;
	
	КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных();
	МакетКомпоновки = КомпоновщикМакета.Выполнить(Схема, Настройки, , , Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
	
	ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
	ПроцессорКомпоновки.Инициализировать(МакетКомпоновки);
	
	ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
	
	СтрокиТрудозатрат = ПроцессорВывода.Вывести(ПроцессорКомпоновки);
	
	МассивСтрок = СтрокиТрудозатрат.ВыгрузитьКолонку("СкрытоеНаФормеПолеСписка");
Показать
Surushi; Eeeehhhh; Hogyoku; G_114775148063573432765; user1427893; Quasar; Кузьмич; +7 Ответить
Оставьте свое сообщение

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