Как проверить таблицу значений на пустоту 1с
Перейти к содержимому

Как проверить таблицу значений на пустоту 1с

  • автор:

Проверка на пустой результат выполнения запроса

Область применения: управляемое приложение, мобильное приложение, обычное приложение.

1. Проверку того, что результат выполнения запроса не содержит строк следует выполнять с помощью метода Пустой . Поскольку на получение выборки из результата запроса (выгрузка его в таблицу значений) будет затрачиваться дополнительное время.

Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Возврат Истина;
Иначе
Возврат Ложь;
КонецЕсли;

Возврат НЕ Запрос.Выполнить().Пустой()

Методическая рекомендация (полезный совет)

2. В то же время если требуется выбрать (или выгрузить) результат запроса, то предварительный вызов метода Пустой не требуется.
Например, вместо:

РезультатЗапроса = Запрос.Выполнить();
Если НЕ РезультатЗапроса.Пустой() Тогда // избыточный вызов
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
.

Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
.

Как проверить таблицу значений на пустоту 1с

Как проверить н пустату таблицу значений?

ТЗ.Количество()=0

(1) Большое спасибо

(1) Ему бы лучше научиться Ctrl+Shift+F1 нажимать. 😉

(3) Следует возрадоваться тому, что хоть здесь он что-то читает.

(3) Это слишком сложно. Лучше просто F1

(1) лучше даже так ТЗ_80.Количество()=0
это ведь по 8-ке вопрос, а не по какай-то там 7-ке 🙂

(7) Можно еще так (метод Рупора):

Попытка
а = тз[0];
Исключение
Сообщить(«Таблица значений пустая»);
КонецПопытки;

(8) Что-то мне кажется что попытку использовать нужно осторожно, предполагаю что тормоза там будут.

(10) Это же разовая операция, а не цикл. Да и нет операций с БД. Можно не обращать внимания.

AdBlock убивает бесплатный контент. 1Сергей

1С 8.3 Удаление пустой строки Таблицы значений — Программист 1С Минск. Автоматизация бизнеса.

ПРИМЕРЫ КОДА 1С

Перейти в раздел примеры кода 1С 8.3:

Программно удаляем пустую строку в ТЗ (проверка на пустоту по определенным колонкам) в 1С 8.3:

Процедура УдалитьПустуюСтрокуТЗпоОпредКолонкам ( ТаблЗнач ) Экспорт

// Проверяем колонки: «Код», «Наименование» и «Цена» не заполненность
// если данные строки (по перечисленным колонкам) пустые — удаляем строку
НаименованияСтолбцов = Новый Структура ( «Код, Наименование, Цена» , «» , «» , «» );
ПустыеСтроки = ТаблЗнач . НайтиСтроки ( НаименованияСтолбцов );
Для Каждого СтрокаТЗ Из ПустыеСтроки Цикл
ТаблЗнач . Удалить ( СтрокаТЗ );
КонецЦикла;

Программно удаляем пустую строку в ТЗ (по определенной колонке) с доп. проверками в 1С 8.3:

Функция УдалитьПустуюСтрокуТЗ ( Строка_ТЗ , ИмяКолонки_ТЗ = «» ) Экспорт

Перем ТаблЗнач ;
// Доп.проверка на наличие строки ТЗ
Если Строка_ТЗ = Неопределено Тогда
Возврат Ложь;
КонецЕсли;

ТаблЗнач = Строка_ТЗ . Владелец (); //Владелец данной строки
Если НЕ ПустаяСтрока ( ИмяКолонки_ТЗ ) Тогда
//Проверка заполнения
НайдКолонка = ТаблЗнач . Колонки . Найти ( ИмяКолонки_ТЗ );
Если НЕ НайдКолонка = Неопределено Тогда
Если ЗначениеЗаполнено ( Строка_ТЗ [ ИмяКолонки_ТЗ ]) Тогда
// Заполнена, останавливаем функцию
Возврат Ложь;
КонецЕсли;
КонецЕсли;
КонецЕсли;

//Удаление строки
ТаблЗнач . Удалить ( Строка_ТЗ );
Возврат Истина;

Заполнение «пустых» строк табличной части

  • Данный алгоритм предназначен для заполнения строк табличной части элементами по условию пустоты. Если в табличной части существуют «пустые записи» ( в данном примере строки в колонках которых значение не заполнено), то они заполнятся при выборе из формы. Например строки с номерами 2, 5, 12 не заполнены. При пользовательском выборе элементов, значения вставятся соответственно в 2, 5, 12. А не в конец списка. С точки зрения клиент-сервер, алгоритм не совсем оптимизирован, но достаточно универсален.

    &НаКлиенте Процедура Подбор(Команда) ПараметрыФормы = Новый Структура("МножественныйВыбор, ЗакрыватьПриВыборе",Истина,Ложь); ОткрытьФорму("Справочник.Номенклатура.ФормаВыбора",ПараметрыФормы,Элементы.ТаблицаЗначений); // реквизиты: //Таблица значение - ТаблицаЗначений ( Одна колонка "Материал" ) //Команда - " Подбор " КонецПроцедуры &НаКлиенте Функция ПоискПустыхСтрок(Таблица,КоличествоЗначений) МассивПустыхСтрок = Новый Массив(); // В данном массиве будут храниться индексы пустых записей СчетчикПустых = 0; Для Каждого Строка Из Таблица Цикл Если (НЕ ЗначениеЗаполнено(Строка.Материал)) И (СчетчикПустых<КоличествоЗначений) Тогда // Проверяем на заполненность значение в колонке (текущей строки) в цикле И проверяем нужно ли дальше идти по циклу, ведь нам нужно лишь определенное кол пустых строк СчетчикПустых = СчетчикПустых+1; МассивПустыхСтрок.Добавить(Таблица.Индекс(Строка)); // Если значение в определенной колонке "пустое", то добавляем в массив - индекс текущей строки в цикле ИначеЕсли СчетчикПустых=КоличествоЗначений Тогда // Если кол пустых строк и кол значений введенных пользователем равно, то выходим из цикла и не ищем дополнительные пустые строки Возврат МассивПустыхСтрок; КонецЕсли; КонецЦикла; Возврат МассивПустыхСтрок; КонецФункции &НаКлиенте Процедура ТаблицаЗначенийОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) МассивПустыхСтрок = ПоискПустыхСтрок(ТаблицаЗначений,ВыбранноеЗначение.Количество()); // передаем саму таблицу, а также Кол выбранных элементов для того, чтобы не искать все пустые строки, а лишь определенное кол Для Индекс = 0 По ВыбранноеЗначение.ВГраница() Цикл Если Индекс < МассивПустыхСтрок.Количество() Тогда // Если выбранных значений меньше, чем пустых строк, то . иначе, исключительный случай, когда все пустые строки заполнились Строка = ТаблицаЗначений.Вставить(МассивПустыхСтрок[Индекс]); // Вставляем запись вместо пустой, вытесняя пустую запись вниз ( увеличиваем индекс пустой записи на 1, так как работает функция ВСТАВИТЬ() ) Строка.Материал = ВыбранноеЗначение[Индекс]; // Заполняем реквизит табличной части выбранным значением ТаблицаЗначений.Удалить(МассивПустыхСтрок[Индекс]+1); // Удаляем пустую запись, которая ниже добавленной на 1 Иначе Строка = ТаблицаЗначений.Добавить(); // Тот самый случай, когда кол выбранных записей больше, чем пустых строк. В этом случаи добавляем записи в конец табличной части Строка.Материал = ВыбранноеЗначение[Индекс]; КонецЕсли; КонецЦикла; КонецПроцедуры
    &НаКлиенте Процедура Подбор(Команда) ПараметрыФормы = Новый Структура("МножественныйВыбор, ЗакрыватьПриВыборе",Истина,Ложь); ОткрытьФорму("Справочник.Номенклатура.ФормаВыбора",ПараметрыФормы,Элементы.ТаблицаЗначений); // реквизиты: //Таблица значение - ТаблицаЗначений ( Одна колонка "Материал" ) //Команда - " Подбор " КонецПроцедуры &НаКлиенте Функция ПоискПустыхСтрок(Таблица,КоличествоЗначений) МассивПустыхСтрок = Новый Массив(); // В данном массиве будут храниться индексы пустых записей СчетчикПустых = 0; Для Каждого Строка Из Таблица Цикл Если (НЕ ЗначениеЗаполнено(Строка.Материал)) И (СчетчикПустых<КоличествоЗначений) Тогда // Проверяем на заполненность значение в колонке (текущей строки) в цикле И проверяем нужно ли дальше идти по циклу, ведь нам нужно лишь определенное кол пустых строк СчетчикПустых = СчетчикПустых+1; МассивПустыхСтрок.Добавить(Таблица.Индекс(Строка)); // Если значение в определенной колонке "пустое", то добавляем в массив - индекс текущей строки в цикле ИначеЕсли СчетчикПустых=КоличествоЗначений Тогда // Если кол пустых строк и кол значений введенных пользователем равно, то выходим из цикла и не ищем дополнительные пустые строки Возврат МассивПустыхСтрок; КонецЕсли; КонецЦикла; Возврат МассивПустыхСтрок; КонецФункции &НаКлиенте Процедура ТаблицаЗначенийОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) МассивПустыхСтрок = ПоискПустыхСтрок(ТаблицаЗначений,ВыбранноеЗначение.Количество()); // передаем саму таблицу, а также Кол выбранных элементов для того, чтобы не искать все пустые строки, а лишь определенное кол Для Индекс = 0 По ВыбранноеЗначение.ВГраница() Цикл Если Индекс < МассивПустыхСтрок.Количество() Тогда // Если выбранных значений меньше, чем пустых строк, то . иначе, исключительный случай, когда все пустые строки заполнились Строка = ТаблицаЗначений.Вставить(МассивПустыхСтрок[Индекс]); // Вставляем запись вместо пустой, вытесняя пустую запись вниз ( увеличиваем индекс пустой записи на 1, так как работает функция ВСТАВИТЬ() ) Строка.Материал = ВыбранноеЗначение[Индекс]; // Заполняем реквизит табличной части выбранным значением ТаблицаЗначений.Удалить(МассивПустыхСтрок[Индекс]+1); // Удаляем пустую запись, которая ниже добавленной на 1 Иначе Строка = ТаблицаЗначений.Добавить(); // Тот самый случай, когда кол выбранных записей больше, чем пустых строк. В этом случаи добавляем записи в конец табличной части Строка.Материал = ВыбранноеЗначение[Индекс]; КонецЕсли; КонецЦикла; КонецПроцедуры

    2 2 0 0 0 Скопировано.

    ред. 3 года назад

    Недостаточно рейтинга для добавления отрицательного голоса. Шаблон будет скрыт из ваших результатов поиска.

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *