|
Гуру тест про удаление контрагентов в браузере, можно задавать на собесах. 🠗 (Волшебник 08.04.2020 16:20) | ☑ | ||
---|---|---|---|---|
0
Гений 1С
гуру
08.04.20
✎
15:54
|
Итак, задача.
В базе есть неизвестное количество контрагентов. К базе можно выполнять только один вид запроса: Показать страницу номер N контрагентов (на каждой странице показывается 25 контрагентов). Запрос выдает количество контрагентов на странице. Можно выполнить команду "Удалить контрагентов на текущей странице". Есть один момент - некоторые контрагенты не могут быть удалены. Соответственно, при выдаче команды удаления они останутся и не будут удалены. Вопрос: Как оптимально выполнить удаление тех контрагентов, которых можно удалить. |
|||
1
Ёпрст
08.04.20
✎
16:00
|
(0) выполнить команду удалитьВсехКогоМожно же..
|
|||
2
Aleksey
08.04.20
✎
16:01
|
в браузере нет контрагентов
|
|||
3
ДенисЧ
08.04.20
✎
16:01
|
Если мне такой вопрос зададут на собеседовании - я поинтересуюсь, давно ли вопрошающий был у врача.
ЗЫ. Это же относится и к ТС. |
|||
4
Гений 1С
гуру
08.04.20
✎
16:02
|
(1) (2) (3) че, салабоны, не работает соображалка? ;-)
|
|||
5
Гений 1С
гуру
08.04.20
✎
16:03
|
(2) это я счас как раз решал проблему удаления всех контрагентов в базе books.zoho.com, столкнулся, там аккурат по 25 можно удалять и опять же некоторые не удаляются. ггг.
|
|||
7
ДенисЧ
08.04.20
✎
16:05
|
(5) В какой-то интернет-помойке решать проблему, которая в 1с решается 3мя строчками кода - как-то фу.
|
|||
8
1Снеговик
гуру
08.04.20
✎
16:07
|
(0) если ты не можешь проверить сколько на странице осталось после удаления, то никак.
А так, удаляешь всех на 1 странице, как только количество перестает уменьшаться переходишь на следующую. |
|||
9
PR
08.04.20
✎
16:08
|
Большинство таких специалыстов базовых вещей не умеет (даже не технического плана), зато думают, что их супергуру делает то, что они знают, как в запросе строку превратить в число
Удивляются потом, почему им больше сотки никто не предлагает и кроме как в ларек не берут |
|||
10
PR
08.04.20
✎
16:10
|
(4) Даже вопрос "Как сделать внешнюю печатную форму минимальной кровью, чтобы она не отваливалась при изменении типовой конфы" и то более насущный, чем твой
|
|||
11
PR
08.04.20
✎
16:12
|
Это не гуру-тест, это тест на бесполезных задротов, оторванных от жизни
|
|||
12
Мимохожий Однако
08.04.20
✎
16:13
|
Один дурак может задать столько вопросов, что и сто мудрецов не ответят.
|
|||
13
dezss
08.04.20
✎
16:23
|
Ну кто же еще мог подобный вопрос задать на мисте. Конечно же наш ТС.
|
|||
14
Lama12
08.04.20
✎
16:35
|
(0) Так, с конца. Нет?
|
|||
15
Garikk
08.04.20
✎
16:39
|
(0)
если это обычный rest, у него скорее всего на запрос несуществующей страницы - отдается последняя - геморрой что надо вычислять макс-число страниц есть ли в выдаче списка контрагентов сортировка - если нет - задача решаема за просто адское количество времени потому что всевремя будет непредсказуемо менятся список контрагентов на страницах и невозмодно узнать - удалился ли контрагент или нет |
|||
16
Garikk
08.04.20
✎
16:39
|
(15) +не перебирая все страницы
|
|||
17
Гений 1С
гуру
08.04.20
✎
17:13
|
(14) подробнее. Как.
(15) количество страниц получить нельзя, собес не прошел, не умеешь читать условие. (8) можно, прикинь |
|||
18
Гений 1С
гуру
08.04.20
✎
17:13
|
(16) есть красивое решение
|
|||
19
Гений 1С
гуру
08.04.20
✎
17:14
|
(11) в микрософт любят такое давать. Типа сколько бензозаправок в москве
|
|||
20
Ботаник Гарден Меран
08.04.20
✎
17:17
|
(19)
Москва в США маленький город, 23700 жителей. От 5 до 10 заправок. Не умеешь ты, гуру, правильные задачи находить, всё г из ларьков тащишь. |
|||
21
Гений 1С
гуру
08.04.20
✎
17:24
|
(20) да норм задача, чисто на алгоритмику. Нехай думают, корифеи.. А то не верят, что я Гений 1С
|
|||
22
Ns33
08.04.20
✎
17:26
|
Бесконечно гонять цикл: удалять контрагентов, начиная с последней страницы и до первой.
Условие выхода: за всю переборку (от конца до начала) не поменялся номер последней страницы и кво контрагентов на ней; ибо будут копиться неудаляемые контрагенты, и удаление такой страницы ничего не изменит. |
|||
23
Ns33
08.04.20
✎
17:52
|
(22) Дополнение: т.к. начиная с первой страницы будут копиться страницы, заполненные неудаляемыми контрагентами, то вводим счетчик, хранящий номер последней забитой неудаляемыми контрагентами страницы, и цикл по страницам будет идти от конца до этого счетчика.
|
|||
24
Гений 1С
гуру
08.04.20
✎
18:00
|
(22) что такое "последняя страница", как ты ее найдешь.
|
|||
25
Гений 1С
гуру
08.04.20
✎
18:01
|
(23) что такое неудаляемые контрагенты? Ты можешь получить только количество контрагентов на странице.
|
|||
26
experimentator76
08.04.20
✎
18:12
|
(7) а в фузине вообще - одной строкой :)
|
|||
27
Ns33
08.04.20
✎
18:14
|
(24) ну получается перебором всех страниц, до тех пор, пока кво контрагентов на этой странице будет равно 0.
(25) "некоторые контрагенты не могут быть удалены". Такие контрагенты постепенно будут скапливаться, начиная с 0-й страницы и вся страница будет забита ими. При удалении контрагентов на такой странице, ничего не изменится, а именно: последняя страница останется последней и кво контрагентов на ней (последней) не изменится. |
|||
28
experimentator76
08.04.20
✎
18:16
|
(0) Хитрый способ. Стать путиным. Приказать контрагентам и они удалятся.
|
|||
29
experimentator76
08.04.20
✎
18:18
|
(28) ой. этот способ уже кто-то использует.
|
|||
30
Гений 1С
гуру
08.04.20
✎
18:31
|
(27) подробнее... дьявол в деталях
|
|||
31
Гений 1С
гуру
08.04.20
✎
19:49
|
||||
32
Garykom
гуру
08.04.20
✎
20:50
|
(0)
|
|||
33
Гений 1С
гуру
08.04.20
✎
22:17
|
(32) умница. Метод туда-обратно или хоббит. Именно в этом фишка задачи
|
|||
34
Гений 1С
гуру
09.04.20
✎
17:57
|
(32) Хотя в походе назад ты идешь до первой страницы, а в идеале если после удаления текущей страницы осталось столько же сколько и было, прерываем.
|
|||
35
Гений 1С
гуру
09.04.20
✎
18:02
|
Что-то типа этого:
НомерСтраницы = 0; Пока истина Цикл НомерСтраницы = НомерСтраницы + 1; КоличествоКонтрагентов = ПоказатьСтраницу(НомерСтраницы); Если КоличествоКонтрагентов = 0 Тогда Прервать; КонецЕсли; УдалитьКонтрагентовНаТекущейСтранице(НомерСтраницы); КонецЦикла; Пока истина Цикл ПредКоличествоКонтрагентов = КоличествоКонтрагентов; КоличествоКонтрагентов = ПоказатьСтраницу(НомерСтраницы); Если ПредКоличествоКонтрагентов = КоличествоКонтрагентов И КоличествоКонтрагентов <> 0 Тогда Прервать; КонецЕсли; Если КоличествоКонтрагентов = 0 Тогда НомерСтраницы = НомерСтраницы - 1; Если НомерСтраницы = 0 Тогда Прервать; КонецЕсли; Продолжить; КонецЕсли; УдалитьКонтрагентовНаТекущейСтранице(НомерСтраницы); КонецЦикла; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |