ОтборСтрок в 1С 8.3 аналогично 8.2 как?

1. MyNameNoName 02.09.17 11:10 Сейчас в теме
Здравствуйте.
Есть код:
ТекущиеДанныеНоменклатура = ЭлементыФормы.Товары.ТекущиеДанные;
Если ТекущиеДанныеНоменклатура = Неопределено Тогда
	НоменклатураДляОтбора = "";
Иначе
	НоменклатураДляОтбора = ТекущиеДанныеНоменклатура.Идентификатор;
КонецЕсли;
Если ТекущиеДанныеНоменклатура = Неопределено Тогда
	ТипПрофиляДляОтбора = Перечисления.ТипыПрофиля.ПустаяСсылка();
Иначе
	ТипПрофиляДляОтбора = ТекущиеДанныеНоменклатура.ТипПрофиля;
КонецЕсли;
МассивТабличныхПолейОбновить = Новый Массив;	
МассивТабличныхПолейОбновить.Добавить("Товары");
Для Каждого ИмяТабличногоПоля ИЗ МассивТабличныхПолейОбновить Цикл
	КоллекцияОтбора = ЭлементыФормы[ИмяТабличногоПоля].ОтборСтрок;
	ЭлементОтбораПоНоменклатуре = КоллекцияОтбора.Идентификатор;
	СтруктураНовыхЗначенийОтбора = 
		Новый Структура(
			"ВидСравнения,
			|Использование,
			|Значение",
			ВидСравнения.Равно,
			ИСТИНА,
			НоменклатураДляОтбора);
	Для Каждого КлючЗначение ИЗ СтруктураНовыхЗначенийОтбора Цикл
		Если ЭлементОтбораПоНоменклатуре[КлючЗначение.Ключ] <> КлючЗначение.Значение Тогда
			ЭлементОтбораПоНоменклатуре[КлючЗначение.Ключ] = КлючЗначение.Значение;
		КонецЕсли;
	КонецЦикла;
	ЭлементОтбораПоТипыПрофиля = КоллекцияОтбора.ТипПрофиля;
	СтруктураНовыхЗначенийОтбора = 
		Новый Структура(
			"ВидСравнения,
			|Использование,
			|Значение",
			ВидСравнения.Равно,
			ИСТИНА,
			ТипПрофиляДляОтбора);
	Для Каждого КлючЗначение ИЗ СтруктураНовыхЗначенийОтбора Цикл
		Если ЭлементОтбораПоТипыПрофиля[КлючЗначение.Ключ] <> КлючЗначение.Значение Тогда
			ЭлементОтбораПоТипыПрофиля[КлючЗначение.Ключ] = КлючЗначение.Значение;
		КонецЕсли;
	КонецЦикла;
КонецЦикла;
Показать

Код на писана на 1С 8.2 Обычное приложение. Нужно переписать на УФ 8.3
Но тут есть ОтборСтрок - в обычном приложении это отбор, в управляемом - фиксированная структура.

Как правильно данный кусок кода переписать на 8.3:
КоллекцияОтбора = Элементы[ИмяТабличногоПоля].ОтборСтрок;
ЭлементОтбораПоНоменклатуре = КоллекцияОтбора.Идентификатор;

При таком отборе возвращается значение КоллекцияОтбора = Неопределено.
Что-то не понимаю я уже весь интернет перерыл не могу найти решение.
Очень большое спасибо за помощь!
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. Xershi 1484 02.09.17 11:21 Сейчас в теме
(1) отбор нужно делать на клиенте или на сервере?
MyNameNoName; +1 Ответить
5. nvv1970 02.09.17 11:41 Сейчас в теме
(3) без разницы. Работает и на клиенте, и на сервере. Выполняет неявный вызов сервера (но кстати есть недокументированный рецепт как этого избежать)
СП читали? Там все есть.
ОтборСтрок = новый фиксированная структура(... Все работает. А у вас какой-то, извиняюсь, бред.
MyNameNoName; +1 Ответить
7. MyNameNoName 02.09.17 11:46 Сейчас в теме
(5)
Это не мой код, мне его под 8.3 адаптировать нужно... Я сам в нем голову ломаю, но он работает. Поэтому по максимуму хочу остаться на том что есть пока что. А потом как будет время уже разбираться.
Пробовал так:
тФиксированнаяСтруктура = Новый ФиксированнаяСтруктура();
Элементы[ИмяТабличногоПоля].ОтборСтрок = тФиксированнаяСтруктура;

не помогает...
8. nvv1970 02.09.17 11:51 Сейчас в теме
(7) не не не... Ну в сп же есть примеры!
Для установки отбора присваиваете фструк. внутри которой должен быть "отбор", т.е. какие-то ключи и значения!!!
Для сброса отбора присваиваете не пустую структуру, на просто неопределено.

Что вы подразумеваете под переписыванием под 83?
MyNameNoName; +1 Ответить
9. MyNameNoName 02.09.17 11:55 Сейчас в теме
(8)
У меня обработка есть которая в 8.2 работает (обычное приложение). Организация перешла на 8.3. Теперь ее нужно там заставить работать.
Обработка не моя дилерская под обычное приложение, под УФ сами делайте...
11. sansys 76 02.09.17 11:57 Сейчас в теме
(7) тФиксированнаяСтруктура = Новый ФиксированнаяСтруктура("ИмяРеквизита", ЗначениеРеквизита);

Элементы[ИмяТабличногоПоля].ОтборСтрок = тФиксированнаяСтруктура;

Так всё работает
user797130; MyNameNoName; +2 Ответить
12. MyNameNoName 02.09.17 11:59 Сейчас в теме
(11)А какое ЗначениеРеквизита мне указывать???
16. sansys 76 02.09.17 12:05 Сейчас в теме
(12) Указать значение по которому необходим отбор Пример: есть реквизиты ИД и Наименование, нужно отобрать все строки где ИД = 10 -- тФиксированнаяСтруктура = Новый ФиксированнаяСтруктура("ИД", 10);
Infinita; MyNameNoName; +2 Ответить
17. MyNameNoName 02.09.17 12:06 Сейчас в теме
(16)Это я понимаю прекрасно, тут вопросов нет.
Возьмите мой пример кода за образец, что в нем указывать?
18. sansys 76 02.09.17 12:11 Сейчас в теме
(16) Код выдранный из моей конфы выполняется в ПриАктивизацииСтроки таб. Гарафик
ТекДанные = Элементы.График.ТекущиеДанные;
	Если ТекДанные = Неопределено Тогда
		КлючСтроки = 0;
		ЗаданияИсполнителямТолькоПросмотр = Истина;
	Иначе
		КлючСтроки = ТекДанные.КлючСтроки;
		ЗаданияИсполнителямТолькоПросмотр = ТекДанные.Пройден;
	КонецЕсли;
	КлючОтбора = Новый ФиксированнаяСтруктура("КлючСтроки", КлючСтроки);
	Элементы.	ТекДанные = Элементы.График.ТекущиеДанные;
	Если ТекДанные = Неопределено Тогда
		КлючСтроки = 0;
		ЗаданияИсполнителямТолькоПросмотр = Истина;
	Иначе
		КлючСтроки = ТекДанные.КлючСтроки;
		ЗаданияИсполнителямТолькоПросмотр = ТекДанные.Пройден;
	КонецЕсли;
	КлючОтбора = Новый ФиксированнаяСтруктура("КлючСтроки", КлючСтроки);
	Элементы.ЗаданияИсполнителям.ОтборСтрок = КлючОтбора;
	Элементы.ЗаданияИсполнителям.ТолькоПросмотр = ЗаданияИсполнителямТолькоПросмотр;
	
	Элементы.Мероприятия.ОтборСтрок = КлючОтбора;
	Элементы.Мероприятия.ТолькоПросмотр = ЗаданияИсполнителямТолькоПросмотр;
        Элементы.ЗаданияИсполнителям.ОтборСтрок = КлючОтбора;
	Элементы.ЗаданияИсполнителям.ТолькоПросмотр = ЗаданияИсполнителямТолькоПросмотр;
	
	Элементы.Мероприятия.ОтборСтрок = КлючОтбора;
	Элементы.Мероприятия.ТолькоПросмотр = ЗаданияИсполнителямТолькоПросмотр;
Показать

Здесь выполняется отбор сразу в двух таблицах
MyNameNoName; +1 Ответить
20. A.Sytchev 15.01.19 18:50 Сейчас в теме
(5) А не поделитесь этим "недокументированным рецептом" как избежать неявного серверного вызова?
21. nvv1970 15.01.19 21:06 Сейчас в теме
(20) ПриСозданииНаСервере просто цикл по строкам. Этакий вредный в части потребления памяти лайфхак.
Связано с механизмом "подчитывания" данных ТЧ из базы. После цикла Строки не "подчитываются из базы", а остаются в памяти. Отбор работает мгновенно.
Использовать только при наличии понимания потребления ресурсов.
A.Sytchev; +1 Ответить
22. A.Sytchev 17.01.19 10:04 Сейчас в теме
(21)
ПриСозданииНаСервере просто цикл по строкам. Этакий вредный в части потребления памяти лайфхак.
Связано с механизмом "подчитывания" данных ТЧ из базы. После цикла Строки не "подчитываются из базы", а остаются в памяти. Отбор работает мгновенно.
Использовать только при наличии понимания потребления ресурсов.


Спасибо большое, будем проверять!
23. A.Sytchev 22.01.19 18:17 Сейчас в теме
(21) Коллега, действительно все работает, только с поправкой, что в цикле строки нужно обойти в клиентской процедуре.
2. MyNameNoName 02.09.17 11:13 Сейчас в теме
У меня очень много где такие вставки по коду есть не хотелось бы все глобально переписывать.
6. nvv1970 02.09.17 11:45 Сейчас в теме
(2) 82 и 83 ничем глобально не отличаются. А вот обычная форма и управляемая не имеют ничего общего.
Не переписывайте и будет счастье))
Собрались переписывать - пишите в обычном приложении управляемые формы. Процесс понимания долгий.
MyNameNoName; +1 Ответить
4. MyNameNoName 02.09.17 11:37 Сейчас в теме
Не указал. На клиенте.
10. MyNameNoName 02.09.17 11:57 Сейчас в теме
Да я понял что какой-то отбор ставить нужно по СП, но Вы сами на код посмотрите.
13. MyNameNoName 02.09.17 11:59 Сейчас в теме
Видимо придется с головой погружаться что в этом коде происходит...
14. nvv1970 02.09.17 11:59 Сейчас в теме
Понятия Обычное/управляемое приложение и обычные/управляемые формы отличаете?
Вы смешали все в кучу.
Приложение не важно. Форма у вас какая??? Отбор Строк - это для управляемой формы. Для обычной используйте отбор.
MyNameNoName; +1 Ответить
15. MyNameNoName 02.09.17 12:00 Сейчас в теме
Форма управляемая. А за основу я беру обыную форму.
19. sansys 76 02.09.17 12:13 Сейчас в теме
чот вставка за двоилась

ТекДанные = Элементы.График.ТекущиеДанные;
	Если ТекДанные = Неопределено Тогда
		КлючСтроки = 0;
		ЗаданияИсполнителямТолькоПросмотр = Истина;
	Иначе
		КлючСтроки = ТекДанные.КлючСтроки;
		ЗаданияИсполнителямТолькоПросмотр = ТекДанные.Пройден;
	КонецЕсли;
	КлючОтбора = Новый ФиксированнаяСтруктура("КлючСтроки", КлючСтроки);
	Элементы.ЗаданияИсполнителям.ОтборСтрок = КлючОтбора;
	Элементы.ЗаданияИсполнителям.ТолькоПросмотр = ЗаданияИсполнителямТолькоПросмотр;
	
	Элементы.Мероприятия.ОтборСтрок = КлючОтбора;
	Элементы.Мероприятия.ТолькоПросмотр = ЗаданияИсполнителямТолькоПросмотр;
Показать
MyNameNoName; +1 Ответить
Оставьте свое сообщение

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