По теме из базы знаний
- Универсальный обмен данными XML (с гибкими отборами и сохранением вариантов настроек)
- Строковые отборы в 1С
- Расшифровка СКД. Фильтр отчета по диапазону чисел. Переопределение обработки расшифровки. Не модальный режим
- Распространенные ошибки разработчиков, приводящие к проблемам производительности
- Расширение: Быстрые отборы через буфер [Alt+C] Копировать список, [Alt+V] Вставить список, [Ctrl+C] Копировать из файлов
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Известных мне методов кроме как "Найти" и "НайтиСтроки" нет. А они не решают поставленную задачу. Как вариант - копированием таблицы и удалением из нее строк.
Есть вариант изящнее: передать таблицу в запрос, а в запросе уже сделать какое угодно условие)
Есть вариант изящнее: передать таблицу в запрос, а в запросе уже сделать какое угодно условие)
Первый вариант - как уже упомянули, запросом.
Второй:
Только если так. Варианты улучшение производительности на больших объемах: индексирование ТЗ или переход на использование запроса :)
Второй:
НенужныеСтроки = ТЗ.НайтиСтроки(Новый Структура("Наименование", "Ненужное наименование"));
Для Каждого СтрокаТЗ Из ТЗ Цикл
Если НенужныеСтроки.Найти(СтрокаТЗ) <> Неопределено Тогда
Продолжить;
КонецЕсли;
// Обрабатываем строки
КонецЦикла;
Только если так. Варианты улучшение производительности на больших объемах: индексирование ТЗ или переход на использование запроса :)
Ну или еще как вариант, правда слегка более "накрученный":
Вариант имеет смысл при условии, что ненужных строк значительно меньше чем остальных. И опять же, при больших объемах, не забывай про индексацию.
ТЗ.Колонки.Добавить("ЭтоНенужнаяСтрока", Новый ОписаниеТипов("Булево"));
НенужныеСтроки = ТЗ.НайтиСтроки(Новый Структура("Наименование", "Ненужное наименование"));
Для Каждого НенужнаяСтрока Из НенужныеСтроки Цикл
НенужнаяСтрока.ЭтоНенужнаяСтрока = Истина;
КонецЦикла;
НужныеСтроки = ТЗ.НайтиСтроки(Новый Структура("ЭтоНенужнаяСтрока", Ложь));
Вариант имеет смысл при условии, что ненужных строк значительно меньше чем остальных. И опять же, при больших объемах, не забывай про индексацию.
А вот еще один:
Построитель = Новый ПостроительЗапроса;
Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТаблицаДанных); //Твоя ТЗ
СтрокаОтбора = Построитель.Отбор.Добавить("СпособОтраженияЗарплатыВБухучете"); // в Колонке
СтрокаОтбора.ВидСравнения = ВидСравнения.НеРавно;
СтрокаОтбора.Значение = Справочники.СпособыОтраженияЗарплатыВБухУчете.НайтиПоНаименованию("К распределению"); // значение по которому делать отбор
СтрокаОтбора.Использование = Истина;
Построитель.Выполнить();
ТаблицаДанныхНеРаспределять = Построитель.Результат.Выгрузить(); // вуаля
Построитель = Новый ПостроительЗапроса;
Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТаблицаДанных); //Твоя ТЗ
СтрокаОтбора = Построитель.Отбор.Добавить("СпособОтраженияЗарплатыВБухучете"); // в Колонке
СтрокаОтбора.ВидСравнения = ВидСравнения.НеРавно;
СтрокаОтбора.Значение = Справочники.СпособыОтраженияЗарплатыВБухУчете.НайтиПоНаименованию("К распределению"); // значение по которому делать отбор
СтрокаОтбора.Использование = Истина;
Построитель.Выполнить();
ТаблицаДанныхНеРаспределять = Построитель.Результат.Выгрузить(); // вуаля
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот