1. Terebinator 14.05.19 11:02 Сейчас в теме

Удаление пустых строк табличной части

Добрый день. Подскажите юному начинающему программисту.
Как удалить пустые строки табличной части?
БП3.0
Прикрепленные файлы:
Найденные решения
19. Vlan 11 16.05.19 09:18 Сейчас в теме
Еще со времен 7.7 я всегда удалял пустые строки перебором с конца. Тогда за один цикл все удаляются.
&НаКлиенте
Процедура УдалитьПустые(Команда)
	Сч = Объект.Контрагенты.Количество();
	Пока Сч > 0 Цикл
		Сч = Сч - 1;
		Строка = Объект.Контрагенты[сч];
		Если НЕ ЗначениеЗаполнено(Строка.Контрагент) Тогда
			Объект.Контрагенты.Удалить(Сч);
		КонецЕсли;
	КонецЦикла;
КонецПроцедуры
Показать
Terebinator; +1 Ответить
Остальные ответы
Избранное Подписка Сортировка: Древо
2. alex-l19041 9 14.05.19 11:07 Сейчас в теме
(1) код которым заполняются эти строки ?
4. Terebinator 14.05.19 11:12 Сейчас в теме
(2) НоваяСтрока = Объект.ДанныеТО.Добавить();
НоваяСтрока.Контрагент = Сред(ДанныеСтроки[0], Найти(ДанныеСтроки[0], "\")+1);
НоваяСтрока.Контрагент = Сред(НоваяСтрока.Контрагент, Найти(НоваяСтрока.Контрагент, "\")+1);
НоваяСтрока.Контрагент = Сред(НоваяСтрока.Контрагент, Найти(НоваяСтрока.Контрагент, "\")+1);
НоваяСтрока.Контрагент = Лев(НоваяСтрока.Контрагент, СтрНайти(НоваяСтрока.Контрагент, "\", НаправлениеПоиска.СКонца)-1);
НоваяСтрока.Сумма = ДанныеСтроки[0];
НоваяСтрока.Количество = Сред(ДанныеСтроки[0], Найти(ДанныеСтроки[0], " (")+2);
НоваяСтрока.Количество = Лев(НоваяСтрока.Количество, СтрНайти(НоваяСтрока.Количество, ")", НаправлениеПоиска.СКонца)-1);

RegExp = Новый COMОбъект("VBScript.RegExp");
RegExp.IgnoreCase = Истина; //Игнорировать регистр
RegExp.Global = Истина; //Поиск всех вхождений шаблона
RegExp.MultiLine = Истина; //Многострочный режим

RegExp.Pattern = "[^0-9]"; // отбор только чисел
НоваяСтрока.Количество = RegExp.Replace(НоваяСтрока.Количество, "");
11. alex-l19041 9 14.05.19 11:22 Сейчас в теме
(4) НоваяСтрока = Объект.ДанныеТО.Добавить() надо делать после того как
Контрагент = Сред(ДанныеСтроки[0], Найти(ДанныеСтроки[0], "\")+1) вернет не пустое значение
12. catena 99 14.05.19 11:24 Сейчас в теме
+(11), я тоже за то, чтобы не добавлять что-нибудь ненужное, а не удалять
5. tusv 147 14.05.19 11:12 Сейчас в теме
(1)Шивт +Стрлка вниз по ненужным строкам и делите;)
А программно, На сервере Приблизительно так
Строки = ТЧ.НайтиСтроки(Новый Структура("Контрагент,Количество,Сумма", Справочники.Контрагенты.ПустаяСсылка,0,0));
Для каждого текстр из Строки Цикл
   Тч.Удалить(Текстр);
КонецЦикла

ТЧ это фамилия такая, моя. Подставьте свою
6. dchumak 40 14.05.19 11:13 Сейчас в теме
(5) неправильно.
при удалении строки сдвинутся и не все будут удалены.
Алгоритм такой:
1. Перебираете табличную часть, строки с незаполненным контрагентом пишете в массив
2. Перебираете массив и удаляете строку из табличной части по строке массива.
вот в этом случае будет удалено все.
9. tusv 147 14.05.19 11:20 Сейчас в теме
(6)Кофе в доме закончился. Ужос. А пока иду за допингом жду Вас Здесь.
Минус тоже результат. Не в обиде
VladimirElohov; +1 Ответить
8. catena 99 14.05.19 11:19 Сейчас в теме
(5)(7) Только судя по коду у него Контрагент - строка)) И Количество, похоже, тоже.
10. Terebinator 14.05.19 11:22 Сейчас в теме
(8)верно. все строка. иначе никак) работа со строкой.
3. catena 99 14.05.19 11:08 Сейчас в теме
Юный начинающий ждет готовый код или готов искать от подсказки?

Выгрузить в ТЗ, найти строки, удалить, загрузить в ТЧ.
7. dchumak 40 14.05.19 11:17 Сейчас в теме
МассивОтмененныхСтрок = ТЧ.НайтиСтроки(Новый Структура("Контрагент,Количество,Сумма", Справочники.Контрагенты.ПустаяСсылка,0,0));
Для Каждого СтрокаМассивОтмененныхСтрок Из МассивОтмененныхСтрок Цикл
ТЧ.Удалить(СтрокаМассивОтмененныхСтрок);
КонецЦикла;
13. tusv 147 14.05.19 11:25 Сейчас в теме
(7)Сами Вы минус;)
Вот правильно
Строки = ТЧ.НайтиСтроки(Новый Структура("Контрагент,Количество,Сумма", Справочники.Контрагенты.ПустаяСсылка,0,0));
Пока Строки.Количество() Цикл
   Тч.Удалить(Строки[0]);
КонецЦикла:

Это я еще за кофе не сгонял
Но (8) первым догадался, где косяк
14. catena 99 14.05.19 11:28 Сейчас в теме
(13)Кофе все-таки нужен)))
Terebinator; tusv; +2 Ответить
15. tusv 147 14.05.19 11:29 Сейчас в теме
(14)Не ну. Категоричный плюс;)
16. Terebinator 14.05.19 11:39 Сейчас в теме
(13)Контрагент не ссылка. а строка
17. tusv 147 14.05.19 12:03 Сейчас в теме
(16)Ну тады
Строки = ТЧ.НайтиСтроки(Новый Структура("Контрагент,Количество,Сумма","",0,0));
Пока Строки.Количество() Цикл
   Тч.Удалить(Строки[0]);
КонецЦикла:
18. Mar12 15.05.19 15:20 Сейчас в теме
CTRL+F
CTRL+A
DEL

Хороший программист = ленивый программист.
19. Vlan 11 16.05.19 09:18 Сейчас в теме
Еще со времен 7.7 я всегда удалял пустые строки перебором с конца. Тогда за один цикл все удаляются.
&НаКлиенте
Процедура УдалитьПустые(Команда)
	Сч = Объект.Контрагенты.Количество();
	Пока Сч > 0 Цикл
		Сч = Сч - 1;
		Строка = Объект.Контрагенты[сч];
		Если НЕ ЗначениеЗаполнено(Строка.Контрагент) Тогда
			Объект.Контрагенты.Удалить(Сч);
		КонецЕсли;
	КонецЦикла;
КонецПроцедуры
Показать
Terebinator; +1 Ответить
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Руководитель отдела внедрения 1С
Новосибирск
зарплата от 60 000 руб. до 160 000 руб.
Полный день

Ведущий программист 1С
Москва
зарплата от 120 000 руб. до 150 000 руб.
Полный день

Программист 1С
Самара
зарплата от 50 000 руб. до 100 000 руб.
По совместительству


Ведущий программист 1С
Сочи
зарплата от 82 500 руб. до 99 000 руб.
Полный день