|
Откритикуйте меня (волнуюсь) | ☑ | ||
---|---|---|---|---|
0
volfy
11.11.13
✎
21:07
|
Получил я задание написать обработку которая будет искать документы по схожим строкам номенклатуры в табличных частях. Написал, через 30 минут отправлю (это тест собеседования) очень хочу чтобы откритиковали код. Высылаю ссылку https://www.dropbox.com/s/j62zyug9ea8dgz4/ПоискСхожихРеализацийПоТЧТовары.epf
|
|||
1
volfy
11.11.13
✎
21:08
|
Писал под УТ 10.3 (проверить можно в принципе на любой конфе с похожей структурой)
|
|||
2
ДенисЧ
11.11.13
✎
21:08
|
Обрбаботку не открывал, но говонокод, однозначно!
|
|||
3
GROOVY
11.11.13
✎
21:09
|
100 баксов. Кто меньше?
|
|||
4
volfy
11.11.13
✎
21:10
|
Это почему?) Объективнее пожалуйста)
|
|||
5
volfy
11.11.13
✎
21:11
|
Запрос = Новый Запрос("ВЫБРАТЬ РАЗЛИЧНЫЕ
| РеализацияТоваровУслугТовары.Номенклатура |ПОМЕСТИТЬ ВТ_НоменклатураДокументаШапки |ИЗ | Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары |ГДЕ | РеализацияТоваровУслугТовары.Ссылка = &СсылкаШапки |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | РеализацияТоваровУслугТовары.Ссылка КАК Документ, | КОЛИЧЕСТВО(РАЗЛИЧНЫЕ РеализацияТоваровУслугТовары.Номенклатура) КАК ЧислоСовпадений |ПОМЕСТИТЬ ВТ_ПоискСовпадений |ИЗ | Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_НоменклатураДокументаШапки КАК ВТ_НоменклатураДокументаШапки | ПО РеализацияТоваровУслугТовары.Номенклатура = ВТ_НоменклатураДокументаШапки.Номенклатура |ГДЕ | РеализацияТоваровУслугТовары.Ссылка.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания | |СГРУППИРОВАТЬ ПО | РеализацияТоваровУслугТовары.Ссылка |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ВТ_ПоискСовпадений.Документ, | ВТ_ПоискСовпадений.ЧислоСовпадений |ИЗ | ВТ_ПоискСовпадений КАК ВТ_ПоискСовпадений |ГДЕ | НЕ ВТ_ПоискСовпадений.Документ = &СсылкаШапки | И ВТ_ПоискСовпадений.ЧислоСовпадений >= &МинимумСовпадений | |УПОРЯДОЧИТЬ ПО | ВТ_ПоискСовпадений.Документ.Дата"); Запрос.УстановитьПараметр("МинимумСовпадений", МинимумСовпадений); Запрос.УстановитьПараметр("СсылкаШапки", Документ); Запрос.УстановитьПараметр("ДатаНачала", ДатаНач); Запрос.УстановитьПараметр("ДатаОкончания", ?(ДатаКон = Дата('00010101000000'), КонецДня(ТекущаяДата()), КонецДня(ДатаКон))); ДокументыТЗ = Запрос.Выполнить().Выгрузить(); |
|||
6
Learn_
11.11.13
✎
21:12
|
(2) : ))
|
|||
7
volfy
11.11.13
✎
21:12
|
Вот весь код. Всё в одном запросе. Запрос исключает похожие в табличных частях номенклатуры (Когда в одной ТЧ используются одинаковые номенклатуры несколько раз)
|
|||
8
volfy
11.11.13
✎
21:13
|
ДенисЧ: <= Соизволь аргументировать грубиянчик )))
|
|||
9
ivanovnm
11.11.13
✎
21:13
|
(5) Даже не позорься.
|
|||
10
ppdisk
11.11.13
✎
21:14
|
(5) Запрос.УстановитьПараметр("ДатаОкончания", ?(ДатаКон = Дата('00010101000000'), КонецДня(ТекущаяДата()), КонецДня(ДатаКон)));
Это как раз так само и просится к топику про границу. Документы в последней секунде дня не попадут в выборку. |
|||
11
volfy
11.11.13
✎
21:14
|
НУ АРГУМЕНТЫ ГДЕ?)
|
|||
12
ivanovnm
11.11.13
✎
21:14
|
(5) Ты же потом еще туда пойдешь, не так ли. Как потом будешь людям в глаза смотреть?
|
|||
13
volfy
11.11.13
✎
21:14
|
(10) + мне ботинком в голову... согласен, сам дурак. =)
|
|||
14
volfy
11.11.13
✎
21:15
|
(12) - недочего докопаться?)
|
|||
15
Explorer1c
11.11.13
✎
21:16
|
(10) А как бы ты написал?
|
|||
16
ivanovnm
11.11.13
✎
21:16
|
(10) Когда включат rls - вылезет ошибка в самом интересном месте
|
|||
17
ИсчадиеADO
11.11.13
✎
21:16
|
(10) попадут!!!! Это не вирт.таблица остатков
|
|||
18
volfy
11.11.13
✎
21:17
|
=) Интересно вы подключились господа.
|
|||
19
ivanovnm
11.11.13
✎
21:17
|
А в УТ rls есть
|
|||
20
volfy
11.11.13
✎
21:18
|
Пусть будет граница, это же не ошибка и не ущерб производительности.
|
|||
21
ppdisk
11.11.13
✎
21:18
|
(15) Новый Граница(КонецДня(Дата),ВидГраницы.Включая)
(17) Ушёл тестить. |
|||
22
volfy
11.11.13
✎
21:18
|
Можно оправдаться "Заплаткой" =) мол вдруг будешь в запросе табличку прикручивать из РН, а тут всё готово)
|
|||
23
volfy
11.11.13
✎
21:19
|
Меня интересует по звпросу. Кто то может его модифицировать и докапаться к его основному телу?
|
|||
24
К_Дач
11.11.13
✎
21:20
|
Что за параметр СсылкаШапки? Уж не в цикле ли по выборке из документов ты запрос делаешь?
|
|||
25
ppdisk
11.11.13
✎
21:20
|
(17) беда, попадают.
|
|||
26
Галахад
гуру
11.11.13
✎
21:21
|
Задание-то как звучит?
|
|||
27
volfy
11.11.13
✎
21:21
|
(24) боже упаси. Нет это документ с которым происходит сравнение, выборка через виртуальную таблицу, ни одного цикла.
|
|||
28
ИсчадиеADO
11.11.13
✎
21:22
|
(5) имхо, нормально, только последний запрос в пакете не нужен, бери ИМЕЮЩИЕ КОЛИЧЕСТВО(РАЗЛИЧНЫЕ РеализацияТоваровУслугТовары.Номенклатура) > &Параметр
|
|||
29
volfy
11.11.13
✎
21:22
|
Значение - Реализация товаров и услуг...
|
|||
30
ivanovnm
11.11.13
✎
21:22
|
Зачем тебе ВТ_НоменклатураДокументаШапки? лишний проход по таблице
|
|||
31
ИсчадиеADO
11.11.13
✎
21:22
|
(25) угумс
|
|||
32
volfy
11.11.13
✎
21:22
|
(30) Убирает дубликаты номенклатуры в ТЧ
|
|||
33
К_Дач
11.11.13
✎
21:23
|
Да, зачем выбирать в ВТ? Соедини выборку ТЧ с самой собой, лишний пакет в запросе
|
|||
34
volfy
11.11.13
✎
21:23
|
(33) Хороший совет =) Спасибо)
|
|||
35
К_Дач
11.11.13
✎
21:25
|
(32) сгруппировать по Док.Ссылка и по Док.Тч.Номенклатура для того чтобы убрать дубли
|
|||
36
ИсчадиеADO
11.11.13
✎
21:25
|
если уж оптимизировать на скорость, то "РеализацияТоваровУслугТовары.Ссылка.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания " нужно убирать, т.к. это не явное левое соединение всех строк таблич.частей всех реализаций со всеми документами, а уж потом отбор. Нужно сначала в вт выбрать доки по дате в тч, а потом из таб.частей с внутренним соедиением с тч по ссылке
|
|||
37
ivanovnm
11.11.13
✎
21:25
|
(35) Ты понимаешь что он хотел сделать?!
|
|||
38
ИсчадиеADO
11.11.13
✎
21:26
|
(33) ну и где тут + в производительности?
|
|||
39
К_Дач
11.11.13
✎
21:27
|
(38) я имею ввиду выбрать ТЧ один раз в ВТ, а потом ВТ соединять саму с собой....
|
|||
40
К_Дач
11.11.13
✎
21:27
|
(36) согласен
|
|||
41
bushd
11.11.13
✎
21:29
|
перед смертью не надышишься, посылай... не смотрел
|
|||
42
bushd
11.11.13
✎
21:29
|
(0) Волнуешься явно рано... Ты еще ни одной копейки с них не получил...
|
|||
43
К_Дач
11.11.13
✎
21:30
|
(0) в падаваны берут?
|
|||
44
volfy
11.11.13
✎
21:31
|
Запрос = Новый Запрос("ВЫБРАТЬ
| Товары_Выходная.Ссылка КАК Документ, | КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Товары_Выходная.Номенклатура) КАК ЧислоСовпадений |ИЗ | Документ.РеализацияТоваровУслуг.Товары КАК Товары_Выходная | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг.Товары КАК Товары_Исходная | ПО Товары_Выходная.Номенклатура = Товары_Исходная.Номенклатура |ГДЕ | Товары_Выходная.Ссылка.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания | И Товары_Исходная.Ссылка = &СсылкаШапки | И Товары_Выходная.Ссылка <> &СсылкаШапки | |СГРУППИРОВАТЬ ПО | Товары_Выходная.Ссылка | |ИМЕЮЩИЕ | КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Товары_Выходная.Номенклатура) >= &МинимумСовпадений"); |
|||
45
volfy
11.11.13
✎
21:32
|
Убрались виртуальные таблички. Надеюсь не накрутил лишнего?
|
|||
46
volfy
11.11.13
✎
21:32
|
Падаваны?) Это Кто?) (43)
|
|||
47
volfy
11.11.13
✎
21:33
|
Ребят вам смешно а я очкую =)
|
|||
48
volfy
11.11.13
✎
21:34
|
Работает самое главное )))
|
|||
49
К_Дач
11.11.13
✎
21:35
|
(44) пойдет. Только все равно к ТЧ документов два раза обращаешься, перечитай еще раз (39)
падаван = стажер |
|||
50
ivanovnm
11.11.13
✎
21:35
|
(44) Еще хуже стало :(
|
|||
51
volfy
11.11.13
✎
21:41
|
Запрос = Новый Запрос("ВЫБРАТЬ
| РеализацияТоваровУслугТовары.Ссылка, | РеализацияТоваровУслугТовары.Номенклатура |ПОМЕСТИТЬ ВТ_ТЧ_Документов |ИЗ | Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары | |СГРУППИРОВАТЬ ПО | РеализацияТоваровУслугТовары.Ссылка, | РеализацияТоваровУслугТовары.Номенклатура |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | Товары_Выходная.Ссылка КАК Документ, | КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Товары_Выходная.Номенклатура) КАК ЧислоСовпадений |ИЗ | ВТ_ТЧ_Документов КАК Товары_Выходная | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_ТЧ_Документов КАК Товары_Исходная | ПО Товары_Выходная.Номенклатура = Товары_Исходная.Номенклатура |ГДЕ | Товары_Выходная.Ссылка.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания | И Товары_Выходная.Ссылка <> &СсылкаШапки | И Товары_Исходная.Ссылка = &СсылкаШапки | |СГРУППИРОВАТЬ ПО | Товары_Выходная.Ссылка | |ИМЕЮЩИЕ | КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Товары_Выходная.Номенклатура) >= &МинимумСовпадений"); |
|||
52
volfy
11.11.13
✎
21:42
|
Гуру... простите бездаря... =( Я исправлюсь, клянусь!
|
|||
53
volfy
11.11.13
✎
21:43
|
(49) ...нет, уже фикс, причем очень привлекательный
|
|||
54
volfy
11.11.13
✎
21:43
|
....(49) поэтому и волнуюсь)
|
|||
55
К_Дач
11.11.13
✎
21:45
|
|ГДЕ
| Товары_Выходная.Ссылка.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания перенеси в первую выборку. Приучай себя в пакетах сразу выбрать все нужное в ВТ, не обращаясь лишний раз к базе, а потом уже крутить с ними |
|||
56
volfy
11.11.13
✎
21:46
|
(55) верно... Что то я вообще...перенервничал... Москвичам (если примут) с получки по пиву дам =)
|
|||
57
К_Дач
11.11.13
✎
21:47
|
Рановато тебе в самостоятельное плавание, ИМХО. Ну или готовься пахать как Папа Карло
|
|||
58
ИсчадиеADO
11.11.13
✎
21:48
|
(52) я хоть и не гуру, но в (5) у тебя было лучше чем в (51). Не, ну ты сам представь себя на месте скуля. Или в 1ом случае тебе сказали выбрать из таблицы 20 строк. А потом из этой же таблицы сделать соединение с твоими 20ю.
или как в (51): выбрать 100500строки и потом их 100500 раз соединять с собой? Ну пожалей скуль уже |
|||
59
volfy
11.11.13
✎
21:51
|
(58) Сломал все стереотипы!!!!! Система сломана =)
|
|||
60
ivanovnm
11.11.13
✎
21:52
|
ВЫБРАТЬ РАЗРЕШЕННЫЕ
РеализацияТоваровУслугТовары.Ссылка КАК Документ, КОЛИЧЕСТВО(РАЗЛИЧНЫЕ РеализацияТоваровУслугТовары.Номенклатура) КАК ЧислоСовпадений ИЗ Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары ГДЕ РеализацияТоваровУслугТовары.Номенклатура В (ВЫБРАТЬ РАЗЛИЧНЫЕ РеализацияТоваровУслугТовары.Номенклатура ИЗ Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары) И РеализацияТоваровУслугТовары.Ссылка.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания СГРУППИРОВАТЬ ПО РеализацияТоваровУслугТовары.Ссылка ИМЕЮЩИЕ КОЛИЧЕСТВО(РАЗЛИЧНЫЕ РеализацияТоваровУслугТовары.Номенклатура) >= &МинимумСовпадений |
|||
61
К_Дач
11.11.13
✎
21:52
|
(59) перепиши последний вариант с учетом (55) и отсылай. Я пью кефир, есичо. Свежий.
|
|||
62
volfy
11.11.13
✎
21:53
|
Что происходит раньше, СОЕДИНЕНИЕ, или УСЛОВИЕ ГДЕ?
|
|||
63
volfy
11.11.13
✎
21:54
|
В зависимости от этого решится судьба (58) - ого
|
|||
64
ИсчадиеADO
11.11.13
✎
21:55
|
(62) соединение раньше
(63) ))) |
|||
65
ИсчадиеADO
11.11.13
✎
21:58
|
короче имхо оставь как в (5), но добавь слово разрешенные из (60).
Кста!!! На вашей ут-шечке для одноразового запуска по большому счету фиолетово, а жадность - это один из главных скиллов 1сника. Т.ч. фигня вопрос. Главное что б сам разобрался)) |
|||
66
Славен
11.11.13
✎
21:59
|
забавно если тот кто проверять будет сидит в этой ветке
|
|||
67
К_Дач
11.11.13
✎
22:00
|
Если только там не будут читать его код)) или уже не прочли
|
|||
68
ivanovnm
11.11.13
✎
22:01
|
фигня вопрос, главное чтобы объяснить смог. насобачится
|
|||
69
ИсчадиеADO
11.11.13
✎
22:01
|
(66) а чо такова? парень сам написал в (5)
|
|||
70
ivanovnm
11.11.13
✎
22:03
|
забыл во вложенном
где РеализацияТоваровУслугТовары.Ссылка = &Ссылка |
|||
71
volfy
11.11.13
✎
22:05
|
после (64) вывод что код должен быть таким
Запрос = Новый Запрос("ВЫБРАТЬ РАЗЛИЧНЫЕ | РеализацияТоваровУслугТовары.Номенклатура |ПОМЕСТИТЬ ВТ_НоменклатураДокументаШапки |ИЗ | Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары |ГДЕ | РеализацияТоваровУслугТовары.Ссылка = &СсылкаШапки |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | РеализацияТоваровУслугТовары.Ссылка КАК Документ, | КОЛИЧЕСТВО(РАЗЛИЧНЫЕ РеализацияТоваровУслугТовары.Номенклатура) КАК ЧислоСовпадений |ИЗ | Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_НоменклатураДокументаШапки КАК ВТ_НоменклатураДокументаШапки | ПО РеализацияТоваровУслугТовары.Номенклатура = ВТ_НоменклатураДокументаШапки.Номенклатура |ГДЕ | РеализацияТоваровУслугТовары.Ссылка.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания | И НЕ РеализацияТоваровУслугТовары.Ссылка = &СсылкаШапки | |СГРУППИРОВАТЬ ПО | РеализацияТоваровУслугТовары.Ссылка | |ИМЕЮЩИЕ | КОЛИЧЕСТВО(РАЗЛИЧНЫЕ РеализацияТоваровУслугТовары.Номенклатура) >= &МинимумСовпадений"); |
|||
72
volfy
11.11.13
✎
22:06
|
Если соединение выполняется раньше то рациональнее к 5 строкам присоединять 10 000 .... а не 10 000 к 10 000 ... согласен
|
|||
73
extrim-style
11.11.13
✎
22:11
|
(0) 21.37 уплыли! всё, можешь расслабиться, теперь не так страшно) зато результат сразу знаешь)
|
|||
74
volfy
11.11.13
✎
22:11
|
ИсчадиеADO
- не критикуют =) или надоело или согласны) |
|||
75
volfy
11.11.13
✎
22:11
|
(73) не понял )
|
|||
76
volfy
11.11.13
✎
22:14
|
Всёёёёёёё.... Отправил короче... Психанул. =) Будь что будет.
|
|||
77
volfy
11.11.13
✎
22:14
|
Запрос = Новый Запрос("ВЫБРАТЬ РАЗЛИЧНЫЕ
| РеализацияТоваровУслугТовары.Номенклатура |ПОМЕСТИТЬ ВТ_НоменклатураДокументаШапки |ИЗ | Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары |ГДЕ | РеализацияТоваровУслугТовары.Ссылка = &СсылкаШапки |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | РеализацияТоваровУслугТовары.Ссылка КАК Документ, | КОЛИЧЕСТВО(РАЗЛИЧНЫЕ РеализацияТоваровУслугТовары.Номенклатура) КАК ЧислоСовпадений |ИЗ | Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_НоменклатураДокументаШапки КАК ВТ_НоменклатураДокументаШапки | ПО РеализацияТоваровУслугТовары.Номенклатура = ВТ_НоменклатураДокументаШапки.Номенклатура |ГДЕ | РеализацияТоваровУслугТовары.Ссылка.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания | И НЕ РеализацияТоваровУслугТовары.Ссылка = &СсылкаШапки | |СГРУППИРОВАТЬ ПО | РеализацияТоваровУслугТовары.Ссылка | |ИМЕЮЩИЕ | КОЛИЧЕСТВО(РАЗЛИЧНЫЕ РеализацияТоваровУслугТовары.Номенклатура) >= &МинимумСовпадений"); Запрос.УстановитьПараметр("МинимумСовпадений", МинимумСовпадений); Запрос.УстановитьПараметр("СсылкаШапки", Документ); Запрос.УстановитьПараметр("ДатаНачала", ДатаНач); Запрос.УстановитьПараметр("ДатаОкончания", ?(ДатаКон = Дата('00010101000000'), КонецДня(ТекущаяДата()), КонецДня(ДатаКон))); ДокументыТЗ = Запрос.Выполнить().Выгрузить(); |
|||
78
volfy
11.11.13
✎
22:15
|
Всё выглядит вот так, кому то может быть и пригодится. Может найдут ошибки =) а если они и увидят это то не обидно =) ОПЫТ: - Любыми пулями, ценнее всего =) (смекалка везде приветствуется)
|
|||
79
extrim-style
11.11.13
✎
22:15
|
(76) только не говори, что я виноват)
|
|||
80
volfy
11.11.13
✎
22:16
|
(79) Ну теперь скажи что не так?)
|
|||
81
volfy
11.11.13
✎
22:17
|
Самое удивительное что после часа разборок, код сократился только на последнюю виртуальную таблицу ))
|
|||
82
ИсчадиеADO
11.11.13
✎
22:18
|
(76) выбрать разрешенные из (60) забыл. Это если применяется ограничение по записям на уровне прав. Т.е. часть расходников видны, часть нет
|
|||
83
К_Дач
11.11.13
✎
22:21
|
(77) не читаешь, что тебе говорят (((
|
|||
84
volfy
11.11.13
✎
22:23
|
Простите =((( Ну я добавлю при звонке... ну дя я лаааах.... Кознить себя - нельзя помиловать
|
|||
85
volfy
11.11.13
✎
22:23
|
а разрешенные - влияет только при включенном RLS ?
|
|||
86
ИсчадиеADO
11.11.13
✎
22:27
|
(85) читай справку
"разрешенные" грит системе, что если в результате запроса выберутся объекты, которые пользователю не должны быть видны, то они просто не включатся в результат запроса. Без разрешенные запрос вывалится с ошибкой |
|||
87
volfy
11.11.13
✎
22:33
|
Понял)
|
|||
88
ivanovnm
11.11.13
✎
22:36
|
а зачем временные таблицы? SQL свои таблички и так кеширует
|
|||
89
ivanovnm
11.11.13
✎
22:36
|
ГДЕ в ПО засунь
|
|||
90
Сниф
11.11.13
✎
22:58
|
(46) подаван - вторая ступень ученика Волшебника
"– А много прихвостней становится подаванами? – Примерно каждый третий. – А подаванов приспешниками? – Каждый седьмой. – Волшебник улыбнулся." (С) Сергей Лукьяненко "Недотепа" |
|||
91
volfy
11.11.13
✎
22:58
|
(89) да верное замечание... секцию где - исходя из сегодняшнего опыта - следует использовать в КРААААЙНИХ случая и очень редко )
|
|||
92
volfy
11.11.13
✎
22:59
|
(90) =) Почитаю в дороге Лукьяненко ) зацепило
|
|||
93
sanja26
11.11.13
✎
23:41
|
(77) левое соединение быстрее отработает
|
|||
94
Аденэсниг
11.11.13
✎
23:44
|
(0) ну как отправил, чтос казали?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |