Алгоритм удаления строки из табличной части

แชร์
ฝัง
  • เผยแพร่เมื่อ 28 ส.ค. 2024
  • Поддержать донатом: donate.stream/...
    Алгоритм удаления строки из табличной части - это
    один из самых простых и популярных алгоритмов, который знать просто обязательно. Может сэкономить кучу времени и сил (но это не точно).
    Может быть легко обобщен до алгоритма удаления элемента из практически любой коллекции (типа массива и т.д.)
    В этом видео решил поэкспериментировать со вставками. Вроде круто получилось) А вы как считаете?
    Мои контакты:
    ВКонтакте: ilyaleontyev
    Фэйсбук: illeontev
    С удовольствием добавлю вас в друзья при условии, что вы не будете меня грузить своими рабочими вопросами :)

ความคิดเห็น • 51

  • @research_Development
    @research_Development 6 ปีที่แล้ว +31

    Нам нужно БОЛЬШЕ алгоритмов - коротких и простых))

    • @user-lj4dm9gs7v
      @user-lj4dm9gs7v 6 ปีที่แล้ว +1

      это точно)))

    • @user-df4kb1io9l
      @user-df4kb1io9l 3 ปีที่แล้ว

      @@user-lj4dm9gs7v Первый раз слышу от девушки, что им нужно больше - "коротких"))

    • @user-xl9pw9mm8s
      @user-xl9pw9mm8s 2 ปีที่แล้ว

      Щ

  • @dimo4174
    @dimo4174 2 หลายเดือนก่อน

    Илья спс)) наткнулся на видео, взял за основу тобой рассмотренный пример для удаления строк с одинаковой номенклатурой из табличной части, оставляя только одну и накапливая в ней всё количество))

  • @user-lj4dm9gs7v
    @user-lj4dm9gs7v 6 ปีที่แล้ว +7

    Спасибо за видео, Илья. Как всегда по делу и всё чётко.

  • @dmitrylyskov68
    @dmitrylyskov68 2 ปีที่แล้ว +2

    В голове хвалебный текст крутится на страницу А4 десятым шрифтом, но нет времени. Надо учиться. Поэтому так: "Здорово! "

  • @alexbagirov2583
    @alexbagirov2583 5 ปีที่แล้ว +2

    Класс! Спасибо! Именно практика интересна! Я консультант, программировать учусь с нуля. Мне было интересно!

  • @Olex_Under
    @Olex_Under 6 ปีที่แล้ว +3

    Хорошая идея разбирать алгоритмы. Жду новых видео

  • @AnatoliyFedorenko77
    @AnatoliyFedorenko77 4 ปีที่แล้ว +2

    Илья, Спасибо за видео. Очень помогло решить эту "нерешаемую" задачу))

  • @user-cp1pj3oq9l
    @user-cp1pj3oq9l 2 ปีที่แล้ว +1

    Илья, респект за видео, для начинающих полезно бесспорно. Но всё же нужно уходить на темную сторону), делать запрос к ТЧ по условию и выборке удалить нужные строки. Думаю будет оптимальнее) решением.

  • @svetlanakomarova5415
    @svetlanakomarova5415 3 ปีที่แล้ว +1

    Спасибо за видео, такие разборы алгоритмов конечно нужны

  • @ViK-sq3ho
    @ViK-sq3ho 6 ปีที่แล้ว +1

    Спасибо Илья. Очень интересная идея видосов про алгоритмы.

  • @DmitriiSafonov
    @DmitriiSafonov ปีที่แล้ว +1

    как сформулировать условие на поиск максимальной строки?

  • @filthycazul1136
    @filthycazul1136 2 ปีที่แล้ว

    На самом деле поразительно, что так лаконично, с ржомбами и так мало просмотров(

  • @morytsmith6693
    @morytsmith6693 5 ปีที่แล้ว +3

    Я тоже каждый раз удивляюсь все новым извращениям. Твой алгоритм интересен, но я не согласен )
    Лучший алгоритм - это тот который легко читается и легко модифицируется.
    Поэтому я для удаления выбрал перебор таблицы снизу уменьшая итератор. Больше никаких условий не нужно и ни за какими переменными не нужно следить. Просто уменьшаете индекс и удаляете нужные строки по пути. И в этот же обход можно добавить код не связанный с удалением.
    Особую улыбку вызывают те кто предлагают передавать в метод НайтиСтроки структуру с отбором и после обходить полученный массив) Удар по скорости и масшатиборванию. Потом встречаешь такое место где нужно добавить новое условие или дополнить код и переписываешь весь такой подход) Чем они думают?

    • @IlyaLeontyev
      @IlyaLeontyev  5 ปีที่แล้ว +2

      Жопой :)

    • @user-df4kb1io9l
      @user-df4kb1io9l 3 ปีที่แล้ว

      Правильный алгоритм удаления снизу вверх, что бы данные проваливались сверху вниз.

  • @dmytroholoborodko8361
    @dmytroholoborodko8361 5 ปีที่แล้ว

    Здравствуйте, Илья! Спасибо за ваши ролики, я их с удовольствием изучаю и узнаю очень много полезного. Скажите, почему для удаления строки вы использовали цикл "Пока" играя с индексами строки вместо цикла "Для Каждого" удаляя текущую строку по условию Если? Отдельное спасибо за ролики о нетиповом обновлении конфигураций. Собственно, этот комментарий, я наверное, больше написал чтобы выразить благодарность за вашу работу в youtube-сообществе 1с. Что так, что так будет верно, кто как хочет, так и ... как говориться :)

  • @dstni
    @dstni 6 ปีที่แล้ว +1

    мне нравится!

  • @ffonlfoff5005
    @ffonlfoff5005 5 ปีที่แล้ว +2

    Илья, я начинающий. Объясните пожалуйста, почему процедуру создаёте на клиенте? Ведь на клиент передаются не все строки документа табличной части, а только видимые в данный момент, а остальные подгружаются. Что я не правильно понимаю?

    • @IlyaLeontyev
      @IlyaLeontyev  5 ปีที่แล้ว +3

      Сечете фишку ) Действительно при таком раскладе будет происходить постепенное считывание строк с сервера на клиент, что будет создавать неоправданные лишние серверные вызовы. Поэтому удаление строк лучше выполнить в серверном методе, вызвав его с клиента.
      Но цель этого видео была именно в демонстрации алгоритма - не хотел вызывать лишних вопросов.

    • @ffonlfoff5005
      @ffonlfoff5005 5 ปีที่แล้ว +2

      @@IlyaLeontyev
      Спасибо, а то я начал сомневаться, правильно ли я понимаю клиент серверное взаимодействие системы. Спасибо за ответ. )

  • @gospodin_Nikto45454
    @gospodin_Nikto45454 2 ปีที่แล้ว +1

    снова напишу, почему раньше этого не видел)))) дикую дичь писал на сервере))

  • @leonidmessin22
    @leonidmessin22 5 ปีที่แล้ว +1

    Функцию ПредопределенноеЗначение() оптимальнее вынести из цикла. Она производит обращение к серверу.

    • @IlyaLeontyev
      @IlyaLeontyev  5 ปีที่แล้ว +1

      Она производит вызов к серверу один раз, затем кеширует это значение. Поэтому оптимальней не станет.

    • @leonidmessin22
      @leonidmessin22 5 ปีที่แล้ว +1

      @@IlyaLeontyev буду знать теперь)

  • @mendicator4319
    @mendicator4319 3 ปีที่แล้ว +1

    А че не на сервере? Так же быстрее

  • @ovasiliev2000
    @ovasiliev2000 6 ปีที่แล้ว +2

    Почём чёрный квадрат с иероглифами? Кто автор? Какой век?

    • @IlyaLeontyev
      @IlyaLeontyev  6 ปีที่แล้ว +2

      Не знаю, он прилагался к съемной квартире )

  • @user-uf3uc9in9g
    @user-uf3uc9in9g 6 ปีที่แล้ว +7

    ПараметрыОтбора = Новый Структура;
    ПараметрыОтбора.Вставить("СтавкаНДС", ПредопределенноеЗначение("Перечисление.СтавкиНДС.БезНДС"));
    МассивСтрок = Объект.Товары.НайтиСтроки(ПараметрыОтбора);
    Для Каждого ЭлементМассива Из МассивСтрок Цикл
    ИндексСтроки = Объект.Товары.Индекс(ЭлементМассива);
    Объект.Товары.Удалить(ИндексСтроки);
    КонецЦикла;
    А не вот это вот всё....

    • @IlyaLeontyev
      @IlyaLeontyev  6 ปีที่แล้ว +2

      По-твоему, этот алгоритм проще? :)
      Я так не думаю.
      Но подход интересный, спасибо.

    • @user-uf3uc9in9g
      @user-uf3uc9in9g 6 ปีที่แล้ว +1

      Ок. что если у тебя удаление строки проходит по 10 критериям? 10 условий Если...КонецЕсли напишешь?
      Этот подход единственно верный, быстрый и лаконичный.

    • @IlyaLeontyev
      @IlyaLeontyev  6 ปีที่แล้ว +2

      А если тебе понадобится выполнить проверку на неравенство, что будешь делать?
      Допустим, нужно будет удалить строки, в которых ставка НДС не равна 18%.

    • @user-uf3uc9in9g
      @user-uf3uc9in9g 6 ปีที่แล้ว +2

      Молодец, соскочил с темы чотко! На неравенство уж точно не буду делать через индексы.

    • @victornikitenko8415
      @victornikitenko8415 6 ปีที่แล้ว +1

      Вмешаюсь немного в такой спор :), какой получился именно с этого вопроса-коммента
      Если рассматривать ТабЧасть как частный пример работы с Коллекциями, тогда в рамках Коллекций действительно может быть много примеров, в которых гораздо оптимальней установить отбор по большому ( больше одного ) составу параметров отбора. И затем с этим результатом отбора в виде Массив возникает большое многообразие способов их использования.
      Но самое интересное, что позволяет указать использование результатов отбора в виде массива, это демонстрация того, что Табличная часть является фактической коллекцией из ссылочных значений на Строки ТЧ, т.е. Строки ТабЧасти это такие специфические объекты, у которых всегда имеются ссылки и из них собираются коллекции, если в этом есть необходимость... А это все означает, что в данной коллекции (называемой ТабЧастью) можно выполнять удаление каждой строки в произвольном, хаотичном порядке, а не последовательным перебором "вперед" или "назад".
      Если же только что изложенное применять в жизни, то можно по условию удалить строчки из Коллекций, т.е.
      Для Каждого СтрокаТЧ из ТабЧасть Цикл

  • @user-mr4sg3uf2x
    @user-mr4sg3uf2x 6 ปีที่แล้ว

    Илья, здравствуйте! помогите, пожалуйста, если алгоритм в следующем: мне надо удалить все строки через одну...т.е. удаляем первыю, вторую оставляем, третью-удаляеми т.д. Буду очень благодарна за ответ

    • @IlyaLeontyev
      @IlyaLeontyev  6 ปีที่แล้ว +1

      Татьяна, можно, например, просто поменять условие в моем примере. Вам надо не ставку НДС проверять в условном операторе, а четность индекса строки (Если ИндексСтроки%2 = 0 Тогда).

    • @user-mr4sg3uf2x
      @user-mr4sg3uf2x 6 ปีที่แล้ว +1

      @@IlyaLeontyev благодарю за ответ!

    • @alekseyo279
      @alekseyo279 5 ปีที่แล้ว

      С таким условием удалиться все строки кроме первой, по-моему.

    • @IlyaLeontyev
      @IlyaLeontyev  5 ปีที่แล้ว

      @@alekseyo279 попробуйте )

  • @LDO6
    @LDO6 6 ปีที่แล้ว +2

    А я с конца цикл делаю.

    • @romanfomin5653
      @romanfomin5653 6 ปีที่แล้ว +1

      Согласен я так же делаю. Хотя на вкус и цвет, товарищей нет. Пример:
      ДокОбъект = Объект.ПоступлениеТоваровУслуг.ПолучитьОбъект();
      КоличествоСтрок = ДокОбъект.Услуги.Количество()-1;
      Для Инд=0 По КоличествоСтрок-1 Цикл
      Строка = ДокОбъект.Услуги[КоличествоСтрок-Инд];
      Если Строка.Сумма = 52 Тогда
      ДокОбъект.Услуги.Удалить(Строка);
      КонецЕсли;
      КонецЦикла;
      ДокОбъект.Записать();

  • @Dm-if3vl
    @Dm-if3vl 3 ปีที่แล้ว

    +

  • @eurosetvk
    @eurosetvk 3 ปีที่แล้ว +1

    Жуть... теперь понятно, откуда ко мне на собеседование такие "программисты" приходят. В пять строк это делается с отрицательным итератором.

    • @vadimsergeev7874
      @vadimsergeev7874 7 หลายเดือนก่อน

      Пасть закрой недоносок и научись разработке иди