|
Обход группировками, затык | ☑ | ||
---|---|---|---|---|
0
Дурындина
21.03.14
✎
16:24
|
у меня такая головная боль, помогите! Есть некий документ, в реквизитах номенклатура и количество! В табл части - техоперации обработки данной номенклатуры. Нужно вывести последовательно - номенклатуру, все документы, кот. относятся к ней с количеством по документу, и соответственно на каждый документ - операции.
Я делаю так: Макет = ПолучитьМакет("Макет"); // очищаем табличный документ ТабДок= Новый ТабличныйДокумент; ТабДок.Очистить(); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ЗаданиеОперации.Ссылка.Номер КАК Номер, | ЗаданиеОперации.Ссылка.Номенклатура КАК Номенклатура, | ЗаданиеОперации.Ссылка.Количество КАК Количество |ИЗ | Документ.Задание.Операции КАК ЗаданиеОперации | |СГРУППИРОВАТЬ ПО | ЗаданиеОперации.Ссылка.Номенклатура, | ЗаданиеОперации.Ссылка.Номер, | ЗаданиеОперации.Ссылка.Количество |ИТОГИ | СУММА(Количество) |ПО | Номенклатура"; ОбластьНоменклатура = Макет.ПолучитьОбласть("Номенклатура"); ОбластьНомер = Макет.ПолучитьОбласть("Номер"); ОбластьОперация = Макет.ПолучитьОбласть("Операция"); Выборка = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока Выборка.Следующий() Цикл ОбластьНоменклатура.Параметры.Номенклатура=Выборка.Номенклатура; ТабДок.Вывести(ОбластьНоменклатура); Выборка2=Выборка.Выбрать(); Пока Выборка2.Следующий() Цикл ОбластьНомер.Параметры.Номер=Выборка2.Номер; ОбластьНомер.Параметры.Количество=Выборка2.Количество; ТабДок.Вывести(ОбластьНомер); КонецЦикла; КонецЦикла; ТабДок.ОриентацияСтраницы = ОриентацияСтраницы.Портрет; ТабДок.Автомасштаб = Истина; ТабДок.Показать(); Получаю макет: А хочу под каждым номером видеть соответствующие операции документу, если пытаюсь добавить третий уровень группировки в обходе, то количество не правильно выводится, как быть? Подскажите. |
|||
1
kumena
21.03.14
✎
16:47
|
какой третий уровень?
|ИТОГИ | |ПО | Номенклатура"; это итоговая группировка, под ней у тебя детальная. если надо еще группировки дописывай к номенклатуре, и обходи по ней. |
|||
2
Дурындина
24.03.14
✎
00:09
|
Если добавляю тертий уровень группировки, и итоги, то выводится не првильно количество, почем?
|
|||
3
Дурындина
24.03.14
✎
00:09
|
я делаю так :
ТабДок= Новый ТабличныйДокумент; ТабДок.Очистить(); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ЗаданиеОперации.Ссылка.Номенклатура КАК Номенклатура, | ЗаданиеОперации.Ссылка КАК Ссылка, | ЗаданиеОперации.Ссылка.КолВыданных КАК КолВыданных, | ЗаданиеОперации.ТехОперация |ИЗ | Документ.Задание.Операции КАК ЗаданиеОперации |ИТОГИ | СУММА(КолВыданных) |ПО | Номенклатура, | Ссылка" ; Запрос.УстановитьПараметр("Подразделение", Подразделение); ОбластьНоменклатура = Макет.ПолучитьОбласть("Номенклатура"); ОбластьНомер = Макет.ПолучитьОбласть("Номер"); ОбластьОперация = Макет.ПолучитьОбласть("Операция"); ОбластьШапка = Макет.ПолучитьОбласть("Шапка"); ТабДок.Вывести(ОбластьШапка); Выборка = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока Выборка.Следующий() Цикл ОбластьНоменклатура.Параметры.Номенклатура=Выборка.Номенклатура; ОбластьНоменклатура.Параметры.Кол=Выборка.КолВыданных; ТабДок.Вывести(ОбластьНоменклатура); Выборка2=Выборка.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока Выборка2.Следующий() Цикл ОбластьНомер.Параметры.Номер=Выборка2.Ссылка.Номер; ОбластьНомер.Параметры.Количество=Выборка2.КолВыданных; ТабДок.Вывести(ОбластьНомер); Выборка3=Выборка2.Выбрать(); Пока Выборка3.Следующий() Цикл ОбластьОперация.Параметры.Операция=Выборка3.ТехОперация ; ТабДок.Вывести(ОбластьОперация); КонецЦикла; КонецЦикла; КонецЦикла; |
|||
4
Дурындина
24.03.14
✎
00:10
|
Количество номенклатуры удваивается,! почему?
|
|||
5
fgaabbb
24.03.14
✎
04:29
|
потому что ссылка это тоже номенклатура =)
|
|||
6
ИС-2
naïve
24.03.14
✎
07:53
|
можно посмотреть что получается в каждом случае с помощью или заппросника или запрос.выполнить().выгрузить()
|
|||
7
Дурындина
24.03.14
✎
07:54
|
а как быть в такой ситуации? как выводить операции под каждым номером документа? (под ссылкой)
|
|||
8
ИС-2
naïve
24.03.14
✎
07:59
|
(7) сделать на СКД - быстрее и проще
|
|||
9
ИС-2
naïve
24.03.14
✎
08:00
|
если добавляешь еще 1 группировку, то
Выборка2 = Выборка.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); |
|||
10
Дурындина
24.03.14
✎
08:00
|
в скд та же фигня, и мне нужно все равно выводить на печать, в печатной форме
|
|||
11
Дурындина
24.03.14
✎
08:01
|
ИС-2, это понятно, у меня так и есть
|
|||
12
ИС-2
naïve
24.03.14
✎
08:12
|
что значит неправильно? В запросе нет ни какой операции. Да и группировка такая излишняя или ошибочная - количество должно быть в суммируемых полях, а не в группировке
Пример с принтсрином в студию :) |
|||
13
Дурындина
24.03.14
✎
08:21
|
стесняюсь спросить а как сюда крепить изображение??)))
|
|||
14
Любопытная
24.03.14
✎
08:21
|
(13)никак. Выкладываешь в файло-помойку, сюда ссылку
|
|||
15
Дурындина
24.03.14
✎
08:23
|
Хотя и так не сложно изобразить, должно быть так:
Молоко 80 00001 50 варка паковка 00002 30 варка паковка сыр 40 варка резка паковка |
|||
16
Дурындина
24.03.14
✎
08:30
|
при этом есть документ задание - в реквизитах номенклатура и количество!!! а в табл части - операции!
|
|||
17
Дурындина
24.03.14
✎
08:31
|
а выводить нужно так - номенклатура, потом все номера документов, на каждый номер документа соответствующие операции
|
|||
18
ИС-2
naïve
24.03.14
✎
08:37
|
(15) сделать вложенный запрос, в котором будет вычисляться сумма "Количество" по группировке Номенлатура и соединить его с основной таблицей.
Но все должно быть проще... |
|||
19
Дурындина
24.03.14
✎
08:53
|
а можно примерно набросать, почему то примерно не представляю себе
|
|||
20
ИС-2
naïve
24.03.14
✎
09:35
|
номенклатура должна браться из шапки?
операция из табличной части? |
|||
21
Дурындина
24.03.14
✎
09:40
|
да!все так!
|
|||
22
Дурындина
24.03.14
✎
09:40
|
и количество тоже из шапки!
|
|||
23
ИС-2
naïve
24.03.14
✎
10:28
|
сейчас запрос накидаю...
|
|||
24
Дурындина
24.03.14
✎
10:28
|
Жду"
|
|||
25
ИС-2
naïve
24.03.14
✎
10:32
|
документа у меня такого нет, поэтому делал на РТиУ
ВЫБРАТЬ РеализацияТоваровУслугТовары.Ссылка.Контрагент КАК Номенлатура, РеализацияТоваровУслугТовары.Ссылка.Номер КАК Номер, РеализацияТоваровУслугТовары.Склад КАК Операция, 0 КАК СуммаДокумента ИЗ Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары ГДЕ РеализацияТоваровУслугТовары.Ссылка.Контрагент.ГоловнойКонтрагент = &Контрагент И НАЧАЛОПЕРИОДА(РеализацияТоваровУслугТовары.Ссылка.Дата, ДЕНЬ) = &Дата ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ РАЗЛИЧНЫЕ РеализацияТоваровУслугТовары.Ссылка.Контрагент, РеализацияТоваровУслугТовары.Ссылка.Номер, РеализацияТоваровУслугТовары.Склад, РеализацияТоваровУслугТовары.Ссылка.СуммаДокумента ИЗ Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары ГДЕ РеализацияТоваровУслугТовары.Ссылка.Контрагент.ГоловнойКонтрагент = &Контрагент И НАЧАЛОПЕРИОДА(РеализацияТоваровУслугТовары.Ссылка.Дата, ДЕНЬ) = &Дата ИТОГИ СУММА(СуммаДокумента) ПО Номенлатура, Номер |
|||
26
ИС-2
naïve
24.03.14
✎
10:33
|
в первом запросе я получаю только значения, во 2-м нужное количество и они накладываются друг на друга
|
|||
27
Дурындина
24.03.14
✎
10:58
|
Переписала как
"ВЫБРАТЬ | ЗаданиеОперации.Ссылка.Номенклатура КАК Номенклатура, | ЗаданиеОперации.Ссылка КАК Ссылка, |ЗаданиеОперации.ТехОперация, | 0 КАК КолВыданных |ИЗ | Документ.Задание.Операции КАК ЗаданиеОперации | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ РАЗЛИЧНЫЕ | ЗаданиеОперации.Ссылка.Номенклатура, | ЗаданиеОперации.Ссылка, | ЗаданиеОперации.ТехОперация, | ЗаданиеОперации.Ссылка.КолВыданных |ИЗ | Документ.Задание.Операции КАК ЗаданиеОперации |ИТОГИ | СУММА(КолВыданных) |ПО | Номенклатура, | Ссылка" ; |
|||
28
Дурындина
24.03.14
✎
11:00
|
однако выводит ненправильно
примерно так молоко 001 варка паковка варка паковка 002 варка паковка варка паковка и количество запредельное! |
|||
29
ИС-2
naïve
24.03.14
✎
11:59
|
думаю из-за того, что у меня склад был одинаковый, а тут разный
|
|||
30
ИС-2
naïve
24.03.14
✎
11:59
|
ВЫБРАТЬ различные
РеализацияТоваровУслугТовары.Ссылка.Контрагент КАК Номенлатура, РеализацияТоваровУслугТовары.Ссылка.Номер КАК Номер, РеализацияТоваровУслугТовары.Склад КАК Операция, 0 КАК СуммаДокумента ИЗ Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары ГДЕ РеализацияТоваровУслугТовары.Ссылка.Контрагент.ГоловнойКонтрагент = &Контрагент И НАЧАЛОПЕРИОДА(РеализацияТоваровУслугТовары.Ссылка.Дата, ДЕНЬ) = &Дата ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ РАЗЛИЧНЫЕ РеализацияТоваровУслугТовары.Ссылка.Контрагент, РеализацияТоваровУслугТовары.Ссылка.Номер, неопределено, РеализацияТоваровУслугТовары.Ссылка.СуммаДокумента ИЗ Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары ГДЕ РеализацияТоваровУслугТовары.Ссылка.Контрагент.ГоловнойКонтрагент = &Контрагент И НАЧАЛОПЕРИОДА(РеализацияТоваровУслугТовары.Ссылка.Дата, ДЕНЬ) = &Дата ИТОГИ СУММА(СуммаДокумента) ПО Номенлатура, Номер |
|||
31
Дурындина
24.03.14
✎
12:33
|
ИС-2, Да все работает, спасибо, но какое то одно странное но
|
|||
32
cw014
24.03.14
✎
12:35
|
(30) Логично
|
|||
33
ИС-2
naïve
24.03.14
✎
12:38
|
(31) пустая строка? Ее просто исключите при выводе.
Эта задача достаточно часто встречается. Я ее решаю так. Но думаю есть более красивый способ. Я жду его от коллег... |
|||
34
cw014
24.03.14
✎
12:42
|
(33) Можно вместо пустой строки сделать null и обрамить вложенным запросом, с выборкой всего, что "НЕ ЕСТЬ NULL" (но я могу и ошибаться)
|
|||
35
Дурындина
24.03.14
✎
12:42
|
Да, именно, пустая строка!
|
|||
36
Дурындина
24.03.14
✎
12:42
|
cw014, а нука! Удивите нас!
|
|||
37
cw014
24.03.14
✎
12:57
|
Ну я ошибся, сорри
|
|||
38
ИС-2
naïve
24.03.14
✎
13:30
|
(37) проблема в том, что в любом случае у детальных записей будут ресурсы будут просуммированы и данные будут некорректны. Фактически надо сумму ставить у 1-й записи, а в остальных 0. Реализация через соеднинение будет получаться слишком сложной (найти 1 запись).
Но должно же быть нормальное решение... |
|||
39
ИС-2
naïve
24.03.14
✎
13:31
|
кстати пол надо сменить и повесить фотку - это правило форума.
Если бы была фотка, то в теме не я один работал, а весь мужской форум. Посмотри темы девушек с фотками - там куча народу :) |
|||
40
Дурындина
24.03.14
✎
14:19
|
Фотку поменяла, а никаких табунов мужиков что-то не наблюдается!)))
|
|||
41
Дурындина
24.03.14
✎
16:04
|
кстати, как в таком случае обойти в выводе эти пустые строки? :D
|
|||
42
kumena
24.03.14
✎
16:21
|
"ВЫБРАТЬ
| ЗаданиеОперации.Ссылка.Номер КАК Номер, | ЗаданиеОперации.Ссылка.Номенклатура КАК Номенклатура, | ЗаданиеОперации.Ссылка.Количество КАК Количество |ИЗ | Документ.Задание.Операции КАК ЗаданиеОперации | |СГРУППИРОВАТЬ ПО | ЗаданиеОперации.Ссылка.Номенклатура, | ЗаданиеОперации.Ссылка.Номер, | ЗаданиеОперации.Ссылка.Количество |ИТОГИ | Максимум(Количество) |ПО | Номенклатура, Номер"; первая выборка по группировке номенклатура вторая по номерам из группировки, указываешь количество третья выборка детальная, там будут операции |
|||
43
kumena
24.03.14
✎
16:23
|
вторая по номерам из группировки, указываешь количество
-> по группировке номер, +выводишь в макет количество. |
|||
44
kumena
24.03.14
✎
16:25
|
а фотка твоя?
|
|||
45
Дурындина
24.03.14
✎
16:26
|
kumena, а про детальную выборку подробнее, это интересно
|
|||
46
Дурындина
24.03.14
✎
16:28
|
а фотка то и не моя
|
|||
47
Дурындина
24.03.14
✎
16:29
|
так это понятно, а вот про операции, операции мне интересно
|
|||
48
kumena
24.03.14
✎
16:33
|
что не понятно про операции?
|
|||
49
kumena
24.03.14
✎
16:33
|
(46) жаль!!!
|
|||
50
Дурындина
24.03.14
✎
16:34
|
Как выводить то их!
|
|||
51
Дурындина
24.03.14
✎
16:35
|
а че, понравилось? Так я это, ассоциативно выбрала похожую, тока сиськи меньше, это печально конечно
|
|||
52
kumena
24.03.14
✎
16:36
|
весьма! сиськи не главное!
|
|||
53
Дурындина
24.03.14
✎
16:36
|
а что главное?
|
|||
54
kumena
24.03.14
✎
16:37
|
53 это сложный вопрос, сложней чем про группировки. пока сказать не готов )
|
|||
55
Дурындина
24.03.14
✎
16:39
|
что же вы, до 40 лет дожили, а что в жизни главное, так и не определили для себя! Ай-яй!
|
|||
56
kumena
24.03.14
✎
16:41
|
про группировки.
вобщем сделай как у тебя в 0 посте, только результат выбирай так Номенклатура = Результат.Выбрать("ОбходПоГруппировкам", Номенклатура) Номер = Номенклатура.Выбрать(Обход по группировке номер) Детальная = Номер.Выбрать(); |
|||
57
kumena
24.03.14
✎
16:41
|
55, так вот, первым делом самолеты! )))
|
|||
58
Дурындина
24.03.14
✎
16:44
|
Так я же писала
Выборка3=Выборка2.Выбрать(); Пока Выборка3.Следующий() Цикл ОбластьОперация.Параметры.Операция=Выборка3.ТехОперация ; ТабДок.Вывести(ОбластьОперация); Только где я возьму операцию для вывода? |
|||
59
kumena
24.03.14
✎
16:46
|
>>Только где я возьму операцию для вывода?
отладчиком смотреть пробовала? в переменной третьей выборки все записи детальные, т.е. есть все что выбрано "ВЫБРАТЬ | ЗаданиеОперации.Ссылка.Номер КАК Номер, | ЗаданиеОперации.Ссылка.Номенклатура КАК Номенклатура, | ЗаданиеОперации.Ссылка.Количество КАК Количество |ИЗ | Документ.Задание.Операции КАК ЗаданиеОперации | |СГРУППИРОВАТЬ ПО | ЗаданиеОперации.Ссылка.Номенклатура, | ЗаданиеОперации.Ссылка.Номер, | ЗаданиеОперации.Ссылка.Количество |
|||
60
kumena
24.03.14
✎
16:47
|
с учетом выбранных вышестоящих группировок
|
|||
61
kumena
24.03.14
✎
16:56
|
если что - пиши завтра!
|
|||
62
Дурындина
25.03.14
✎
08:42
|
хыыыы, я туплю, но не могу вывести в области нужные мне поля из третьей выборки
|
|||
63
Дурындина
25.03.14
✎
08:42
|
получается какая-то ересь
|
|||
64
kumena
25.03.14
✎
12:07
|
Документ.Задание.Операции
в этой табличной части реквизиты должны быть этой операции, вот и выбери в запрос их. третья выборка для них. |
|||
65
cw014
25.03.14
✎
12:38
|
(64) Да
(38) Вот оно красивое решение |
|||
66
Дурындина
25.03.14
✎
15:58
|
а можно кусочек кода, как выводить в детальной выборке)))
|
|||
67
Дурындина
25.03.14
✎
16:02
|
строчечку, заветную
|
|||
68
kumena
25.03.14
✎
17:24
|
"ВЫБРАТЬ
| ЗаданиеОперации.Ссылка.Номер КАК Номер, | ЗаданиеОперации.Ссылка.Номенклатура КАК Номенклатура, | ЗаданиеОперации.Ссылка.Количество КАК Количество | ,ЗаданиеОперации.ТвойРеквизитОперации |ИЗ | Документ.Задание.Операции КАК ЗаданиеОперации | |СГРУППИРОВАТЬ ПО | ЗаданиеОперации.Ссылка.Номенклатура, | ЗаданиеОперации.Ссылка.Номер, | ЗаданиеОперации.Ссылка.Количество |ИТОГИ | Максимум(Количество) |ПО | Номенклатура, Номер"; //итоговая группировка по номенклатуре из итогов Номенклатура = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Номенклатура"); Пока Номенклатура.Следующий() Цикл //выводим номенклатуру // итоговая группировка по номерам из итогов НомераДокументов = Номенклатура.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Номер"); Пока НомераДокументов.Следующий() Цикл //выводим номера (документы) //Детальная выборка Детали = НомераДокументов.Выбрать(); Пока Детали.Следующий() Цикл // выводим детальные записи, в данном случае ТвойРеквизитОперации КонецЦикла; КонецЦикла; КонецЦикла; |
|||
69
kumena
25.03.14
✎
17:24
|
фройляйн, с вас причитается! )))
|
|||
70
Дурындина
25.03.14
✎
22:28
|
kumena? А почему Максимум(Количество)? Мне нужна сумма по верхней группировке, если использовать Максимум, то да, все выводится правильно, но в итоговой группировке максимальное количество по одному из документов, но это и логично.
Выводит примерно так молоко 50 0001 30 варить парить паковать 0002 50 варить парить паковать |
|||
71
Дурындина
25.03.14
✎
22:28
|
а должно быть в номенклатуре количество 80!
|
|||
72
Дурындина
25.03.14
✎
22:30
|
так что это хорошо, но получается ка бы и не совсем, хны хны
|
|||
73
kumena
26.03.14
✎
08:25
|
лови, для совсем правильного запроса еще представления можешь выбрать.
"ВЫБРАТЬ | ЗаданиеОперации.Ссылка КАК Документ, | ЗаданиеОперации.Ссылка.Номенклатура КАК Номенклатура, | ЗаданиеОперации.Ссылка.Количество КАК Количество | ,ЗаданиеОперации.ТвойРеквизитОперации КАК Операция | |Поместить ВсеДанные |ИЗ | Документ.Задание.Операции КАК ЗаданиеОперации |; | |Выбрать | грп.Номенклатура | ,Сумма(грп.НоменклатураКоличество) КАК НоменклатураКоличество | |Поместить итНоменклатура |Из ( | Выбрать | Документ | ,Номенклатура | ,Максимум(Количество) КАК НоменклатураКоличество | Из ВсеДанные | Сгруппировать по | Документ | ,Номенклатура | ) КАК грп | |; | |Выбрать | ВсеДанные.Номенклатура | ,ВсеДанные.Документ | ,Максимум(ВсеДанные.Количество) КАК ДокументКоличество | ,Максимум(итНом.НоменклатураКоличество) КАК НоменклатураКоличество | ,ВсеДанные.Операция | |Из ВсеДанные КАК ВсеДанные | Левое соединение итНоменклатура КАК итНом | по ВсеДанные.Номенклатура = итНом.Номенклатура | |СГРУППИРОВАТЬ ПО | ВсеДанные.Номенклатура, | ВсеДанные.Документ |ИТОГИ | Максимум(ДокументКоличество) |ПО | Номенклатура, Документ"; //итоговая группировка по номенклатуре из итогов Номенклатура = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Номенклатура"); Пока Номенклатура.Следующий() Цикл //выводим номенклатуру +НоменклатураКоличество // итоговая группировка по номерам из итогов НомераДокументов = Номенклатура.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Документ"); Пока НомераДокументов.Следующий() Цикл //выводим номера (документы) + ДокументКоличество //Детальная выборка Детали = НомераДокументов.Выбрать(); Пока Детали.Следующий() Цикл // выводим детальные записи - т.е операция КонецЦикла; КонецЦикла; КонецЦикла; |
|||
74
kumena
26.03.14
✎
08:26
|
>> А почему Максимум(Количество)?
потому что сумма количества по детальным записям не должно сходиться с итоговыми группировками |
|||
75
kumena
26.03.14
✎
08:28
|
>> Мне нужна сумма по верхней группировке,
это твое пожелание не указано в 0, там другие требования , или я не заметил? >> Нужно вывести последовательно - номенклатуру, все документы, кот. относятся к ней с количеством по документу, и соответственно на каждый документ - операции. |
|||
76
kumena
26.03.14
✎
08:30
|
а блин, ошибочка
|ИТОГИ | Максимум(ДокументКоличество) добавь еще ,| Максимум(НоменклатураКоличество) |
|||
77
Дурындина
26.03.14
✎
10:21
|
kumena, спасибо, буду пробовать, что то правда замудрено как то, а в 0 посте, да про итоговое кол-во по номенклатуре не упомянула*краснеет*, но потом приводила пример как отчет должен выводится
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |