Форум программистов, компьютерный форум, киберфорум
1С
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.91/34: Рейтинг темы: голосов - 34, средняя оценка - 4.91
2 / 2 / 0
Регистрация: 29.08.2013
Сообщений: 113
1C 8.x

Простенькая задача с циклом

30.08.2013, 12:40. Показов 7390. Ответов 31
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Помогите пожалуйста решить задачку с использованием цикла (Для каждого ... из ... цикл)

Суть вопроса:
Есть таблица значений, в которой введены какие-то значения ( и отрицательные, и положительные), необходимо, используя данный цикл, удалить все отрицательные значения, положительные оставить. Т.е. в режиме "Предприятие" можно было клацнуть кнопочку, которая очистит отрицательные значения... Либо я что-то не так делаю.

Прикрепляю .dtшник в котором у меня, в принципе, выражена мысль
Вложения
Тип файла: 7z 1Cv8.7z (5.3 Кб, 11 просмотров)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.08.2013, 12:40
Ответы с готовыми решениями:

простенькая задача
вобщем сижу всю ночь никак не получается решить: на странице выводятся 12 квадратов 20 на 20 пикселей. в каждом квадрате наисанно...

Простенькая задача
Нужно написать программу которая выдает запрос на ввод часов и запрос на ввод минут. Функция main () должна передать значения функции,...

Простенькая задача
Помогите пожалуйста с простенькой задачой. Известно S сумма деталей.Так же изввестно что 3 человека делали эти детали.Известно что 2 из...

31
Эксперт 1С
 Аватар для Joker_vad
476 / 413 / 93
Регистрация: 26.09.2012
Сообщений: 1,922
30.08.2013, 14:05
Студворк — интернет-сервис помощи студентам
Попробуй введи сначала положительное, затем два отрецательных, и снова положительное и должно не сработать, это на первоначальном коде

Добавлено через 1 минуту
А на скорость в при большой табличной части, в принципе данный метод повлияет. Там вообще думаю по другому надо
1
 Аватар для te_morituri
22 / 22 / 4
Регистрация: 17.10.2009
Сообщений: 281
30.08.2013, 14:15
Цитата Сообщение от SirClipz Посмотреть сообщение
А что в данном случае изменилось? Зачем столько проверок?
мы в ложь сбрасываем перед циклом обхода, а то получится что третья строка дает ним истину но четвертая сбрасывает все равно в ложь.

Добавлено через 5 минут
если надо оптимально делать но с использованием "для каждого из" то нужно найти способ вернуться на шаг назад, либо использовать "флаг"-что утяжелит. либо использовать цикл с явным указанием интератора (пока цикл)
1
858 / 657 / 112
Регистрация: 01.11.2012
Сообщений: 2,411
30.08.2013, 14:55
ТС в посте говорит о таблице значений, а в примере у него табличная часть

Добавлено через 34 минуты
Моё решение

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
&НаСервере
Функция ВернутьТЧ()
    return Объект.РешениеЗадачи.Выгрузить();    
КонецФункции
 
&НаКлиенте
Процедура Отсортировать(Команда)
    ТЧ=ВернутьТЧ();
    х=1;
    Для каждого ЭлСтроки из ТЧ Цикл
        if ЭлСтроки.Значения<0 then
            Объект.РешениеЗадачи.Удалить(ЭлСтроки.НомерСтроки-х);
            х=х+1;
        endif;  
    КонецЦикла;
КонецПроцедуры
0
20 / 20 / 0
Регистрация: 29.08.2013
Сообщений: 57
31.08.2013, 17:25
Как уже отмечалось, основная проблема в том, что при несколькими подряд идущими отрицательными значениями будет сдвиг индекса таблицы значений. Попробую предложить следующее:

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
        Для каждого ЭлСтроки из РешениеЗадачи Цикл
            Если ЭлСтроки.Значения < 0 Тогда
                
                ИндексСтроки = РешениеЗадачи.Индекс(ЭлСтроки);  //Запомним индекс удаляемой строки
                РешениеЗадачи.Удалить(ЭлСтроки);
                
                //--Удаляем непрерывный ряд отрицательных заначений--
                Пока Истина Цикл
                    Если РешениеЗадачи.Количество() > ИндексСтроки Тогда //Не допускаем выход индекса за пределы 
                        СлСтрока = РешениеЗадачи[ИндексСтроки];
                        Если СлСтрока.Значения < 0 Тогда
                            РешениеЗадачи.Удалить(СлСтрока);
                        Иначе
                            Прервать;
                        КонецЕсли; 
                        
                    Иначе
                        Прервать;
                    КонецЕсли; 
                КонецЦикла; 
                //-----------
            КонецЕсли;
        КонецЦикла;
0
Модератор
Эксперт 1С
 Аватар для Dethmontt
4032 / 2977 / 594
Регистрация: 10.03.2011
Сообщений: 11,701
Записей в блоге: 1
31.08.2013, 20:51
1C
1
2
3
4
5
6
7
8
9
10
11
12
//Через массив
МассивДляУдаления = Новый Массив();
Для каждого Строка Из Объект.РешаемыеЗадачи Цикл
   Если Строка.Значение < 0 Тогда
      МассивДляУдаления.Добавить(Строка.НомерСтроки-1);
   КонецЕсли;
КонецЦикла;
 
//Удаляем
Для Сч=0 ПО МассивДляУдаления.ВГраница() Цикл
    Объект.РешаемыеЗадачи.Удалить(МассивДляУдаления[МассивДляУдаления.Вграница()-сч]);
КонецЦикла;
0
 Аватар для duk337
2956 / 1768 / 84
Регистрация: 03.11.2011
Сообщений: 8,280
01.09.2013, 12:58
во копьеломка! Мужики, всё просто: обход с конца к началу - и удалённая строка на индекс не повлияет
0
858 / 657 / 112
Регистрация: 01.11.2012
Сообщений: 2,411
01.09.2013, 15:28
Цитата Сообщение от duk337 Посмотреть сообщение
во копьеломка! Мужики, всё просто: обход с конца к началу - и удалённая строка на индекс не повлияет
Задача стоит с использованием цикла Для Каждого Из, им разве можно с конца пройти?
0
 Аватар для duk337
2956 / 1768 / 84
Регистрация: 03.11.2011
Сообщений: 8,280
01.09.2013, 20:23
1C
1
2
3
4
5
6
7
Для Каждого й Из Новый Структура("й",1) Цикл
инд=таблица.Количество();
Пока инд>0 Цикл
таблица[инд-1].Удалить();
инд=инд-1;
КонецЦикла;
КонецЦикла;
0
858 / 657 / 112
Регистрация: 01.11.2012
Сообщений: 2,411
01.09.2013, 21:12
0
2 / 2 / 0
Регистрация: 29.08.2013
Сообщений: 113
03.09.2013, 15:18  [ТС]
Есть нюанс такой!
Что при использование цикла "пока" все классно, все решается, но если допустим брать десятки тысяч значений, то программа просто будет думать оооочень долго... Выходит не оптимально как-то
0
 Аватар для duk337
2956 / 1768 / 84
Регистрация: 03.11.2011
Сообщений: 8,280
03.09.2013, 20:08
Ну тогда https://www.cyberforum.ru/post5006346.html

Добавлено через 5 минут
А если есть возможность НайтиСтроки() - тогда
1C
1
2
3
4
5
6
7
8
ТабУдал(Таблица,Новый Структура("Поле",Значение));
 
Функция ТабУдал(Таблица,Отбор) Экспорт
Удальцы=Таблица.НайтиСтроки(Отбор);
    Для Каждого Ик Из Удальцы Цикл
    Таблица.Удалить(Ик);
    КонецЦикла;
КонецФункции
0
20 / 20 / 0
Регистрация: 29.08.2013
Сообщений: 57
03.09.2013, 21:24
Ну вот модифицированный исходник 1Cv8.rar

Обработка коллекции происходит за один проход цикла, граничные отрицательные значения и ряд отрицательных значений обрабатываются корректно... Ну не знаю что еще нужно
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.09.2013, 21:24

Простенькая задача по JS
Я что-то не пойму, как сделать этот код еще короче? for (i=1; i&lt;=20; i++){ if ((i%3)+(i%5) === 0){ var s =...

Простенькая задача
Не могу понять в чем ошибка. &lt;html&gt; &lt;head&gt; &lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;style.css&quot;&gt; &lt;script...

Простенькая задача
Здравствуйте! Собственно задача: Даны 2 таблицы с колонками A целого типа. Напишите запрос, который вернет все значения колонки А из...

Простенькая задача на Матрицу
Дана матрица размера M × N. В каждой строке матрицы найти минимальный элемент.

Не получается простенькая задача
Условие Дана целочисленная прямоугольная матрица.Определить: 1)количество срок, не содержащих ни одного нулевого элемента; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
32
Ответ Создать тему
Новые блоги и статьи
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации: 1. Вернуть возможность использования знаков | 1 l I;. . .
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
Генератор паролей (вариант №2)
Maks 30.10.2026
Обновленная версия ранее созданной обработки. Добавлены следующие реквизиты типа Булево: - Буквы; - Цифры; - Символы. Изменена логика команды "Сгенерировать" и процедуры "ПриОткрытии":. . .
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе, дабы облегчить себе работу в создании паролей для администрируемых мною сервисов и пользователей. Самым главным критерием для. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru