Пікірлер
@SergeyBagramov1
@SergeyBagramov1 2 ай бұрын
Если обходить по индексу снизу вверх, но при этом человек поменяет местами индекс нескольких строчек, или ещё хуже, если будут удаляться, дробиться или добавляться строки - то индексы будут не в каком-то правильном порядке, а вообще могут плясать. Например: сделайте упорядочивание строк (стрелочками или через зажатый Shift), то не факт, что всё так и отработает. Поэтому я всегда использую через "МассивСтрокНаУдаление", т.е. через 2 цикла.
@alimuradov
@alimuradov 4 ай бұрын
Я всегда через НайтиСтроки ищу с отбором строки к удалнию, потому просто удаляю строки в цикле. На видео это второй вариант с массивом в чуть более другой интерпретации.
@denfreeman9310
@denfreeman9310 4 ай бұрын
Не подходит к предложеной задаче. Как в НайтиСтроки Вы будете искать значение меньше или равно 30?
@NoName-nt7vj
@NoName-nt7vj 5 ай бұрын
Коллега, за такое решение задачи с кнопкой на форме документа Вас просто без слов выставят за дверь. Не позортесь.
@user-bf2us9ow5c
@user-bf2us9ow5c 5 ай бұрын
Зачем вы ломаете новичкам мозг! Проще всего и нагляднее, создать массив, пробежать циклом табличную часть и проверить на условие количество < введеное количество, добавляем строки в массив если условие истина. Потом циклом по каждому элементу масива удаляем строку табличной части. УдаляемыеСтроки = Новый массив; Для каждого СтрокаТЧ из ТабличнаяЧасть Цикл Если СтрокаТч.Количество <= введенноеЗначение Тогда удаляемыеСтроки. Добавить(СтрокаТч) КонецЕсли; КонецЦикла; Для каждого удаляемаяСтрока из УдаляемыеСтроки Цикл ТабличнаяЧасть. Удалить(УдаляемаяСтрока) КонецЦикла; Это намного проще воспринимать , чем городить заумные алгоритмы
@hacsi1
@hacsi1 6 ай бұрын
Спасибо большое.
@stone_smile
@stone_smile 6 ай бұрын
Здравствуйте, меня заинтересовала покупка вашего канала, как с вами можно связаться?
@mobilitymoon5232
@mobilitymoon5232 9 ай бұрын
К чему это видео на 30 минут, если правильные ответы можно найти за 15 секунд. Еще можно через запрос, сделай видео на 40 минут!
@darwind6675
@darwind6675 10 ай бұрын
Здравствуйте, подскажите разве в 1с нет запросов на удаление? Как в msAccess. Проще выполнить такой запрос.
@ilya2184
@ilya2184 10 ай бұрын
Про цикл с минуса до 0 - было новое, не видел такого. Модифицированность вручную - плохая практика, кнопка будет доступна на форме только для чтения: свойство команды 'изменяет сохраняемые данные'.
@user-vz3ng7fj5q
@user-vz3ng7fj5q 11 ай бұрын
Добрый день! Есть одна неточность, если я хочу удалить строки с количеством = 0, то у меня ничего не получится, потому что условие ЗначениеЗаполнено(Число) не выпонится, надо писать Если Число <> Неопределено
@VSergeyV
@VSergeyV Жыл бұрын
Задачка из книги Радченко 1с программирование для начинающих, про массивы)))
@user-vv3wi9nv5w
@user-vv3wi9nv5w Жыл бұрын
Я так понял, что 1С делали русские и они мыслили в категориях русского языка, который невозможно изучить по правилам, а только лишь постоянными употреблением языковых оборотов и тупого заучивания бесконечных особенностей. 🙂
@nullnull557
@nullnull557 Жыл бұрын
Сразу понял какая ошибка будет. Смещение индексов
@tikeyl7563
@tikeyl7563 Жыл бұрын
Денис, пилите ещё видосы по 1с, пожалуйста.
@pavelstepanenko2651
@pavelstepanenko2651 Жыл бұрын
Снизу вверх - я до такого не допёр)
@pavelstepanenko2651
@pavelstepanenko2651 Жыл бұрын
Круто! Спасибо, за отличное видео
@DimaVort
@DimaVort Жыл бұрын
Где на собеседовании такие задачи дают? Мне дали задачу сделать отчет abc анализ продаж прямьім запросом. Желательно одним запросом к базе. Там вроде оконньіе функции sql надо использовать.
@fflakonoff1
@fflakonoff1 Жыл бұрын
А почему больше нет видосов на канале по 1С?
@user-qh5bf5td1d
@user-qh5bf5td1d Жыл бұрын
автор, а вы видео удалили и больше не снимаете? Или переехали куда то на другой канал?
@user-qw1yk1uk2m
@user-qw1yk1uk2m Жыл бұрын
На и анале только одно видео
@evic1025
@evic1025 Жыл бұрын
0 - тоже число
@dimapetrov84
@dimapetrov84 Жыл бұрын
Ни разу не программист, чисто пользователь. Почему просто не запустить первый вариант 2 раза?)
@8tshk8
@8tshk8 Жыл бұрын
А если три строки подряд будут подходить под условие удаления? А если 500? А если все, например, 100500?
@dimapetrov84
@dimapetrov84 Жыл бұрын
@@8tshk8 а какая разница, если шаг 1 строчка. Пропустит, условно четные, следующим циклом их соберет, разве нет🙈
@Starponyx
@Starponyx 10 ай бұрын
@@dimapetrov84нет
@user-rf8dz8sm4o
@user-rf8dz8sm4o Жыл бұрын
а не проще запросом выгрузить и загрузить?
@Rarogg
@Rarogg Жыл бұрын
Хотелось бы больше видео на вашем канале. Очень понравился разбор данной задачи.
@dmitrymedvedd
@dmitrymedvedd Жыл бұрын
1с - гамно
@cgwicio8658
@cgwicio8658 Жыл бұрын
Зачем в начале ролика заикаться относительно системных знаний, если дальше идут подобные рассуждения? В данном случае мы полагаемся на реализацию итератора, которая нам неизвестна и на этом нужно ставить точку. Если вкратце, то данное поведение итератора не документировано, и на его стабильность нельзя полагаться. Индекс строки ни о чем не говорит, так как в данном случае это индекс строки которую выдал итератор, а не индекс который связан с самим итератором. Вообще вполне возможно в какой-нибудь из платформ "неправильный" подход внезапно покажет корректные результаты, а сам подход будет объявлен законным, так как будет регламентирована логика работы итератора. Как пример: ListIterator из java. Поэтому попытки объяснить что происходит просто не имеют смысла. Если рассмотреть пример более глубоко, то по сути мы имеем дело с коллекцией, чья реализация небезопасна в многопоточной среде, так как используемый итератор, полагается на то что коллекция иммутабельна (хотя бы на время его существования), хотя на примере видно, что даже в однопоточной среде мы легко можем изменить коллекцию.
@user-yu8mh7yt5y
@user-yu8mh7yt5y Жыл бұрын
Красавец! Все термины, которые знаете употребили, или еще остались? Выпендриваетесь, сударь!
@denfreeman9310
@denfreeman9310 4 ай бұрын
@@user-yu8mh7yt5y При этом еще и все перепутал... индекс ему итератор выдает, ага.
@denplanchik1523
@denplanchik1523 Жыл бұрын
3 вариант использовали в 7.7, т.к. там других вариантов не было. Вариант 2 классический способ для 8.2, 8.3, используется в типовых механизмах
@user-gq8ub8dk8o
@user-gq8ub8dk8o Жыл бұрын
Подскажите, пишет ошибку: Ожидается ключевое слово "Тогда" Если Значение "?" заполнено (Число) Тогда (Проверка: Сервер)
@evic1025
@evic1025 Жыл бұрын
ЗначениеЗаполнено() в одно слово пишется
@serhii_chechelnytskyi
@serhii_chechelnytskyi 2 жыл бұрын
Добрый день. А Вы не думали над тем, чтобы записать уроки по созданию простой конфигурации учёта оргтехники на фирме?
@SLikhushin
@SLikhushin 2 жыл бұрын
Почему вы не используете ВвестиЧислоАсинх () ???
@8tshk8
@8tshk8 Жыл бұрын
В каком релизе он появился? Версию платформы и совместимости нужно учитывать.
@trreg4669
@trreg4669 2 жыл бұрын
Для Индекс=-ВГраница По 0 Цикл - шедевр! очень красиво
@Mrnuctoh
@Mrnuctoh Жыл бұрын
Получение элемента коллекции по индеку - гораздо медленнее обхода коллекции через Для Каждого. Говнокод, короче.
@PetrovAnton05
@PetrovAnton05 2 жыл бұрын
Так много глупых комментариев , скорее всего их пишут разработчики , получается глупые разработчики. Про какие то запросы пишут. Ну это все либо от тупости, что печально, либо от мало опыта, что исправимо. Ну во первых если вы будете писать запрос, вам придется это делать на сервере, во вторых запрос к чему писать вы будете? К табличной части документа, который уже записан? А если пользователь внес строку , но еще не записал документ? Очевидно эта строка не попадет в выборку. Придется закидывать ТЧ как параметр. Чтобы выбрать строки? Ну тупо ведь. Автор все четко сделал. Три разных варианта перебора таблицы показал. Я лично в основном пользуюсь массивом , закидываю туда строки для удаления , потом удаляю. Легко отладить , и глянуть какие строки были , какие удалить , и что получилось. Если вы не способны читать такой код , то это вопрос к вам. Теперь понятно откуда берется говнокод с вашими запросами.
@sKlayton
@sKlayton 2 жыл бұрын
+++ все по фактам
@user-cb8jr3rj7s
@user-cb8jr3rj7s 2 жыл бұрын
Пацаны запомните, не работодатель отбирает кандидата, а вы отбираете работодателя, пусть они делают тестовые задания))
@RekardoMorales
@RekardoMorales 2 жыл бұрын
Понравилось. Отличное понятное видео.
@user-bk7tx6vj7h
@user-bk7tx6vj7h 2 жыл бұрын
Отличное видео!! 👍👑 Выпускайте ещё такие видео!!
@user-yf5jz1rl6h
@user-yf5jz1rl6h 2 жыл бұрын
Спасибо за вашу работу! Вы очень доступно объясняете, интересно и полезно!
@user-vq5vb7tz8v
@user-vq5vb7tz8v 2 жыл бұрын
30 минут делать видео, который каждый, кто хоть раз писал удаление строк гуглил за пару минут.
@user-oj6vt8ht6x
@user-oj6vt8ht6x 2 жыл бұрын
Отличное видео! Спасибо! Ждём ещё роликов
@user-ci1hj1il4h
@user-ci1hj1il4h 2 жыл бұрын
А если в тч 10 тыс. Строк? Как долго перебирать будет? :) нужно запрос делать, получив все строки удовлетворяющие условию, отсортировать по убыванию номер строки и перебирать только их для того, чтобы удалить)
@ArtVadan
@ArtVadan Жыл бұрын
Яб выгрузил таблицу в запрос, условием отобрал то что надо оставить и обратно бы загрузил)
@Mrnuctoh
@Mrnuctoh Жыл бұрын
@@ArtVadan Кросавчег, чё. +Серверный вызов. +Насилие SQL-сервера бессмысленной загрузкой туда параметра большого объема. +Накладные расходы на менеджмент временных таблиц SQL-сервером. Спасибо тебе, благодаря такому коду я недёшево беру за улучшение производительности кастомок.
@Mrnuctoh
@Mrnuctoh Жыл бұрын
Зачем лишний серверный вызов, если можно обойтись без него?
@TTrimasova_life
@TTrimasova_life Жыл бұрын
Неужели кто-то ещё перебирает данные циклами. ))
@Mrnuctoh
@Mrnuctoh Жыл бұрын
@@TTrimasova_life А какие по-вашему варианты?
@oleg_avgurov
@oleg_avgurov 2 жыл бұрын
А вот так её решил. Вроде, тоже правильно? Процедура ПослеВводаКоличества(Число, Параметры) Экспорт Если НЕ Число = Неопределено Тогда // создаём бесконечный цикл Пока Истина Цикл // определяем начальное количество строк в документе НачальноеЧислоСтрок = Объект.ТабличнаяЧасть1.Количество(); // цикл удаления строк по условию количество меньше введённого числа Для Каждого Строка Из Объект.ТабличнаяЧасть1 Цикл Если Строка.Количество < Число Тогда Объект.ТабличнаяЧасть1.Удалить(Строка); ЭтаФорма.Модифицированность = Истина; КонецЕсли; КонецЦикла; // определяем количество строк в документе после выполнения цикла удаления КонечноеЧислоСтрок = Объект.ТабличнаяЧасть1.Количество(); // условие прерывания бесконечного цикла Если НачальноеЧислоСтрок = КонечноеЧислоСтрок Тогда Прервать; КонецЕсли; КонецЦикла; КонецЕсли; КонецПроцедуры
@denfreeman9310
@denfreeman9310 4 ай бұрын
Во внутренний цикл в Если...КонецЕсли надо тоже Прервать; иначе будет весело 🙂
@user-hd7hw6gt2m
@user-hd7hw6gt2m 2 жыл бұрын
Огромное спасибо. Очень понятно
@user-vi1hg5ic5d
@user-vi1hg5ic5d 2 жыл бұрын
Я ничего не понял
@user-lj9vd9lj7y
@user-lj9vd9lj7y 2 жыл бұрын
проблема часто не в отсутствии системных знаний. ряд функций человек помнит, только если постоянно их использует Например, те, кто занимается чисто разработкой, обычно не плохо помнят многое, что касается интерфейса, но могут забыть, как настраивается доступ. И наоборот, те, кто основную работу выполняют на поддержке и исправлении, могут напрочь забыть многое из интерфейсных решений. Отдельная тема - помнить подробно настройки и особенности СКД. Я просто гарантирую, что если регулярно не делать отчеты хотя бы пол-года, то скил заметно снижается.
@DenProgMan
@DenProgMan 2 жыл бұрын
Полностью согласен с данным комментарием.
@MrTorfable
@MrTorfable 4 ай бұрын
Блин, оказывается это не только у меня так. А я думал, что я просто тупой😅
@TheCherTolik
@TheCherTolik 2 жыл бұрын
Почему нельзя просто строки по условию перебрать в массив и позже перебрать массив строк?
@PetrovAnton05
@PetrovAnton05 2 жыл бұрын
А кто сказал что нельзя ? 😂
@timin040481
@timin040481 2 жыл бұрын
Как же все сложно. Есть более простые способы. Правильно комментаторы говорят массив, запрос + перезапись
@user-tx3ep1ww3z
@user-tx3ep1ww3z Жыл бұрын
Запрос это уже обращение к серверу
@lazarusdvu
@lazarusdvu 2 жыл бұрын
Первое что пришло в голову - это повторять этот цикл до тех пор, пока он не перестал бы удалять строки ) Вообще я сюда подеградировать пришел и позалипать на котиков, а не на задачки по программированию в час ночи. Мое негодование было на столько сильно что пришлось даже подписаться
@user-hd2hn3pe5j
@user-hd2hn3pe5j 2 жыл бұрын
Запросом по табличной части с отбором по количеству получаем только нужные строки и перезаписываем табличную часть выборкой из запроса. и всё. никаких циклов, кучи проверок и индексов.
@8tshk8
@8tshk8 Жыл бұрын
Тоже подумал про данный вариант. Кстати, по поводу выполнения на стороне клиента. Это тоже может быть большим вопросом. Когда строк у документа 10 - это одно дело. А когда 10000?
@user-hd2hn3pe5j
@user-hd2hn3pe5j Жыл бұрын
@@8tshk8 сложно представить в каком случае нужно вводить такое количество строк в один документ и в один день. пока такое не встречал даже в магазинах канцелярии. при больших объемах данных в типовых 1с реализована запись частями, а не одним куском.
@user-hd2hn3pe5j
@user-hd2hn3pe5j Жыл бұрын
@@8tshk8 сложно представить в каком случае нужно вводить такое количество строк в один документ и в один день. пока такое не встречал даже в магазинах канцелярии. при больших объемах данных в типовых 1с реализована запись частями, а не одним куском.
@dimarock
@dimarock Жыл бұрын
Но есть проблема. Если документ изменен в пользовательского режиме.
@andreytatarchenkov5146
@andreytatarchenkov5146 Жыл бұрын
Не оптимально вызывать сервер, когда можно обойтись клиентом.
@mendicator4319
@mendicator4319 2 жыл бұрын
Капец как сложно. Выгружаешь строки в массив, идешь по массиву без всяких индексов и удаляешь строки. И да, все что ты написал надо делать на сервере, еще -1 балл
@user-fm5pf3wc3d
@user-fm5pf3wc3d 2 жыл бұрын
Спасибо!
@user-oj7pc6cb4y
@user-oj7pc6cb4y 2 жыл бұрын
Да откуда у Вас такие задачи то. Это прям основа основ, такое даже спрашивать стыдно.
@fanArsenala87
@fanArsenala87 2 жыл бұрын
Ха, но многие допускают такую ошибку в работе, не только на собеседовании