Алгоритм удаления строки из табличной части
Поддержать донатом: donate.stream/ilyaleontyevpro1s
Алгоритм удаления строки из табличной части - это
один из самых простых и популярных алгоритмов, который знать просто обязательно. Может сэкономить кучу времени и сил (но это не точно).
Может быть легко обобщен до алгоритма удаления элемента из практически любой коллекции (типа массива и т.д.)
В этом видео решил поэкспериментировать со вставками. Вроде круто получилось) А вы как считаете?
Мои контакты:
ВКонтакте: ilyaleontyev
Фэйсбук: illeontev
С удовольствием добавлю вас в друзья при условии, что вы не будете меня грузить своими рабочими вопросами :)
Пікірлер: 50
Нам нужно БОЛЬШЕ алгоритмов - коротких и простых))
@user-lj4dm9gs7v
6 жыл бұрын
это точно)))
@user-df4kb1io9l
3 жыл бұрын
@@user-lj4dm9gs7v Первый раз слышу от девушки, что им нужно больше - "коротких"))
@user-xl9pw9mm8s
2 жыл бұрын
Щ
Спасибо за видео, Илья. Как всегда по делу и всё чётко.
Хорошая идея разбирать алгоритмы. Жду новых видео
Класс! Спасибо! Именно практика интересна! Я консультант, программировать учусь с нуля. Мне было интересно!
Илья, Спасибо за видео. Очень помогло решить эту "нерешаемую" задачу))
Спасибо за видео, такие разборы алгоритмов конечно нужны
Илья, респект за видео, для начинающих полезно бесспорно. Но всё же нужно уходить на темную сторону), делать запрос к ТЧ по условию и выборке удалить нужные строки. Думаю будет оптимальнее) решением.
Спасибо Илья. Очень интересная идея видосов про алгоритмы.
@IlyaLeontyev
6 жыл бұрын
Благодарю )
В голове хвалебный текст крутится на страницу А4 десятым шрифтом, но нет времени. Надо учиться. Поэтому так: "Здорово! "
На самом деле поразительно, что так лаконично, с ржомбами и так мало просмотров(
мне нравится!
Здравствуйте, Илья! Спасибо за ваши ролики, я их с удовольствием изучаю и узнаю очень много полезного. Скажите, почему для удаления строки вы использовали цикл "Пока" играя с индексами строки вместо цикла "Для Каждого" удаляя текущую строку по условию Если? Отдельное спасибо за ролики о нетиповом обновлении конфигураций. Собственно, этот комментарий, я наверное, больше написал чтобы выразить благодарность за вашу работу в youtube-сообществе 1с. Что так, что так будет верно, кто как хочет, так и ... как говориться :)
как сформулировать условие на поиск максимальной строки?
Илья, я начинающий. Объясните пожалуйста, почему процедуру создаёте на клиенте? Ведь на клиент передаются не все строки документа табличной части, а только видимые в данный момент, а остальные подгружаются. Что я не правильно понимаю?
@IlyaLeontyev
5 жыл бұрын
Сечете фишку ) Действительно при таком раскладе будет происходить постепенное считывание строк с сервера на клиент, что будет создавать неоправданные лишние серверные вызовы. Поэтому удаление строк лучше выполнить в серверном методе, вызвав его с клиента. Но цель этого видео была именно в демонстрации алгоритма - не хотел вызывать лишних вопросов.
@ffonlfoff5005
5 жыл бұрын
@@IlyaLeontyev Спасибо, а то я начал сомневаться, правильно ли я понимаю клиент серверное взаимодействие системы. Спасибо за ответ. )
Илья, здравствуйте! помогите, пожалуйста, если алгоритм в следующем: мне надо удалить все строки через одну...т.е. удаляем первыю, вторую оставляем, третью-удаляеми т.д. Буду очень благодарна за ответ
@IlyaLeontyev
5 жыл бұрын
Татьяна, можно, например, просто поменять условие в моем примере. Вам надо не ставку НДС проверять в условном операторе, а четность индекса строки (Если ИндексСтроки%2 = 0 Тогда).
@user-mr4sg3uf2x
5 жыл бұрын
@@IlyaLeontyev благодарю за ответ!
@alekseyo279
5 жыл бұрын
С таким условием удалиться все строки кроме первой, по-моему.
@IlyaLeontyev
5 жыл бұрын
@@alekseyo279 попробуйте )
снова напишу, почему раньше этого не видел)))) дикую дичь писал на сервере))
Функцию ПредопределенноеЗначение() оптимальнее вынести из цикла. Она производит обращение к серверу.
@IlyaLeontyev
4 жыл бұрын
Она производит вызов к серверу один раз, затем кеширует это значение. Поэтому оптимальней не станет.
@leonidmessin22
4 жыл бұрын
@@IlyaLeontyev буду знать теперь)
Я тоже каждый раз удивляюсь все новым извращениям. Твой алгоритм интересен, но я не согласен ) Лучший алгоритм - это тот который легко читается и легко модифицируется. Поэтому я для удаления выбрал перебор таблицы снизу уменьшая итератор. Больше никаких условий не нужно и ни за какими переменными не нужно следить. Просто уменьшаете индекс и удаляете нужные строки по пути. И в этот же обход можно добавить код не связанный с удалением. Особую улыбку вызывают те кто предлагают передавать в метод НайтиСтроки структуру с отбором и после обходить полученный массив) Удар по скорости и масшатиборванию. Потом встречаешь такое место где нужно добавить новое условие или дополнить код и переписываешь весь такой подход) Чем они думают?
@IlyaLeontyev
5 жыл бұрын
Жопой :)
@user-df4kb1io9l
3 жыл бұрын
Правильный алгоритм удаления снизу вверх, что бы данные проваливались сверху вниз.
А че не на сервере? Так же быстрее
Почём чёрный квадрат с иероглифами? Кто автор? Какой век?
@IlyaLeontyev
5 жыл бұрын
Не знаю, он прилагался к съемной квартире )
А я с конца цикл делаю.
@romanfomin5653
6 жыл бұрын
Согласен я так же делаю. Хотя на вкус и цвет, товарищей нет. Пример: ДокОбъект = Объект.ПоступлениеТоваровУслуг.ПолучитьОбъект(); КоличествоСтрок = ДокОбъект.Услуги.Количество()-1; Для Инд=0 По КоличествоСтрок-1 Цикл Строка = ДокОбъект.Услуги[КоличествоСтрок-Инд]; Если Строка.Сумма = 52 Тогда ДокОбъект.Услуги.Удалить(Строка); КонецЕсли; КонецЦикла; ДокОбъект.Записать();
ПараметрыОтбора = Новый Структура; ПараметрыОтбора.Вставить("СтавкаНДС", ПредопределенноеЗначение("Перечисление.СтавкиНДС.БезНДС")); МассивСтрок = Объект.Товары.НайтиСтроки(ПараметрыОтбора); Для Каждого ЭлементМассива Из МассивСтрок Цикл ИндексСтроки = Объект.Товары.Индекс(ЭлементМассива); Объект.Товары.Удалить(ИндексСтроки); КонецЦикла; А не вот это вот всё....
@IlyaLeontyev
6 жыл бұрын
По-твоему, этот алгоритм проще? :) Я так не думаю. Но подход интересный, спасибо.
@user-uf3uc9in9g
6 жыл бұрын
Ок. что если у тебя удаление строки проходит по 10 критериям? 10 условий Если...КонецЕсли напишешь? Этот подход единственно верный, быстрый и лаконичный.
@IlyaLeontyev
6 жыл бұрын
А если тебе понадобится выполнить проверку на неравенство, что будешь делать? Допустим, нужно будет удалить строки, в которых ставка НДС не равна 18%.
@user-uf3uc9in9g
6 жыл бұрын
Молодец, соскочил с темы чотко! На неравенство уж точно не буду делать через индексы.
@victornikitenko8415
6 жыл бұрын
Вмешаюсь немного в такой спор :), какой получился именно с этого вопроса-коммента Если рассматривать ТабЧасть как частный пример работы с Коллекциями, тогда в рамках Коллекций действительно может быть много примеров, в которых гораздо оптимальней установить отбор по большому ( больше одного ) составу параметров отбора. И затем с этим результатом отбора в виде Массив возникает большое многообразие способов их использования. Но самое интересное, что позволяет указать использование результатов отбора в виде массива, это демонстрация того, что Табличная часть является фактической коллекцией из ссылочных значений на Строки ТЧ, т.е. Строки ТабЧасти это такие специфические объекты, у которых всегда имеются ссылки и из них собираются коллекции, если в этом есть необходимость... А это все означает, что в данной коллекции (называемой ТабЧастью) можно выполнять удаление каждой строки в произвольном, хаотичном порядке, а не последовательным перебором "вперед" или "назад". Если же только что изложенное применять в жизни, то можно по условию удалить строчки из Коллекций, т.е. Для Каждого СтрокаТЧ из ТабЧасть Цикл
+
Жуть... теперь понятно, откуда ко мне на собеседование такие "программисты" приходят. В пять строк это делается с отрицательным итератором.
@vadimsergeev7874
3 ай бұрын
Пасть закрой недоносок и научись разработке иди