Если обходить по индексу снизу вверх, но при этом человек поменяет местами индекс нескольких строчек, или ещё хуже, если будут удаляться, дробиться или добавляться строки - то индексы будут не в каком-то правильном порядке, а вообще могут плясать. Например: сделайте упорядочивание строк (стрелочками или через зажатый Shift), то не факт, что всё так и отработает. Поэтому я всегда использую через "МассивСтрокНаУдаление", т.е. через 2 цикла.
@alimuradov4 ай бұрын
Я всегда через НайтиСтроки ищу с отбором строки к удалнию, потому просто удаляю строки в цикле. На видео это второй вариант с массивом в чуть более другой интерпретации.
@denfreeman93104 ай бұрын
Не подходит к предложеной задаче. Как в НайтиСтроки Вы будете искать значение меньше или равно 30?
@NoName-nt7vj5 ай бұрын
Коллега, за такое решение задачи с кнопкой на форме документа Вас просто без слов выставят за дверь. Не позортесь.
@user-bf2us9ow5c5 ай бұрын
Зачем вы ломаете новичкам мозг! Проще всего и нагляднее, создать массив, пробежать циклом табличную часть и проверить на условие количество < введеное количество, добавляем строки в массив если условие истина. Потом циклом по каждому элементу масива удаляем строку табличной части. УдаляемыеСтроки = Новый массив; Для каждого СтрокаТЧ из ТабличнаяЧасть Цикл Если СтрокаТч.Количество <= введенноеЗначение Тогда удаляемыеСтроки. Добавить(СтрокаТч) КонецЕсли; КонецЦикла; Для каждого удаляемаяСтрока из УдаляемыеСтроки Цикл ТабличнаяЧасть. Удалить(УдаляемаяСтрока) КонецЦикла; Это намного проще воспринимать , чем городить заумные алгоритмы
@hacsi16 ай бұрын
Спасибо большое.
@stone_smile6 ай бұрын
Здравствуйте, меня заинтересовала покупка вашего канала, как с вами можно связаться?
@mobilitymoon52329 ай бұрын
К чему это видео на 30 минут, если правильные ответы можно найти за 15 секунд. Еще можно через запрос, сделай видео на 40 минут!
@darwind667510 ай бұрын
Здравствуйте, подскажите разве в 1с нет запросов на удаление? Как в msAccess. Проще выполнить такой запрос.
@ilya218410 ай бұрын
Про цикл с минуса до 0 - было новое, не видел такого. Модифицированность вручную - плохая практика, кнопка будет доступна на форме только для чтения: свойство команды 'изменяет сохраняемые данные'.
@user-vz3ng7fj5q11 ай бұрын
Добрый день! Есть одна неточность, если я хочу удалить строки с количеством = 0, то у меня ничего не получится, потому что условие ЗначениеЗаполнено(Число) не выпонится, надо писать Если Число <> Неопределено
@VSergeyV Жыл бұрын
Задачка из книги Радченко 1с программирование для начинающих, про массивы)))
@user-vv3wi9nv5w Жыл бұрын
Я так понял, что 1С делали русские и они мыслили в категориях русского языка, который невозможно изучить по правилам, а только лишь постоянными употреблением языковых оборотов и тупого заучивания бесконечных особенностей. 🙂
@nullnull557 Жыл бұрын
Сразу понял какая ошибка будет. Смещение индексов
@tikeyl7563 Жыл бұрын
Денис, пилите ещё видосы по 1с, пожалуйста.
@pavelstepanenko2651 Жыл бұрын
Снизу вверх - я до такого не допёр)
@pavelstepanenko2651 Жыл бұрын
Круто! Спасибо, за отличное видео
@DimaVort Жыл бұрын
Где на собеседовании такие задачи дают? Мне дали задачу сделать отчет abc анализ продаж прямьім запросом. Желательно одним запросом к базе. Там вроде оконньіе функции sql надо использовать.
@fflakonoff1 Жыл бұрын
А почему больше нет видосов на канале по 1С?
@user-qh5bf5td1d Жыл бұрын
автор, а вы видео удалили и больше не снимаете? Или переехали куда то на другой канал?
@user-qw1yk1uk2m Жыл бұрын
На и анале только одно видео
@evic1025 Жыл бұрын
0 - тоже число
@dimapetrov84 Жыл бұрын
Ни разу не программист, чисто пользователь. Почему просто не запустить первый вариант 2 раза?)
@8tshk8 Жыл бұрын
А если три строки подряд будут подходить под условие удаления? А если 500? А если все, например, 100500?
@dimapetrov84 Жыл бұрын
@@8tshk8 а какая разница, если шаг 1 строчка. Пропустит, условно четные, следующим циклом их соберет, разве нет🙈
@Starponyx10 ай бұрын
@@dimapetrov84нет
@user-rf8dz8sm4o Жыл бұрын
а не проще запросом выгрузить и загрузить?
@Rarogg Жыл бұрын
Хотелось бы больше видео на вашем канале. Очень понравился разбор данной задачи.
@dmitrymedvedd Жыл бұрын
1с - гамно
@cgwicio8658 Жыл бұрын
Зачем в начале ролика заикаться относительно системных знаний, если дальше идут подобные рассуждения? В данном случае мы полагаемся на реализацию итератора, которая нам неизвестна и на этом нужно ставить точку. Если вкратце, то данное поведение итератора не документировано, и на его стабильность нельзя полагаться. Индекс строки ни о чем не говорит, так как в данном случае это индекс строки которую выдал итератор, а не индекс который связан с самим итератором. Вообще вполне возможно в какой-нибудь из платформ "неправильный" подход внезапно покажет корректные результаты, а сам подход будет объявлен законным, так как будет регламентирована логика работы итератора. Как пример: ListIterator из java. Поэтому попытки объяснить что происходит просто не имеют смысла. Если рассмотреть пример более глубоко, то по сути мы имеем дело с коллекцией, чья реализация небезопасна в многопоточной среде, так как используемый итератор, полагается на то что коллекция иммутабельна (хотя бы на время его существования), хотя на примере видно, что даже в однопоточной среде мы легко можем изменить коллекцию.
@user-yu8mh7yt5y Жыл бұрын
Красавец! Все термины, которые знаете употребили, или еще остались? Выпендриваетесь, сударь!
@denfreeman93104 ай бұрын
@@user-yu8mh7yt5y При этом еще и все перепутал... индекс ему итератор выдает, ага.
@denplanchik1523 Жыл бұрын
3 вариант использовали в 7.7, т.к. там других вариантов не было. Вариант 2 классический способ для 8.2, 8.3, используется в типовых механизмах
@user-gq8ub8dk8o Жыл бұрын
Подскажите, пишет ошибку: Ожидается ключевое слово "Тогда" Если Значение "?" заполнено (Число) Тогда (Проверка: Сервер)
@evic1025 Жыл бұрын
ЗначениеЗаполнено() в одно слово пишется
@serhii_chechelnytskyi2 жыл бұрын
Добрый день. А Вы не думали над тем, чтобы записать уроки по созданию простой конфигурации учёта оргтехники на фирме?
@SLikhushin2 жыл бұрын
Почему вы не используете ВвестиЧислоАсинх () ???
@8tshk8 Жыл бұрын
В каком релизе он появился? Версию платформы и совместимости нужно учитывать.
@trreg46692 жыл бұрын
Для Индекс=-ВГраница По 0 Цикл - шедевр! очень красиво
@Mrnuctoh Жыл бұрын
Получение элемента коллекции по индеку - гораздо медленнее обхода коллекции через Для Каждого. Говнокод, короче.
@PetrovAnton052 жыл бұрын
Так много глупых комментариев , скорее всего их пишут разработчики , получается глупые разработчики. Про какие то запросы пишут. Ну это все либо от тупости, что печально, либо от мало опыта, что исправимо. Ну во первых если вы будете писать запрос, вам придется это делать на сервере, во вторых запрос к чему писать вы будете? К табличной части документа, который уже записан? А если пользователь внес строку , но еще не записал документ? Очевидно эта строка не попадет в выборку. Придется закидывать ТЧ как параметр. Чтобы выбрать строки? Ну тупо ведь. Автор все четко сделал. Три разных варианта перебора таблицы показал. Я лично в основном пользуюсь массивом , закидываю туда строки для удаления , потом удаляю. Легко отладить , и глянуть какие строки были , какие удалить , и что получилось. Если вы не способны читать такой код , то это вопрос к вам. Теперь понятно откуда берется говнокод с вашими запросами.
@sKlayton2 жыл бұрын
+++ все по фактам
@user-cb8jr3rj7s2 жыл бұрын
Пацаны запомните, не работодатель отбирает кандидата, а вы отбираете работодателя, пусть они делают тестовые задания))
@RekardoMorales2 жыл бұрын
Понравилось. Отличное понятное видео.
@user-bk7tx6vj7h2 жыл бұрын
Отличное видео!! 👍👑 Выпускайте ещё такие видео!!
@user-yf5jz1rl6h2 жыл бұрын
Спасибо за вашу работу! Вы очень доступно объясняете, интересно и полезно!
@user-vq5vb7tz8v2 жыл бұрын
30 минут делать видео, который каждый, кто хоть раз писал удаление строк гуглил за пару минут.
@user-oj6vt8ht6x2 жыл бұрын
Отличное видео! Спасибо! Ждём ещё роликов
@user-ci1hj1il4h2 жыл бұрын
А если в тч 10 тыс. Строк? Как долго перебирать будет? :) нужно запрос делать, получив все строки удовлетворяющие условию, отсортировать по убыванию номер строки и перебирать только их для того, чтобы удалить)
@ArtVadan Жыл бұрын
Яб выгрузил таблицу в запрос, условием отобрал то что надо оставить и обратно бы загрузил)
@Mrnuctoh Жыл бұрын
@@ArtVadan Кросавчег, чё. +Серверный вызов. +Насилие SQL-сервера бессмысленной загрузкой туда параметра большого объема. +Накладные расходы на менеджмент временных таблиц SQL-сервером. Спасибо тебе, благодаря такому коду я недёшево беру за улучшение производительности кастомок.
@Mrnuctoh Жыл бұрын
Зачем лишний серверный вызов, если можно обойтись без него?
@TTrimasova_life Жыл бұрын
Неужели кто-то ещё перебирает данные циклами. ))
@Mrnuctoh Жыл бұрын
@@TTrimasova_life А какие по-вашему варианты?
@oleg_avgurov2 жыл бұрын
А вот так её решил. Вроде, тоже правильно? Процедура ПослеВводаКоличества(Число, Параметры) Экспорт Если НЕ Число = Неопределено Тогда // создаём бесконечный цикл Пока Истина Цикл // определяем начальное количество строк в документе НачальноеЧислоСтрок = Объект.ТабличнаяЧасть1.Количество(); // цикл удаления строк по условию количество меньше введённого числа Для Каждого Строка Из Объект.ТабличнаяЧасть1 Цикл Если Строка.Количество < Число Тогда Объект.ТабличнаяЧасть1.Удалить(Строка); ЭтаФорма.Модифицированность = Истина; КонецЕсли; КонецЦикла; // определяем количество строк в документе после выполнения цикла удаления КонечноеЧислоСтрок = Объект.ТабличнаяЧасть1.Количество(); // условие прерывания бесконечного цикла Если НачальноеЧислоСтрок = КонечноеЧислоСтрок Тогда Прервать; КонецЕсли; КонецЦикла; КонецЕсли; КонецПроцедуры
@denfreeman93104 ай бұрын
Во внутренний цикл в Если...КонецЕсли надо тоже Прервать; иначе будет весело 🙂
@user-hd7hw6gt2m2 жыл бұрын
Огромное спасибо. Очень понятно
@user-vi1hg5ic5d2 жыл бұрын
Я ничего не понял
@user-lj9vd9lj7y2 жыл бұрын
проблема часто не в отсутствии системных знаний. ряд функций человек помнит, только если постоянно их использует Например, те, кто занимается чисто разработкой, обычно не плохо помнят многое, что касается интерфейса, но могут забыть, как настраивается доступ. И наоборот, те, кто основную работу выполняют на поддержке и исправлении, могут напрочь забыть многое из интерфейсных решений. Отдельная тема - помнить подробно настройки и особенности СКД. Я просто гарантирую, что если регулярно не делать отчеты хотя бы пол-года, то скил заметно снижается.
@DenProgMan2 жыл бұрын
Полностью согласен с данным комментарием.
@MrTorfable4 ай бұрын
Блин, оказывается это не только у меня так. А я думал, что я просто тупой😅
@TheCherTolik2 жыл бұрын
Почему нельзя просто строки по условию перебрать в массив и позже перебрать массив строк?
@PetrovAnton052 жыл бұрын
А кто сказал что нельзя ? 😂
@timin0404812 жыл бұрын
Как же все сложно. Есть более простые способы. Правильно комментаторы говорят массив, запрос + перезапись
@user-tx3ep1ww3z Жыл бұрын
Запрос это уже обращение к серверу
@lazarusdvu2 жыл бұрын
Первое что пришло в голову - это повторять этот цикл до тех пор, пока он не перестал бы удалять строки ) Вообще я сюда подеградировать пришел и позалипать на котиков, а не на задачки по программированию в час ночи. Мое негодование было на столько сильно что пришлось даже подписаться
@user-hd2hn3pe5j2 жыл бұрын
Запросом по табличной части с отбором по количеству получаем только нужные строки и перезаписываем табличную часть выборкой из запроса. и всё. никаких циклов, кучи проверок и индексов.
@8tshk8 Жыл бұрын
Тоже подумал про данный вариант. Кстати, по поводу выполнения на стороне клиента. Это тоже может быть большим вопросом. Когда строк у документа 10 - это одно дело. А когда 10000?
@user-hd2hn3pe5j Жыл бұрын
@@8tshk8 сложно представить в каком случае нужно вводить такое количество строк в один документ и в один день. пока такое не встречал даже в магазинах канцелярии. при больших объемах данных в типовых 1с реализована запись частями, а не одним куском.
@user-hd2hn3pe5j Жыл бұрын
@@8tshk8 сложно представить в каком случае нужно вводить такое количество строк в один документ и в один день. пока такое не встречал даже в магазинах канцелярии. при больших объемах данных в типовых 1с реализована запись частями, а не одним куском.
@dimarock Жыл бұрын
Но есть проблема. Если документ изменен в пользовательского режиме.
@andreytatarchenkov5146 Жыл бұрын
Не оптимально вызывать сервер, когда можно обойтись клиентом.
@mendicator43192 жыл бұрын
Капец как сложно. Выгружаешь строки в массив, идешь по массиву без всяких индексов и удаляешь строки. И да, все что ты написал надо делать на сервере, еще -1 балл
@user-fm5pf3wc3d2 жыл бұрын
Спасибо!
@user-oj7pc6cb4y2 жыл бұрын
Да откуда у Вас такие задачи то. Это прям основа основ, такое даже спрашивать стыдно.
@fanArsenala872 жыл бұрын
Ха, но многие допускают такую ошибку в работе, не только на собеседовании