Здравствуйте.
Есть код:
Код на писана на 1С 8.2 Обычное приложение. Нужно переписать на УФ 8.3
Но тут есть ОтборСтрок - в обычном приложении это отбор, в управляемом - фиксированная структура.
Как правильно данный кусок кода переписать на 8.3:
При таком отборе возвращается значение КоллекцияОтбора = Неопределено.
Что-то не понимаю я уже весь интернет перерыл не могу найти решение.
Очень большое спасибо за помощь!
Есть код:
ТекущиеДанныеНоменклатура = ЭлементыФормы.Товары.ТекущиеДанные;
Если ТекущиеДанныеНоменклатура = Неопределено Тогда
НоменклатураДляОтбора = "";
Иначе
НоменклатураДляОтбора = ТекущиеДанныеНоменклатура.Идентификатор;
КонецЕсли;
Если ТекущиеДанныеНоменклатура = Неопределено Тогда
ТипПрофиляДляОтбора = Перечисления.ТипыПрофиля.ПустаяСсылка();
Иначе
ТипПрофиляДляОтбора = ТекущиеДанныеНоменклатура.ТипПрофиля;
КонецЕсли;
МассивТабличныхПолейОбновить = Новый Массив;
МассивТабличныхПолейОбновить.Добавить("Товары");
Для Каждого ИмяТабличногоПоля ИЗ МассивТабличныхПолейОбновить Цикл
КоллекцияОтбора = ЭлементыФормы[ИмяТабличногоПоля].ОтборСтрок;
ЭлементОтбораПоНоменклатуре = КоллекцияОтбора.Идентификатор;
СтруктураНовыхЗначенийОтбора =
Новый Структура(
"ВидСравнения,
|Использование,
|Значение",
ВидСравнения.Равно,
ИСТИНА,
НоменклатураДляОтбора);
Для Каждого КлючЗначение ИЗ СтруктураНовыхЗначенийОтбора Цикл
Если ЭлементОтбораПоНоменклатуре[КлючЗначение.Ключ] <> КлючЗначение.Значение Тогда
ЭлементОтбораПоНоменклатуре[КлючЗначение.Ключ] = КлючЗначение.Значение;
КонецЕсли;
КонецЦикла;
ЭлементОтбораПоТипыПрофиля = КоллекцияОтбора.ТипПрофиля;
СтруктураНовыхЗначенийОтбора =
Новый Структура(
"ВидСравнения,
|Использование,
|Значение",
ВидСравнения.Равно,
ИСТИНА,
ТипПрофиляДляОтбора);
Для Каждого КлючЗначение ИЗ СтруктураНовыхЗначенийОтбора Цикл
Если ЭлементОтбораПоТипыПрофиля[КлючЗначение.Ключ] <> КлючЗначение.Значение Тогда
ЭлементОтбораПоТипыПрофиля[КлючЗначение.Ключ] = КлючЗначение.Значение;
КонецЕсли;
КонецЦикла;
КонецЦикла;
ПоказатьКод на писана на 1С 8.2 Обычное приложение. Нужно переписать на УФ 8.3
Но тут есть ОтборСтрок - в обычном приложении это отбор, в управляемом - фиксированная структура.
Как правильно данный кусок кода переписать на 8.3:
КоллекцияОтбора = Элементы[ИмяТабличногоПоля].ОтборСтрок;
ЭлементОтбораПоНоменклатуре = КоллекцияОтбора.Идентификатор;
При таком отборе возвращается значение КоллекцияОтбора = Неопределено.
Что-то не понимаю я уже весь интернет перерыл не могу найти решение.
Очень большое спасибо за помощь!
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(3) без разницы. Работает и на клиенте, и на сервере. Выполняет неявный вызов сервера (но кстати есть недокументированный рецепт как этого избежать)
СП читали? Там все есть.
ОтборСтрок = новый фиксированная структура(... Все работает. А у вас какой-то, извиняюсь, бред.
СП читали? Там все есть.
ОтборСтрок = новый фиксированная структура(... Все работает. А у вас какой-то, извиняюсь, бред.
(5)
Это не мой код, мне его под 8.3 адаптировать нужно... Я сам в нем голову ломаю, но он работает. Поэтому по максимуму хочу остаться на том что есть пока что. А потом как будет время уже разбираться.
Пробовал так:
не помогает...
Это не мой код, мне его под 8.3 адаптировать нужно... Я сам в нем голову ломаю, но он работает. Поэтому по максимуму хочу остаться на том что есть пока что. А потом как будет время уже разбираться.
Пробовал так:
тФиксированнаяСтруктура = Новый ФиксированнаяСтруктура();
Элементы[ИмяТабличногоПоля].ОтборСтрок = тФиксированнаяСтруктура;
не помогает...
(7) не не не... Ну в сп же есть примеры!
Для установки отбора присваиваете фструк. внутри которой должен быть "отбор", т.е. какие-то ключи и значения!!!
Для сброса отбора присваиваете не пустую структуру, на просто неопределено.
Что вы подразумеваете под переписыванием под 83?
Для установки отбора присваиваете фструк. внутри которой должен быть "отбор", т.е. какие-то ключи и значения!!!
Для сброса отбора присваиваете не пустую структуру, на просто неопределено.
Что вы подразумеваете под переписыванием под 83?
(16) Код выдранный из моей конфы выполняется в ПриАктивизацииСтроки таб. Гарафик
Здесь выполняется отбор сразу в двух таблицах
ТекДанные = Элементы.График.ТекущиеДанные;
Если ТекДанные = Неопределено Тогда
КлючСтроки = 0;
ЗаданияИсполнителямТолькоПросмотр = Истина;
Иначе
КлючСтроки = ТекДанные.КлючСтроки;
ЗаданияИсполнителямТолькоПросмотр = ТекДанные.Пройден;
КонецЕсли;
КлючОтбора = Новый ФиксированнаяСтруктура("КлючСтроки", КлючСтроки);
Элементы. ТекДанные = Элементы.График.ТекущиеДанные;
Если ТекДанные = Неопределено Тогда
КлючСтроки = 0;
ЗаданияИсполнителямТолькоПросмотр = Истина;
Иначе
КлючСтроки = ТекДанные.КлючСтроки;
ЗаданияИсполнителямТолькоПросмотр = ТекДанные.Пройден;
КонецЕсли;
КлючОтбора = Новый ФиксированнаяСтруктура("КлючСтроки", КлючСтроки);
Элементы.ЗаданияИсполнителям.ОтборСтрок = КлючОтбора;
Элементы.ЗаданияИсполнителям.ТолькоПросмотр = ЗаданияИсполнителямТолькоПросмотр;
Элементы.Мероприятия.ОтборСтрок = КлючОтбора;
Элементы.Мероприятия.ТолькоПросмотр = ЗаданияИсполнителямТолькоПросмотр;
Элементы.ЗаданияИсполнителям.ОтборСтрок = КлючОтбора;
Элементы.ЗаданияИсполнителям.ТолькоПросмотр = ЗаданияИсполнителямТолькоПросмотр;
Элементы.Мероприятия.ОтборСтрок = КлючОтбора;
Элементы.Мероприятия.ТолькоПросмотр = ЗаданияИсполнителямТолькоПросмотр;
ПоказатьЗдесь выполняется отбор сразу в двух таблицах
(20) ПриСозданииНаСервере просто цикл по строкам. Этакий вредный в части потребления памяти лайфхак.
Связано с механизмом "подчитывания" данных ТЧ из базы. После цикла Строки не "подчитываются из базы", а остаются в памяти. Отбор работает мгновенно.
Использовать только при наличии понимания потребления ресурсов.
Связано с механизмом "подчитывания" данных ТЧ из базы. После цикла Строки не "подчитываются из базы", а остаются в памяти. Отбор работает мгновенно.
Использовать только при наличии понимания потребления ресурсов.
(21)
Спасибо большое, будем проверять!
ПриСозданииНаСервере просто цикл по строкам. Этакий вредный в части потребления памяти лайфхак.
Связано с механизмом "подчитывания" данных ТЧ из базы. После цикла Строки не "подчитываются из базы", а остаются в памяти. Отбор работает мгновенно.
Использовать только при наличии понимания потребления ресурсов.
Связано с механизмом "подчитывания" данных ТЧ из базы. После цикла Строки не "подчитываются из базы", а остаются в памяти. Отбор работает мгновенно.
Использовать только при наличии понимания потребления ресурсов.
Спасибо большое, будем проверять!
Понятия Обычное/управляемое приложение и обычные/управляемые формы отличаете?
Вы смешали все в кучу.
Приложение не важно. Форма у вас какая??? Отбор Строк - это для управляемой формы. Для обычной используйте отбор.
Вы смешали все в кучу.
Приложение не важно. Форма у вас какая??? Отбор Строк - это для управляемой формы. Для обычной используйте отбор.
чот вставка за двоилась
ТекДанные = Элементы.График.ТекущиеДанные;
Если ТекДанные = Неопределено Тогда
КлючСтроки = 0;
ЗаданияИсполнителямТолькоПросмотр = Истина;
Иначе
КлючСтроки = ТекДанные.КлючСтроки;
ЗаданияИсполнителямТолькоПросмотр = ТекДанные.Пройден;
КонецЕсли;
КлючОтбора = Новый ФиксированнаяСтруктура("КлючСтроки", КлючСтроки);
Элементы.ЗаданияИсполнителям.ОтборСтрок = КлючОтбора;
Элементы.ЗаданияИсполнителям.ТолькоПросмотр = ЗаданияИсполнителямТолькоПросмотр;
Элементы.Мероприятия.ОтборСтрок = КлючОтбора;
Элементы.Мероприятия.ТолькоПросмотр = ЗаданияИсполнителямТолькоПросмотр;
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот