|
Удаление элементов справочников в транзакции.. реально ли быстрее? | ☑ | ||
---|---|---|---|---|
0
nodrama
15.08.22
✎
15:08
|
Доброго времени суток. Готовлюсь к удалению не нужной номенклатуры, тестю разные варианты ;)
Код простой. запросом выбираю номенклатуру. Далее тестирую удаление ее, с транзакцией и без. Может я делаю что то не так но разницу я не увидел.. В общем запросом выбрал первые 200. ради теста. Первый раз удалил эти 200 с транзакцией . Второй раз удалил эти 200 без нее. просто подряд. В итоге разница между этими двумя разами, было всего в 1.5 секунды, в пользу варианта с транзакцией. Во втором запуске разницы вообще не было.. милисекунды какие-то. Или на такой мелочи как 200 элементов справочника, он ни чего и не покажет? |
|||
102
nodrama
15.08.22
✎
17:45
|
(99) правильно товары на складах. Только нужно проверить не остатки а были ли движения. Так это мне сюквелом ещё надо проверить доки была ли эта номенклатура ). Так я совсем запутаюсь
|
|||
103
nodrama
15.08.22
✎
17:46
|
(97) монопольный попробую. Уже убежал с работы. Но помню про него.
|
|||
104
Ёпрст
15.08.22
✎
17:46
|
(102) в чем запутаешься ? в запросе к одной табличке регистра ?
|
|||
105
Ёпрст
15.08.22
✎
17:47
|
А можно еще тупее, удалить по min(_idref)
|
|||
106
Ёпрст
15.08.22
✎
17:48
|
Точнее, минимум оставить, а удалить максимум с ссылки
|
|||
107
Kassern
15.08.22
✎
17:48
|
(104) Если говорить о номенклатуре, то там полно регистров. Это и цены номенклатуры, и Аналитики различные, штрихкоды, сегменты и т.д.
|
|||
108
DTX 4th
15.08.22
✎
17:48
|
(100) Да еп..
Проверяй в 1С. Удаляй в скуле. |
|||
109
Kassern
15.08.22
✎
17:49
|
(108) можно из 1с выплюнуть тот же csv файл с кодами товаров для удаления. А потом уже его прочитать во временную таблицу, ее к номенклатуре прикрутить и грохнуть данные.
|
|||
110
Kassern
15.08.22
✎
17:50
|
Самый идеальный вариант, это пометить на удаление именно те позиции, которые 100% будут удалены и ссылок не имеют. Тогда простой запрос с отбором на пометку удаления
|
|||
111
DTX 4th
15.08.22
✎
17:51
|
(109) Это было сказано еще в (9)
Тут, видимо, проблема гораздо глубже) Да даже временная таблица не нужна. Я прям строки через запятую передаю в подобных случаях) |
|||
112
Kassern
15.08.22
✎
17:54
|
(111) пробовали так для 1кк позиций и более?
|
|||
113
nodrama
15.08.22
✎
17:57
|
(110) так блин. В том то и проблема. Что бы пометить на удаление такое же количество номенклатуры. Это столько же времени. Пометка на удаление.
Записать. Делается не быстреее. Чем удалить () |
|||
114
yopQua
15.08.22
✎
17:58
|
все не читал, но судя по названию темы, вы все таки смогли успешно перенести 4.5 млн позиций в базу из прошлой темы про ускорение загрузки?)
|
|||
115
DTX 4th
15.08.22
✎
18:00
|
(112) Разбить на десять запросов?
Ну короче, это уже дело техники. Я не знаю, как из csv во временную табличку в скуле загрузить. Как? |
|||
116
Kassern
15.08.22
✎
18:01
|
(115) с помощью OPENROWSET попробовать https://docs.microsoft.com/ru-ru/sql/t-sql/functions/openrowset-transact-sql?view=sql-server-ver15
|
|||
117
yopQua
15.08.22
✎
18:02
|
(115) ТСКЛем наверно
а вобще если есть возможность сделать нужный отбор на скл, то это и использовать |
|||
118
DTX 4th
15.08.22
✎
18:03
|
(116) Спасибо. Надеюсь, не пригодится :)
Да, конечно, если файл большой, то лучше читать его инструментами, которые предназначены для этого. |
|||
119
nodrama
15.08.22
✎
18:06
|
(114) да загрузилось норм. Теперь все в нужных папках и категориях.)
|
|||
120
nodrama
15.08.22
✎
18:07
|
А в скуле в таблицах есть поле какое то по которому можно понять что данная позиция создана позже чем другая. И следовательно ее нужно удалить
|
|||
121
СеменовСемен
15.08.22
✎
18:12
|
(120) по коду можно ориентироваться, в крайнем случае по гуиду
|
|||
122
yopQua
15.08.22
✎
18:13
|
(120) есть _Version например или ссылка Ref, но они шестнадцатиричные, сравнивать на больше меньше думаю можно, муторно правда
|
|||
123
СеменовСемен
15.08.22
✎
18:14
|
(122) кому муторно?
|
|||
124
yopQua
15.08.22
✎
18:14
|
хотя..
|
|||
125
nodrama
15.08.22
✎
18:15
|
(121) код. Не число. А строка. Это что бы автоматом сравнивать коды на больше меньше. Надо их сделать числом. А там буковки в начале есть. Надо удалять. Это ещё плюс к мароке и времени
|
|||
126
СеменовСемен
15.08.22
✎
18:15
|
(125) с каких пор нельзя сравнивать строки?
|
|||
127
nodrama
15.08.22
✎
18:16
|
Ладно завтра в тестовой базе попробую через скуль что нибудь сделать. Будем на связи ) всем спасибо
|
|||
128
yopQua
15.08.22
✎
18:16
|
(125) ну ссылку можно взять, стремно показалось, что они увеличиваются всквозную по базе, а не отдельному справочнику, _Version вроде по справочнику
|
|||
129
yopQua
15.08.22
✎
18:17
|
(126) н де, да сравнивать то можно, только результат какой будет?
|
|||
130
nodrama
15.08.22
✎
18:17
|
(126) сравнивать строки с буквами на больше меньше ?)
|
|||
131
yopQua
15.08.22
✎
18:18
|
(130) да! это же один С, она все может **мнение буха
|
|||
132
nodrama
15.08.22
✎
18:19
|
(131) это да. Не напоминай. Это точно так же. Ну ты же программист выбери мне пылесос
|
|||
133
DTX 4th
15.08.22
✎
18:21
|
(120) Нет. Все те же поля, что и в предприятии +/-
|
|||
134
yopQua
15.08.22
✎
18:22
|
(132) не поверишь, у меня с пылесосом так и было! лет много назад, правда я одмином был, но один хрен логика железная)
|
|||
135
vis_tmp
15.08.22
✎
19:12
|
(8) Я проверял - быстрее.
|
|||
136
Bigbro
16.08.22
✎
04:33
|
если ссылок нет грохай в скуле и все.
|
|||
137
Bigbro
16.08.22
✎
04:35
|
(130) ты реально не знаешь как выполняется сравнение строк или прикалываешься?)
|
|||
138
Salimbek
16.08.22
✎
10:27
|
(4) "С чего вдруг запись в транзакции должна быть быстрее?"
С того, что вместо Создаем Запись - Пишем на Диск - Создаем Запись - Пишем на Диск - Создаем Запись - Пишем на Диск - ... Переходим к Создаем Запись - Создаем Запись - Создаем Запись - Создаем Запись - Создаем Запись - Создаем Запись - Пишем большой блок на Диск - ... |
|||
139
nodrama
16.08.22
✎
10:29
|
Тестирую удаление на 100к позиций из папки ном в иерархии.. не суть.
запросом, выбрал нужную ном из нужных папок. получил 102к количества. Далее со всеми возможными штуками обменданными.загрузка истина и транзакцией по 2к штук (ради теста). поставил удаление. поставил ушел курить... прихожу через минут 5-10. удалилась давольно быстро. Открываю справочник, эту папку во втором окне смотрю и да пусто... открываю первое окно с обработкой удаление.. а оно еще висит. подумал что за бред. папка пустая а обработка все висит. Открываю журнал регистрации. и вижу строчки Данные.Удаление и следователньо позиция номенклатуры.. то есть грубо говоря еще удаляет. То есть получается транзакция у меня по 2к строк. в номенклатуре в папке уже "0" то есть я их уже не вижу. Но обработка работает и до сих пор в журнал записывается удаление. Причем транзакция по "пакетам" работает я ее тестил то есть фиксирует по количеству указанному |
|||
140
nodrama
16.08.22
✎
10:37
|
Если он не удалил еще всю номенклатуру, почему тогда в папке ее уже нет? ни глазами, "ни запросом"
Если порция транзакции 2к, то почему до сих пор в журнал регистрации пишется удаление и обработка все еще работает. |
|||
141
Salimbek
16.08.22
✎
11:58
|
(140) А фиг знает, что и откуда там ТВОЯ программа удаляет. Может пытается удалить то, что уже удалено, падает с ошибкой, а ты в обработке исключений заставляешь ее выполнить эту операцию еще раз.
|
|||
142
nodrama
16.08.22
✎
12:33
|
Так ладно с удалением понятно удаляет более менее норм 100к позиций минут за 15.. приемлемо...
А как оптимизировать теперь проверку на движения... Есть запрос, который отбирает дубли по артиклу. и выводит. список дублей всего их 2кк, это и правильная позиция и дубль. Дубли надо удалять только из определенного родителя. следовательно остается 1кк дублей истенных. Ноооо по этим 1кк реальных дублей, могут быть движения (поступление товаров как минимум). следовательно такие удалять не стоит)) ибо объект не найден нам не нужен. Следовательно 1кк дублей, нужно проверить как минимум по регистру ТоварыНаСкладах Как продуктивнее это сделать? там же в запросе или при удалении каждую позицию проверять по регистру накопления? |
|||
143
Bigbro
16.08.22
✎
12:34
|
поиск ссылок работает почти с одинаковой скоростью для 1 элемента и для 10к элементов.
|
|||
144
nodrama
16.08.22
✎
12:36
|
(143) ну то есть я запросом отбираю дубли которые считаю надо грохать. остается 1кк
и далее при удалении ищу на каждый дубль ссылку? если нет то грохю |
|||
145
СеменовСемен
16.08.22
✎
12:40
|
(138) скуль работает не так
Гугли про журнал транзакций и чекпойнт |
|||
146
Bigbro
16.08.22
✎
12:43
|
я не знаю как отработает поиск ссылок если ему передать массив 1кк элементов. может повиснет насмерть.
при таких объемах лучше самому искать наверное. |
|||
147
nodrama
16.08.22
✎
12:48
|
(146) Как ты предлагаешь мне обработать 1кк номенклатуры на поиск ссылок руками ?)
может эти 1кк номенклатуры програть в РН товары на складах (за определенный период). типо если нет значит удаляепм если есть ну значит есть |
|||
148
Kassern
16.08.22
✎
12:49
|
(147) а что, на другие регистры пофиг?) Если это УТ11, то я бы ключи аналитики смотрел в первую очередь и иже с ними.
|
|||
149
Bigbro
16.08.22
✎
12:52
|
(147) самому имеется в виду не использовать ПоискСсылок() от 1с
а писать свои обработки которые будут как то частями проверять и лопатить не по всей базе а только там где ссылки могут быть. |
|||
150
nodrama
16.08.22
✎
12:52
|
(148) так у нас там ни чего нет если не было ни каких поступлений на склад. значит нет ни картинки, ни установки цен, ни каких то файлов, ни чего.
|
|||
151
Bigbro
16.08.22
✎
12:53
|
ну и опять же миллионы записей наводят на мысли делать все что надо сделать напрямую в скуле.
это может быть на пару порядков быстрее. |
|||
152
nodrama
16.08.22
✎
12:54
|
(151) я так и не понял как в скуле проверять на движение допустим товаров на складах
отобрать в скуле дубли по артиклу это одно. а проверить их потом по РН это уже другое) |
|||
153
СеменовСемен
16.08.22
✎
13:20
|
(152) делал поиск неиспользуемых 1 запросом.
работает быстрее чем найти по ссылкам https://drive.google.com/file/d/1CBzki0Hqn2GyxgyXvf7IxmEcf38XYGyA/view?usp=sharing |
|||
154
nodrama
16.08.22
✎
13:55
|
(153) благодарю
Кстати интересно а как "количество" порций в транзакции влияет на время?? на малых количествах 10-100-1000... ни как не влияет.. то есть если записей 1000 то хоть разбй их по 10 хоть по 100. хоть сразу в одну транзакцию.. время не меняется (ну может мили секунды). А если речь идет о 1кк (протестировать на 1кк нет возможности). если 1кк разбивать допустим по 10к порций или по 30к порций.. будет ли какая-то разница?) |
|||
155
TormozIT
гуру
16.08.22
✎
14:08
|
(153) Забыл про общие реквизиты, системные поля, системные табличные части, регистры расчета и бухгалтерии. Отчасти поэтому оно и работает быстрее универсального поиска.
|
|||
156
Salimbek
16.08.22
✎
14:10
|
(145) А х.з., вот тут транзакции ускорили запись на 25% https://курсы-по-1с.рф/news/2017-03-27-four-methods-of-write-acceleration/#recording-in-transaction-not-used
|
|||
157
nodrama
16.08.22
✎
14:10
|
Вопрос...
Если началась транзакци... потом закрылась 1с.. не дойдя до завершитьтранзакцию или отменитьтранзакцию То она потом сама вернет все в зад или надо что то делать? |
|||
158
Kassern
16.08.22
✎
14:11
|
(157) вернет все в зад, так как данные не записались в таблицу.
|
|||
159
Kassern
16.08.22
✎
14:12
|
это как документ, вы можете в нем править что угодно, но пока вы его не запишите (зафиксируете транзакцию) данные в базе не обновятся.
|
|||
160
nodrama
16.08.22
✎
14:13
|
(159) А если сервер ребутнулся еще в этот момент, то все равно вернет или уже нет?
|
|||
161
nodrama
16.08.22
✎
14:15
|
я сделал пакет по 50к..
запустил... пошла транзакция... до 50к она не дошла поэтому фиксации не было. сначала закрылась 1с... че то там админ химичет с сервером... я открыл заного. запустил обработку... Но выскачила ошибка.. транзакции не помню дословно но что то из серии не возможно начать транзакцию или блокировка не помню.. видимо потому что та еще шла. А потом сервер вообще ребутнулся |
|||
162
Kassern
16.08.22
✎
14:18
|
(160) вот вы правите документ, указывает организацию и контрагента и в этот момент у вас вырубается комп. Вопрос, документ будет записан в базу? Вот тут так же
|
|||
164
Ёпрст
16.08.22
✎
14:37
|
(152) ну как маленький, на вот, удаляй сколько влезет:
delete from _Reference12345 --подставишь свой справочник where _IDRRef in ( select max(_Reference12345._IDRRef) from _Reference12345 where Fld12345<>'' group by _Description,Fld12345 --подставишь своё поле с артикулом where Fld12345<>'' having COUNT (_IDRRef)>1) |
|||
165
Ёпрст
16.08.22
✎
14:42
|
в group by еще и ,_Folder воткнуть, мало ли, ты там налепил групп с одинаковым наименованием и артикулом
|
|||
166
uno-group
16.08.22
✎
15:55
|
(113) может просто пометить скл все дубли на удаление. потом средствами 1с удалить что удалиться и скл снять пометки на удаление.
Мололи может товар только набрали. заказывают. пришел на склад и т.п. |
|||
167
uno-group
16.08.22
✎
15:57
|
И вопрос а точно нужно искать дубли артиклей и наименований или можно все товары пометить отменить пометку для созданных за последние несколько дней и средствами 1с грохнуть все что негде не используется. Точно нужно реле которое хотели заказать но так никогда и не заказывали и не продавали даже если у него нет дубля.
|
|||
168
nodrama
16.08.22
✎
16:13
|
(167) так база новая. в которую сливатся номекнлатура. из прайсов и сторонней базы (где она правильная по группам). далее выверенная правильная номенклатура уже пойдет на сайт
Откуда они знают будут заказы или не будут) это не повод не выкладывать на сайт позиции, там сроки доставки указываются с учетом покупки у китая) |
|||
169
nodrama
16.08.22
✎
16:16
|
в общем я уже поставил на удаление 1кк номенклатуры. посмотрим вроде 200к уже удалилось. думаю за сегодня пройдет)
|
|||
170
nodrama
16.08.22
✎
16:26
|
Нормельное идет... когда писал 169 соощение было 1.020 миллиона.
Сейчас уже 920 тысяч. ;) |
|||
171
xkanix
16.08.22
✎
17:02
|
(4) > С чего вдруг запись в транзакции должна быть быстрее?
Платформа на commit'е выполняет некоторые действия. Если писать X объектов каждый в своей транзакции - эти действия будут выполнены X раз, а если в одной - один. |
|||
172
СеменовСемен
16.08.22
✎
17:34
|
(171) а подробней? что за действия?
|
|||
173
valerivp
16.08.22
✎
22:21
|
(0) в файловой базе в транзакции сильно быстрее операции выполняются. ибо только в ОЗУ
в серверной - транзакция не влияет на скорость |
|||
174
nodrama
17.08.22
✎
14:09
|
(173) у нас серверная.
Не влияет на скорость, но хотя бы не уменьшает ее ?) |
|||
175
СеменовСемен
17.08.22
✎
14:11
|
(174) чутка уменьшает ибо блокировочки то держатся до конца трпнзакции
|
|||
176
nodrama
17.08.22
✎
14:13
|
(175) (173) Получается сколько людей столько и мнений... так как в двух темах есть люди которые "за" транзакции...
но на сколько я понял они аппилируют во сновном... темой... из серии записи на диск.. можно 10к файлов, записывать на диск 10к раз А можно эти 10к файлов, типо объеденить в 1 большой и записать 1 раз. И в случаи с виндой это быстрее... Банально если разархивировать 10к маленьких файлов или 1 файл такого же объема как 10к маленьких... то 1 файл разахивируется быстрее )) я образно . хотя объем у них одинаковый |
|||
177
nodrama
17.08.22
✎
14:19
|
Ладно вернемся к нашим баранам...
Собственно тесты продолжаются ;) сейчас запрос готов. я там учел все что мне надо. и конкретные папки, и заполненные артикулы ну и прочие штуки которые нужны... Конечный результат запроса //тут еще запрос, но он не важен отбираю дубли. |ВЫБРАТЬ | Дубли.Артикул КАК Артикул, | Дубли.Ссылка КАК Ссылка |ИЗ | Дубли КАК Дубли"; Следовательно получаю список дублей(ссылок номенклатуры) которые реально дубли. Осталось эти позиции проверить по РН ТоварыНаСкладахОбороты, то есть если эта номенклатура фигурировала там то следовательно пропускаем ее. Я вот думаю, может это дописать как то в конечный запрос. или засунуть результат запроса в массив и сделать следующий запрос по РН этому со списком из первого запроса думаю перебирать в цикле каждую из позиций дубля, на наличия ее в РН будет явно дольше |
|||
178
СеменовСемен
17.08.22
✎
14:20
|
(176) тесты все решат. Но никто их не делает
|
|||
179
СеменовСемен
17.08.22
✎
14:22
|
(176) мс скуль - это вообще как ос внутри ос. Там и управление памятью свое и диском
|
|||
180
nodrama
17.08.22
✎
15:18
|
Конечно с проверкой номенклатуры по РН товаров, в разы дольше работает.... видимо если проверку по РН сделать в запросе в том же где дубли бдует быстрее
|
|||
181
СеменовСемен
17.08.22
✎
15:19
|
(180) ну так и сделай в конце
где НЕ ссылка в (выбрать из регистра) |
|||
182
nodrama
17.08.22
✎
15:31
|
вроде сделал. сейчас посмотрю на сколько долго такой запрос будет по отношению к запросу без проверки по регистру.
а то может и смысла нет) |
|||
183
nodrama
17.08.22
✎
15:44
|
Короче
из 1.122к позиций 1120096 1120439 в регистра меньше 300 штук. Запрос на проверку с регистром и без. отраатывает практически одинаковое количество времени разница вообще не значительная ;) я так понимаю если в первом варианте количества позиций меньше ) значит проверку по регистру в запросе я сделал верно))) |
|||
184
nodrama
17.08.22
✎
15:46
|
Я так добавил
ГДЕ НЕ Дубли.Ссылка в (ВЫБРАТЬ | ТоварыНаСкладахОбороты.Номенклатура КАК Номенклатура |ИЗ | РегистрНакопления.ТоварыНаСкладах.Обороты(&Период1, &Период2, Авто, ) КАК ТоварыНаСкладахОбороты) |
|||
185
uno-group
17.08.22
✎
16:31
|
Реально думаешь что кто то набил миллион левых записей и потом из них юзал только 300. Есть смысл так сайт перегружать.
|
|||
186
uno-group
17.08.22
✎
16:32
|
проверь средствами 1с несколько позиций может они еще где то задействованы кроме товарынаскладахобороты. и ты просто выбрал не верный критерий того что позиция используеться
|
|||
187
nodrama
17.08.22
✎
16:34
|
(185) Ни кто не набивал позиции. Номенклатура сливалась из двух других баз + прайсы поставщиков.
Ранее и я так понимаю не очень "удачно".. Из 5 миллионов номенклатуры, по артикулам+ наименованию получился 1 миллион дублей. А эти 300 позиций которые "УЖЕ" используются... в полне реально. Так как в было всего штук 20 поступлений и штук 10 реализаций. Организация новая |
|||
188
nodrama
17.08.22
✎
16:43
|
(186) Смысл в том что это все импорт и сроки доставки не 1 день ессесно и не 2-а. и на складе в 90% случаев товара нет. 50% юр лица 50% физ лица..
для физ лиц и сделали сайт. выкладывать туда только 300 товаров со склада нет смысла, потому что товар специфичный и кому надо готов ждать и неделю и две и три. так как цена дешевле чем на сайтах у кого есть в наличии грубо говоря. Следовательно хотят сделать норм номенклатуру и вывалить на сайт для возможности оформлять заказ.. поэтому и такая ситуация как то так |
|||
189
Salimbek
17.08.22
✎
17:28
|
(188) Тогда я бы вам рекомендовал смотреть ссылки не только в Товародвижении, а еще и в Заказах, а то покупатель Заказ сделает, товар еще не приедет, а вы ссылку на товар уже грохнули. Потом тяжко будет вспоминать, что и кому должны привезти.
|
|||
190
nodrama
17.08.22
✎
17:32
|
(189) так заказов с сайта еще нет. сайт оффлайн
|
|||
191
nodrama
17.08.22
✎
17:33
|
сейчас только поступление реализация и заказы. введеные руками в базе от юр лиц.
в общем сложности документов 100 наверное вместе. при этом все заказы закрыты ;) |
|||
192
nodrama
17.08.22
✎
17:33
|
а так то понятна логика ваша
|
|||
193
nodrama
17.08.22
✎
17:36
|
Ну а установку цен я и не проверял. там реализована загрузку и из экселя и как угодно там ни кто руками не заполняет. если будут объекты не найдены. загрузят еще раз. на эти 300 позиций)
|
|||
194
nodrama
17.08.22
✎
17:36
|
на сайте все равно 0 товара в данный момент и сайт офф
|
|||
195
Фантазер
17.08.22
✎
17:50
|
А таки удаление через свой код быстрее чем стандартное Удаление из программы?
|
|||
196
СеменовСемен
17.08.22
✎
17:59
|
(195) что за "Удаление из программы"
|
|||
197
Фантазер
17.08.22
✎
18:09
|
(196) Стандартная функция из Обслуживания - Удаление помеченных объектов.
|
|||
198
СеменовСемен
17.08.22
✎
18:53
|
(197) так она же все ссылки ищет.
Оно никак не может быстрее 1 запроса работать. Ибо все найденные сслыки со скуля возвращаются |
|||
199
Shur1cIT
18.08.22
✎
09:06
|
(0) если бы семерка былабы там действительно быстрее в транзакции
|
|||
200
formista2000
18.08.22
✎
09:38
|
200!
|
|||
201
nodrama
18.08.22
✎
10:03
|
(197)
Запрос на дубли (с отборами нружных папок в иерархии) со сравнением артикла и наименование далее с проверкой на вхождение их в РН товары на складах Все это в одном запросе Далее результат.выгрузить И далее в транзакции пакетами по 50к штук Удалил 1.120.000 позиций, за пол дня. Не так уж и плохо. "без Монопольного режима, но в базе был 1 человек который делал отгрузочные новые доки для контрагентов" А стандартная функция удаление помеченны объектов это в любом случаи дольше. Так как сначала нужно будет провести все те же манипуляции выше, только вместо удалить().. будет пометканаудаление.истина , записать(). то есть нужно будет 1кк номенклатуры прогнать, пометить и записать А потом еще запустить стандартное удаление. которое будет проверять на ссылки (даже если их по факту нет) и далее еще удалять ) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |