|
Задача для собеседования | ☑ | ||
---|---|---|---|---|
0
Ненавижу 1С
гуру
01.06.12
✎
13:03
|
Простая.
Написать функцию принимающую на входе 2 ссылки на иерархический справочник. На выходе - ближайший их общий прародитель или пустая ссылка, если такого нет |
|||
1
Irek-kazan
01.06.12
✎
13:03
|
где вопрос?
|
|||
2
Господин ПЖ
01.06.12
✎
13:03
|
угадывай...
|
|||
3
Ненавижу 1С
гуру
01.06.12
✎
13:04
|
(1) зачем, есть предложение
|
|||
4
rotting
01.06.12
✎
13:04
|
Это тебе задали или ты придумал?
|
|||
5
Ненавижу 1С
гуру
01.06.12
✎
13:04
|
(4) я придумал
|
|||
6
Guk
01.06.12
✎
13:05
|
какая-то не очень умная задача. а главное очень "практичная"...
|
|||
7
Guk
01.06.12
✎
13:06
|
разве что позволяет развернуть дискуссию с собеседуемым на философскую тему "что есть ближайший общий прародитель"...
|
|||
8
Feanor
01.06.12
✎
13:07
|
(5) садись, два :)
|
|||
9
Господин ПЖ
01.06.12
✎
13:07
|
(6) Сейчас тебе расскажут что тебе без этого теперь никак...
Ваня закомплексует и пойдет в сторожа |
|||
10
Axel2009
01.06.12
✎
13:07
|
(0) задача на собеседовании
есть РС периодический Номенклатура, ХарактеристикаНоменклатуры, Цена нужно получить срез последних по измерению Номенклатура |
|||
11
Господин ПЖ
01.06.12
✎
13:08
|
(7) тут вроде все понятно... если пойдут вопросы "ачоэто?" можно сразу не ждать решения
|
|||
12
Ахиллес
01.06.12
✎
13:08
|
(5) Полное наименование поделить на подстроки и сравнивать эти подстроки.
|
|||
13
Ненавижу 1С
гуру
01.06.12
✎
13:08
|
(8) чего так резко?
(9) )) |
|||
14
Guk
01.06.12
✎
13:08
|
(10) в чем подвох?...
|
|||
15
rotting
01.06.12
✎
13:09
|
(12) вот и не стандартное решение первое)
|
|||
16
rotting
01.06.12
✎
13:09
|
(14) в том что получишь несколько цен)
|
|||
17
Ненавижу 1С
гуру
01.06.12
✎
13:09
|
(10) это уже было, надо просто забыть, что есть ХарактеристикаНоменклатуры и самому "вручную" сделать срез последних
но есть некорректность - цен может быть несколько (12) если они неуникальны? |
|||
18
Ахиллес
01.06.12
✎
13:10
|
(17) Тогда первое же сравнение выдаст ЛОЖЬ
|
|||
19
Guk
01.06.12
✎
13:11
|
(16) а этот смысл как-то скрыт? разве изначально это непонятно?...
|
|||
20
Ахиллес
01.06.12
✎
13:11
|
...стоп чё то не так понял :-)
|
|||
21
Guk
01.06.12
✎
13:11
|
(20) вооот, смотрим (7)...
|
|||
22
Ахиллес
01.06.12
✎
13:12
|
Тогда по полному коду :-) Меня на мякине не проведёшь :-)
|
|||
23
Buster007
01.06.12
✎
13:12
|
(19) ну стоит подумать об адекватности собеседующего...
01.06.12 00:00:00 Н1 Х1 100 01.06.12 00:00:00 Н1 Х2 120 какая последняя? |
|||
24
Guk
01.06.12
✎
13:14
|
(23) какая больше, та и последняя разумеется. мы же говорим про российскую коммерческую фирму, надеюсь?...
|
|||
25
Ненавижу 1С
гуру
01.06.12
✎
13:15
|
(24) даже в Российской иногда нужна меньшая ))
|
|||
26
Ахиллес
01.06.12
✎
13:15
|
Обе последние.
|
|||
27
Starhan
01.06.12
✎
13:24
|
на вскидку
получаем два массива с родителями обоих ссылок. (запрос только иерархия) И начиная с конца меньшего сравниваем их попорядку до нулевого элемента массива. |
|||
28
Starhan
01.06.12
✎
13:27
|
хотя вру. проще навероне с начала начать так как до общего прародителя начало будет полностью одинаковое.
|
|||
29
Beduin
01.06.12
✎
13:28
|
Функция ДляНенавижу1С(Знач Ссылка1, Знач Ссылка2)
Спр = Справочники.Номенклатура; НачальнаяСсылка2 = Ссылка2; Пока Ссылка1.Родитель <> Спр.ПустаяСсылка() Цикл Если Ссылка1.Родитель = Ссылка2.Родитель Тогда Возврат Ссылка1.Родитель; КонецЕсли; Ссылка2 = Ссылка2.Родитель; Если Ссылка2.Родитель = Спр.ПустаяСсылка() Тогда Ссылка1 = Ссылка1.Родитель; Ссылка2 = НачальнаяСсылка2; КонецЕсли; КонецЦикла; Возврат Спр.ПустаяСсылка(); КонецФункции |
|||
30
rutony
01.06.12
✎
13:31
|
Мы дали человеку задачку на собеседование:
УТ 10.3, вывести штрихкод товара в форме списка номенклатуры. Вот это я понимаю задачка, нужно написать и оптимально, что бы не лагало, так еще и с подвохом=) Человек парился 1 день, так и не смог родить ничего=) |
|||
31
Азазелло
01.06.12
✎
13:31
|
В Т1 получаем ("Ссылка", "Порядок")
Ссылка1 0 РодительСсылки1 1 .... РодительРодителя....Ссылки1 N В Т2 получаем ("Ссылка", "Порядок") Ссылка2 0 РодительСсылки2 1 .... РодительРодителя....Ссылки2 M А дальше джойним Т1 и Т2 по "Ссылка", группируем по ней с агрегатом МИНИМУМ("Порядок") и выбираем минимальный. (29) ай-яй-яй, к реквизитам элемента через точку обращаться... |
|||
32
ptiz
01.06.12
✎
13:38
|
если "в лоб"
ОбщийРодитель = Справочники.Номенклатура.ПустаяСсылка(); Если Элемент1.Уровень() < Элемент2.Уровень() Тогда ТекущийРодитель = Элемент1.Родитель; Иначе ТекущийРодитель = Элемент2.Родитель; КонецЕсли; Пока НЕ ТекущийРодитель.Пустая() Цикл Если Элемент1.ПринадлежитЭлементу(ТекущийРодитель) И Элемент2.ПринадлежитЭлементу(ТекущийРодитель) Тогда ОбщийРодитель = ТекущийРодитель; Прервать; КонецЕсли; ТекущийРодитель = ТекущийРодитель.Родитель; КонецЦикла; Сообщить(ОбщийРодитель); |
|||
33
Ахиллес
01.06.12
✎
13:38
|
(30) Штрихкод в графическом виде в списке справочника номенклатуры?
|
|||
34
Ахиллес
01.06.12
✎
13:40
|
(32) Азазелло прав. Нехрен базу в цикле дёргать через точку, когда можно зараз получить всех родителей и сравнивать уже их.
|
|||
35
rutony
01.06.12
✎
13:43
|
(33) Да нет=) Просто циферки.
В конфе даже серий и характеристик небыло. Подвох в том что у парочки товаров было несколько штрихкодов) |
|||
36
Alex S D
01.06.12
✎
13:43
|
а непростые задачки даешь ?
|
|||
37
Ахиллес
01.06.12
✎
13:44
|
(35) Так же как с показом остатков и цен в типовой конфигурации. Хрен ли тут придумывать ещё.
|
|||
38
Dmitry77
01.06.12
✎
13:44
|
Например
1. Получаем всех родителей первого элемента и всех родителей второго. 2. Грузим их в ТЗ вида родитель, элемент, дальность от элемента. Грузим эту таблицу в запрос. 3. Группируем по родителям, сумируем стороки запроса, сортируем п одальности от элемента. Отбираем где строк =2. |
|||
39
Beduin
01.06.12
✎
13:50
|
(34) А ты думаешь зараз всех родителей получить быстрее будет, чем по одной таблице прыгать?
|
|||
40
gosn1ck
01.06.12
✎
13:51
|
(10) 1. срез последних 2. соединение (3 поля + период среза > периода физ тч) с физ таблицей из которой берем только период; делаем группировку чтобы этот период был в максимум 3. соединяем еще раз с физ таблицей (также 3 поля + новое поле из 2 + период из физ тч).
вот те и 2 цены на работу возьмёте? |
|||
41
Ахиллес
01.06.12
✎
13:53
|
(39) В твоём примере нет никакой таблицы.
|
|||
42
Азазелло
01.06.12
✎
13:53
|
(39) боюсь, что в рамках запросов 1С, не позволяющих создавать рекурсии, не получится разом получить всех родителей Элемента.
|
|||
43
Ненавижу 1С
гуру
01.06.12
✎
13:53
|
кстати, итоги по иерархии 1С делает так, делаются итоги без иерархии, потом сервер приложений в цикле достраивает иерархию
|
|||
44
Ахиллес
01.06.12
✎
13:56
|
(42) Можно с помощью .Уровень нарисовать запрос со всеми родителями. Но это извращения всё. Сравнения Полных кодов проще.
|
|||
45
Ненавижу 1С
гуру
01.06.12
✎
13:56
|
(36) по регистру ТоварыНаСкладах сделать отчет по среднему времени (в днях) нахождения товара на заданном складе без учета характеристик
|
|||
46
Ненавижу 1С
гуру
01.06.12
✎
13:56
|
(44) если не уникальны они?
|
|||
47
Азазелло
01.06.12
✎
13:58
|
(46)+1 несерьезно это, по текстовым полям сравнивать
|
|||
48
_Atilla
01.06.12
✎
13:59
|
(0) Вид иерархии? контроль уникальности кодов...
Есть какие то условия? |
|||
49
Ненавижу 1С
гуру
01.06.12
✎
14:00
|
(48) нет, нельзя на это завязываться
|
|||
50
Beduin
01.06.12
✎
14:00
|
(41) Хм. Таблица справочника это теперь не таблица?
|
|||
51
Ахиллес
01.06.12
✎
14:00
|
(46) Неуникальные кода? Значит сами себе злобные буратины и придётся извращатся со ссылками и родителями. Нет ни одной вменяемой причины почему в спавочнике должны быть неуникальные кода.
(47)Да ну? Нормально. |
|||
52
Ненавижу 1С
гуру
01.06.12
✎
14:02
|
(51) а как ты думаешь он строится этот полный код? не тем ли обходом иерархии? ))
|
|||
53
_Atilla
01.06.12
✎
14:03
|
(32) Если вид иерархии "групп и элементов" твой корректно сработает?
|
|||
54
Ахиллес
01.06.12
✎
14:06
|
(52) Так всё таки, зачем заводить справочники с неуникальными кодами? В какой секте свидетелей Быдлокода такому учат?
|
|||
55
Beduin
01.06.12
✎
14:07
|
(54) С объединением баз никогда не сталкивался?
|
|||
56
Buster007
01.06.12
✎
14:08
|
(54) бывают такие справочники у которых длина кода равна 0.
|
|||
57
Ненавижу 1С
гуру
01.06.12
✎
14:09
|
(54) да хрен с ними со справочниками и БД вообще
есть объект, у него поле Родитель - ссылка на объект такого же типа, может быть не заполнено известно, что ссылки эти образуют дерево найти для двух объектов минимального общего предка |
|||
58
Ахиллес
01.06.12
✎
14:09
|
(55) В объединённой базе не будет уникальных кодов? ;-) Обычно кода в другой реквизит переносят в таком случае если они нужны в новой базе или префикс базы добавляют.
(56)Бывают, бывают, я разве говорил, что не бывают? |
|||
59
Buster007
01.06.12
✎
14:10
|
(58) ну вот ) значит зачем завязываться на код?
|
|||
60
Beduin
01.06.12
✎
14:11
|
(57) Выложи свою версию?
|
|||
61
Ненавижу 1С
гуру
01.06.12
✎
14:13
|
(60) в цикле попеременно сдвигаем обе ссылки на родителя (приближаемся к корню), проверяя на общего и пустого родителя
|
|||
62
Ахиллес
01.06.12
✎
14:15
|
(59)Я больше привык прикладные задачи решать. А оптимальное решение может включать в себя посыл неадекватного менеджера в пешее эротическое путешествие если он какую то фигню сморозил. Если задача в (0) теоретическая и к 1С отношение имеет постольку, поскольку, то опять же в цикле сравниваем родителей начиная снизу, в чем тут задача, вообще не понятно если задача не завязана на конкретный одинэсовский код.
|
|||
63
Buster007
01.06.12
✎
14:15
|
(61) не интересно. надо запросом! )
|
|||
64
Ненавижу 1С
гуру
01.06.12
✎
14:15
|
(63) это про (57)
|
|||
65
Axel2009
01.06.12
✎
14:16
|
(61) 10 уровней иерархии. один элемент указываем из 9 уровня, другой из 3го. кого куда сдвигать?
|
|||
66
Ахиллес
01.06.12
✎
14:16
|
Блин. Ну вот, Гора (0) родила мышь (61). И в чем тут задача, когда и так было понятно, что надо родителей сравнивать?
|
|||
67
Beduin
01.06.12
✎
14:17
|
(61) Почти как у меня в (29)
|
|||
68
Ненавижу 1С
гуру
01.06.12
✎
14:21
|
кстати в (61) я брешу
|
|||
69
Buster007
01.06.12
✎
14:22
|
(64) ну да.
|
|||
70
_Atilla
01.06.12
✎
14:25
|
(61) в цикле попеременно сдвигаем обе ссылки на родителя (приближаемся к корню), проверяя на общего и пустого родителя
Доработаем твою мысль: У кого уровень выше надо поднимать до уровня другого. |
|||
71
Beduin
01.06.12
✎
14:25
|
(68) )))
Хз тогда как. Запросом не получится, пихать это все в массивы не вариант. Сдвигать проще, безопасней и быстрей. |
|||
72
_Atilla
01.06.12
✎
14:25
|
(70) дальше по твоему будет.
|
|||
73
Ненавижу 1С
гуру
01.06.12
✎
14:25
|
в (61) надо еще запоминать
в общем снимается, согласен - неинтересно пойду ка я в отпуск |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |