|
Неверный формат. WS-ссылки. | ☑ | ||
---|---|---|---|---|
0
AllJoke
13.07.12
✎
12:40
|
День добрый всем. Вопрос возник в следующем. По примере подключения ws-ссылок на ЦБРФ пытаюсь подрубиться к нашему тестовому веб-сервису. Разница там в расщирениях asmx(ЦБРФ) и svc(НашВебСервис). Код следующий:
СервисОхБил = WSСсылки.OhBil.СоздатьWSПрокси("http://tempuri.org/", "BizTalkServiceInstance", "WSHttpBinding_ITwoWayAsyncVoid"); ТипПараметра = СервисОхБил.ФабрикаXDTO.пакеты.получить("http://tower.ru/requestTest").Получить("Message"); Параметр1_1 = СервисОхБил.ФабрикаXDTO.создать(ТипПараметра); Параметр1_1.SecName = Пар; СервисОхБил.Operation1(Параметр1_1); //вот здесь и возникает ошибка "Неверный формат" Сам ВебСервис до боли прост - http://screencast.com/t/CNtw7ozZ В чем может быть беда? МОжет ли это в каких либо ограничениях? Платформа 8.2.14.540 |
|||
1
AllJoke
13.07.12
✎
12:41
|
http://screencast.com/t/CNtw7ozZ - вот модель веб-сервиса
|
|||
2
Serginio1
13.07.12
✎
12:48
|
Ну тебе нужно заполнить все параметры и проверить тип параметра?
А не проще тип получить через СервисОхБил.ФабрикаXDTO.Тип("http://tower.ru/requestTest","Message"); |
|||
3
AllJoke
13.07.12
✎
12:53
|
А не в курсе как заполняются составные объекты?
Например у меня в Message есть Adress, он составной (берётся из Message_Adress). Как мне его заполнить? Типа: МесАдр = СервисОхБил.ФабрикаXDTO.Тип("http://tower.ru/requestTest","Message_Adress") МесАдр.Свойство1 = "1"; МесАдр.Свойство2 = "2"; МесАдр.Свойство3 = "3"; И вот этот полученный список значений нужно запихнуть в Message.Adress. |
|||
4
Serginio1
13.07.12
✎
12:58
|
Так же как и Параметр1_1
Тип_Message_Adress=СервисОхБил.ФабрикаXDTO.Тип("http://tower.ru/requestTest","Message_Adress"); МесАдр= СервисОхБил.ФабрикаXDTO.создать(Тип_Message_Adress); |
|||
5
AllJoke
13.07.12
✎
13:01
|
(4) А подробнее можно? Вот каким макаром я делаю:
СервисОхБил = WSСсылки.OhBil.СоздатьWSПрокси("http://tempuri.org/", "BizTalkServiceInstance", "WSHttpBinding_ITwoWayAsyncVoid"); ТипПараметра_Message = СервисОхБил.ФабрикаXDTO.Тип("http://tower.ru/requestTest","Message"); ТипПараметра_Message_Adress = СервисОхБил.ФабрикаXDTO.Тип("http://tower.ru/requestTest","Message_Address"); ТипПараметра_Message_PlaceOfBirth = СервисОхБил.ФабрикаXDTO.Тип("http://tower.ru/requestTest","Message_PlaceOfBirth"); Параметр_Message = СервисОхБил.ФабрикаXDTO.создать(ТипПараметра_Message); Параметр_Message_Adress = СервисОхБил.ФабрикаXDTO.создать(ТипПараметра_Message_Adress); Параметр_Message_PlaceOfBirth = СервисОхБил.ФабрикаXDTO.создать(ТипПараметра_Message_PlaceOfBirth); Параметр_Message_Adress.Region = "РК"; Параметр_Message_Adress.RegistrationPlace = "Мор"; Параметр_Message_Adress.TypeRegistration = "Про"; Параметр_Message_PlaceOfBirth.__content = "///"; Параметр_Message_PlaceOfBirth.code = "11"; Параметр_Message.FirstName = "павел"; Параметр_Message.FathersName = "Валерьевич"; Параметр_Message.DateOfBirth = "08061983"; Параметр_Message.SNILS = "911"; Параметр_Message.Address = Параметр_Message_Adress; Параметр_Message.PlaceOfBirth = Параметр_Message_PlaceOfBirth; Параметр_Message.SecName = "смирнов"; СервисОхБил.Operation1(Параметр_Message); |
|||
6
AllJoke
13.07.12
✎
13:03
|
джае после этого "неверный формат"
|
|||
7
AllJoke
13.07.12
✎
13:07
|
кстати - типы параметров везде строковые, кроме Address и PlaceOfBirth - они составные. Но и там все "строка".
|
|||
8
Serginio1
13.07.12
✎
13:08
|
Вообще 1С плохо как то с высокой вложенностью. Уже сейчас не помню, но мучился. Если бы параметры не были заполнены то ругалсьбы на незаполненные параметры. Попробуй для интереса .__content заменить?
Или посмотреть на структуру Процедура ПоказатьОбъект(Прокси,Объект) ЗаписьХМЛ= новый ЗаписьXML; ЗаписьХМЛ.УстановитьСтроку(); Прокси.ФабрикаXDTO.записатьXML(ЗаписьХМЛ,Объект); текст=Новый ТекстовыйДокумент; Текст.УстановитьТекст(ЗаписьХМЛ.Закрыть()); Текст.Показать(); КонецПроцедуры |
|||
9
Serginio1
13.07.12
✎
13:09
|
Да и Смирнов то надо с Большой буквы. Обижаешь.
|
|||
10
Serginio1
13.07.12
✎
13:11
|
Или можешь использовать сначало простую структуру. Затем добавить составную итд. Для того что бы понять откуда ноги растут.
|
|||
11
AllJoke
13.07.12
✎
13:13
|
(10) Попробую щас структуру посмотреть. "смирнова" изменю на "Смирнов" ))
|
|||
12
Саша Питерский
13.07.12
✎
13:21
|
(5) Если указанный веб сервис в виде wsссылки загрузить в конфигурацию, то какой тип будет у параметра веб сервиса с операцией operation1?
Параметр_Message является ли типом ОбъектXDTO и совпадает ли его тип значения с типом, который указан в качестве параметра operation1? |
|||
13
AllJoke
13.07.12
✎
13:21
|
<Message xmlns="http://tower.ru/requestTest" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<FirstName>Павел</FirstName> <FathersName>Валерьевич</FathersName> <SecName>Смирнов</SecName> <DateOfBirth>08061983</DateOfBirth> <PlaceOfBirth code="11">001</PlaceOfBirth> <SNILS>911</SNILS> <Address> <Region>РК</Region> <RegistrationPlace>Мор</RegistrationPlace> <TypeRegistration>Про</TypeRegistration> </Address> </Message> |
|||
14
AllJoke
13.07.12
✎
13:22
|
(12)
тип будет у параметра веб сервиса с операцией operation1 - Тип "Message" воторое щас проверю. |
|||
15
AllJoke
13.07.12
✎
13:23
|
Параметр_Message - да, это "ОбъектXDTO"
|
|||
16
AllJoke
13.07.12
✎
13:24
|
А по поводу типа значения в Параметр_Message, так там же только свойства.
|
|||
17
Саша Питерский
13.07.12
✎
13:28
|
(16) Вот этого ответа не понял.
|
|||
18
AllJoke
13.07.12
✎
13:31
|
(17) имеется ввиду что здесь - Параметр_Message - содержатся же только свойства, т.е. не могу я посомтреть тип. А вот кстати наводящая мысль, которая пришла после вопросов:
part = СервисОхБил.ФабрикаXDTO.Создать(ТипПараметра_Message, Параметр_Message); Так выдаёт ошибку - Несоотв-ие параметров, параметр 2 |
|||
19
Саша Питерский
13.07.12
✎
13:32
|
(18) Вроде можно написать Параметр_Message.Тип()
|
|||
20
AllJoke
13.07.12
✎
13:32
|
{Обработка.Обработка1.Форма.Форма.Форма(144)}: Ошибка при вызове метода контекста (Создать)
part = СервисОхБил.ФабрикаXDTO.Создать(ТипПараметра_Message, Параметр_Message); по причине: Несоответствие типов (параметр номер '2') |
|||
21
AllJoke
13.07.12
✎
13:32
|
(19) неа.
|
|||
22
AllJoke
13.07.12
✎
13:33
|
||||
23
AllJoke
13.07.12
✎
13:33
|
можно, сорри.
|
|||
24
AllJoke
13.07.12
✎
13:36
|
а как понять - лексическое представление значения?
|
|||
25
Саша Питерский
13.07.12
✎
13:46
|
Внимательно посмотрел твой код в (0), вроде код правильный. Потом посмотрел картинку в (1), у меня родилось единственное предположение, что у тебя Свойство и Тип объекта называются одинаково, возможно это причина ошибки?
Попробуй тип объекта переименовать в MessageType |
|||
26
AllJoke
13.07.12
✎
13:47
|
(25) Тип именно какого объекта? В модели сервиса или в коде?
|
|||
27
Саша Питерский
13.07.12
✎
13:50
|
(26) На картинке из (1) есть группа Типы объектов. Первый из них называется Message. Вот его предлагаю переименовать. Переименовывать конечно в модели сервиса.
|
|||
28
AllJoke
13.07.12
✎
13:52
|
(27) {Обработка.Обработка1.Форма.Форма.Форма(144)}: Ошибка при вызове метода контекста (Создать)
part = СервисОхБил.ФабрикаXDTO.Создать(ТипПараметра_Message, Параметр_Message); по причине: Несоответствие типов (параметр номер '2') |
|||
29
AllJoke
13.07.12
✎
13:52
|
f yf 'nj yt vj;tim jndtnbnm&
|
|||
30
AllJoke
13.07.12
✎
13:52
|
а на это не можешь отвтетить?
|
|||
31
AllJoke
13.07.12
✎
14:08
|
Переименование не решило проблему. Всё равно "неверный формат".
|
|||
32
Serginio1
13.07.12
✎
14:12
|
Какой то странный у тебя <PlaceOfBirth code="11">001</PlaceOfBirth>
сравни с Address а как part = СервисОхБил.ФабрикаXDTO.Создать(ТипПараметра_Message); |
|||
33
AllJoke
13.07.12
✎
14:14
|
(32) сказали так и должно быть. Типа code - 'nj fnhb,en
|
|||
34
AllJoke
13.07.12
✎
14:14
|
это атрибут
|
|||
35
AllJoke
13.07.12
✎
14:15
|
Вообщем. Не работает.
|
|||
36
AllJoke
13.07.12
✎
14:15
|
Уже все ваши советы проделали - не пашет.
|
|||
37
Саша Питерский
13.07.12
✎
14:15
|
(31) Тогда без доступа к коду у меня закончились предположения. Можно еще попробовать Параметр_Message.Проверить() сделать, может объект неправильно заполнен.
(28) Попробуй указать вторым параметром имя типа строкой. |
|||
38
AllJoke
13.07.12
✎
14:15
|
Либо 1с с *.svc не умеет работать.
|
|||
39
AllJoke
13.07.12
✎
14:17
|
Параметр_Message.Проверить() - {(1)}: Обращение к процедуре объекта как к функции (Проверить)
|
|||
40
Саша Питерский
13.07.12
✎
14:17
|
(39) В отладчике бесполезно, пропиши в код.
|
|||
41
AllJoke
13.07.12
✎
14:20
|
+(39) - это в отлоадчике
|
|||
42
AllJoke
13.07.12
✎
14:20
|
(40) - ничего не выдаёт. всё нормально.
|
|||
43
Serginio1
13.07.12
✎
14:23
|
Атрибут атрибутом а где у него Параметр_Message_PlaceOfBirth.__content = "///";
Параметр_Message_PlaceOfBirth.code = "11"; .__content? Попробуй создать метод который принмает структуру без PlaceOfBirth. Если не будет ошибки значит проблема в ней |
|||
44
AllJoke
13.07.12
✎
14:24
|
(43) сейчас попробуем.
|
|||
45
Serginio1
13.07.12
✎
14:24
|
Или .__content заменить на content
|
|||
46
AllJoke
13.07.12
✎
14:24
|
я кстати знаечние изменил на "001" в PlaceOfBirth
|
|||
47
Serginio1
13.07.12
✎
14:25
|
или сделайте его структурой
|
|||
48
AllJoke
13.07.12
✎
14:28
|
(47) избавимся и глянем
|
|||
49
AllJoke
13.07.12
✎
14:35
|
Не помогло и удаление PlaceOfBirth
|
|||
50
AllJoke
13.07.12
✎
14:35
|
СашаПитерский - может подрубишься по тиму и глянешь?
|
|||
51
Саша Питерский
13.07.12
✎
14:39
|
подрубишься по тиму это что значит?
|
|||
52
Serginio1
13.07.12
✎
14:40
|
Покажи какой тип у параметра
|
|||
53
Serginio1
13.07.12
✎
14:41
|
А без Address и их обеих?
|
|||
54
AllJoke
13.07.12
✎
14:44
|
(53) можешь по тиму подрубиться? Или Ами Админ.
|
|||
55
AllJoke
13.07.12
✎
14:47
|
И что самое странное - ведь именно 1с ругается а не BizTalkServer.
|
|||
56
AllJoke
13.07.12
✎
14:58
|
Вообщем итог - всё сделали строками. "неверный формат"
|
|||
57
AllJoke
13.07.12
✎
14:58
|
Не работает.
|
|||
58
AllJoke
13.07.12
✎
15:33
|
Скиньте пжлста конфу по работе с Веб-Сервисами. Говорят на диске ИТС такая есть.
|
|||
59
Serginio1
13.07.12
✎
15:40
|
То есть это не 1С вэб сервис? У меня вообще сейчас 8 ки нет.
А вообще не все форматы 1С понимает. Приходится использовать наприме C#. v8: Доступ к WEB-сервису из 1С 8.2 через https Если нельзя сервисописателей подвинуть. Ну а так нужны структуры совместимые с 1С. И все стараются писть так, что бы и 1С понимало |
|||
60
AllJoke
13.07.12
✎
15:46
|
(59) Нет. Это сервис от BizTalk. Пытаемся тестовый сделать. Я так и думал что 1С не всё понимает. Поговорю с нашими писателями, может чего накумекают.
|
|||
61
AllJoke
13.07.12
✎
15:49
|
а конфа вышеупомянутая есть у кого?
|
|||
62
Serginio1
13.07.12
✎
16:16
|
А вообще попробуй пойти по другому пути. Создать пакет в 1С. Экспортировать схему. А в биз талке её импортировать.
|
|||
63
AllJoke
16.07.12
✎
15:17
|
в продолжении темы. Решил оттестить веб-сервис ЗАГСа. Там в него закладываются три параметра:
http://screencast.com/t/OTm9qobpD Делаю так: СервисЗАГС = WSСсылки.wssilka.СоздатьWSПрокси("http://wsService.zags.com/", "WsZagsTimeZBImplService", "WsZagsTimeZBImplPort"); ТипПар_Range = СервисЗАГС.ФабрикаXDTO.Тип("http://wsService.zags.com/","DateRange"); ТипПар_EnumZBTorj = СервисЗАГС.ФабрикаXDTO.Тип("http://wsService.zags.com/","EnumZBTorj"); ТипДата = СервисЗАГС.ФабрикаXDTO.Тип("http://www.w3.org/2001/XMLSchema","dateTime"); ТипСтрока = СервисЗАГС.ФабрикаXDTO.Тип("http://www.w3.org/2001/XMLSchema","string"); Парам_Range = СервисЗАГС.ФабрикаXDTO.создать(ТипПар_Range); Парам_EnumZBTorj = СервисЗАГС.ФабрикаXDTO.создать(ТипПар_EnumZBTorj,"ZB_NODIFF"); Парам_Range.minDat = СервисЗАГС.ФабрикаXDTO.Создать(ТипДата, Пар); Парам_Range.maxDat = СервисЗАГС.ФабрикаXDTO.Создать(ТипДата, Пар); Пар_ид = СервисЗАГС.ФабрикаXDTO.Создать(ТипСтрока, "0030"); Рез = СервисЗАГС.getDaysZB(Пар_ид, Парам_Range, Парам_EnumZBTorj); // здесь выпадает дикая ошибка: {Обработка.Обработка1.Форма.Форма.Форма(176)}: Ошибка при вызове метода контекста (getDaysZB) Рез = СервисЗАГС.getDaysZB(Пар_ид, Парам_Range, Парам_EnumZBTorj); по причине: Ошибка вызова операции сервиса: {http://wsService.zags.com/}:WsZagsTimeZBImplService:getDaysZB() по причине: Неизвестная ошибка. Ошибка преобразования данных XDTO: Чтение объекта типа: {http://jaxb.dev.java.net/array}dateTimeArray - [1,227] Проверка дополнительного свойства: форма: Элемент имя: item по причине: Ошибка преобразования данных XDTO: Чтение объекта типа: {http://jaxb.dev.java.net/array}dateTimeArray - [1,227] Проверка дополнительного свойства: форма: Элемент имя: item по причине: Ошибка проверки данных XDTO: Структура объекта не соответствует типу: {http://jaxb.dev.java.net/array}dateTimeArray |
|||
64
AllJoke
16.07.12
✎
15:17
|
Я параметры неправильно передаю в веб сервис или чего?
|
|||
65
AllJoke
16.07.12
✎
17:01
|
Может мне кто-нибудь объяснить с какими вообще веб-сервисами дружит 1С. Я уже беру самый наипростейший, с двумя параметрами: строка и перечесление, - и всё равно ошибка "Структура объекта не соответствует типу". Хотя с сервисом ЦБРФ всё проходит на ура.
|
|||
66
Serginio1
16.07.12
✎
17:27
|
Ну вообщето если тип в параметре не AnyType то можно передавать параметры без преобразования к объекту XDTO
Парам_Range = СервисЗАГС.ФабрикаXDTO.создать(ТипПар_Range); Парам_EnumZBTorj = СервисЗАГС.ФабрикаXDTO.создать(ТипПар_EnumZBTorj,"ZB_NODIFF"); Парам_Range.minDat = Пар; Парам_Range.maxDat = Пар; Пар_ид = "0030"; Рез = СервисЗАГС.getDaysZB(Пар_ид, Парам_Range, Парам_EnumZBTorj); // здесь выпадает дикая ну и заполнить Парам_EnumZBTorj Рез = СервисЗАГС.getDaysZB(Пар_ид, Парам_Range, Парам_EnumZBTorj); По поводу массивов в примере C# я не нашел решение. Хотя можно добавлять значения как атрибут. Кстати а как отображается тип данных http://jaxb.dev.java.net/array}dateTimeArray |
|||
67
Nexux
16.07.12
✎
17:30
|
делайте через mssoap
|
|||
68
AllJoke
16.07.12
✎
17:34
|
Вот банальщина:
ТипПар_EnumZBTorj = СервисЗАГС.ФабрикаXDTO.Тип("http://wsService.zags.com/","EnumZBTorj"); ТипСтрока = СервисЗАГС.ФабрикаXDTO.Тип("http://www.w3.org/2001/XMLSchema","string"); Пар_ид = СервисЗАГС.ФабрикаXDTO.Создать(ТипСтрока, "0030"); Парам_EnumZBTorj = СервисЗАГС.ФабрикаXDTO.создать(ТипПар_EnumZBTorj,"ZB_NODIFF"); Рез = СервисЗАГС.getMinMaxDaysZB(Пар_ид, Парам_EnumZBTorj); У метода "getMinMaxDaysZB" два параметра: idZags - тип "string", torj - тип "EnumZBTorj". Почему же он ругается??? Метод возращает значение типа - "DateRange (http://wsService.zags.com/)". Ругается на всё ту же структуру и всё. Что ей (1С) надо....? |
|||
69
AllJoke
16.07.12
✎
17:34
|
(67) Это ещё как?
|
|||
70
Serginio1
16.07.12
✎
17:43
|
Так EnumZBTorj это не строка. Что это за тип?
|
|||
71
AllJoke
16.07.12
✎
17:49
|
Тип значения XDTO. Базовый тип - string. Но как видно из схемы - это перечисление:
http://screencast.com/t/fUJuSfQCcne |
|||
72
Serginio1
16.07.12
✎
18:04
|
Так какую ошибку выдает?
В первом случае ругалось на dateTimeArray Опять же можно и проще Рез = СервисЗАГС.getMinMaxDaysZB("0030", Парам_EnumZBTorj); |
|||
73
Serginio1
16.07.12
✎
18:06
|
Уточнение параметров для простых типов нужно для типов AnyType.
|
|||
74
AllJoke
17.07.12
✎
08:25
|
Уже выдаёт ошибку:
Структура объекта не соответствует типу: {http://wsService.zags.com/}DateRange Теперь про уточнение - если я в коде каждый тип уточняю, это разве не верно? Как то разве влияет? И вообще, 1С толком не даёт вразумительных ответом по ошибке. Что за структура, какого объекта, типу я так понял "DateRange"/ |
|||
75
AllJoke
17.07.12
✎
08:28
|
И ещё, может и вправду 1С ни со всеми веб-сервисами дружит. На примере ЦБРФ всё проходит на ура. Правда там и параметр один, но всё же.
|
|||
76
Serginio1
17.07.12
✎
10:28
|
ТипПар_Range = СервисЗАГС.ФабрикаXDTO.Тип("http://wsService.zags.com/","DateRange");
Парам_Range = СервисЗАГС.ФабрикаXDTO.создать(ТипПар_Range); А где запись данных в Парам_Range (74) А зачем плодить лишние сущности,там где можно обойтись бе уточнения типа? (75) Очень много структур и массивов не понимает. Смотри 59 (1 и 8) |
|||
77
Serginio1
17.07.12
✎
10:30
|
Вернее что представляет Пар?
Парам_Range.minDat = Пар; Парам_Range.maxDat = Пар; |
|||
78
AllJoke
17.07.12
✎
11:26
|
(77) Это сейчас не актуально. Я уже без дат делаю.
СервисЗАГС = WSСсылки.wssilka.СоздатьWSПрокси("http://wsService.zags.com/", "WsZagsTimeZBImplService", "WsZagsTimeZBImplPort"); ТипПар_Range = СервисЗАГС.ФабрикаXDTO.Тип("http://wsService.zags.com/","DateRange"); ТипПар_EnumZBTorj = СервисЗАГС.ФабрикаXDTO.Тип("http://wsService.zags.com/","EnumZBTorj"); ТипДата = СервисЗАГС.ФабрикаXDTO.Тип("http://www.w3.org/2001/XMLSchema","dateTime"); ТипСтрока = СервисЗАГС.ФабрикаXDTO.Тип("http://www.w3.org/2001/XMLSchema","string"); Парам_EnumZBTorj = СервисЗАГС.ФабрикаXDTO.создать(ТипПар_EnumZBTorj,"ZB_NODIFF"); НачГ = НачалоГода(Пар); КонГ = КонецГода(Пар); Пар_ид = СервисЗАГС.ФабрикаXDTO.Создать(ТипСтрока, "0030"); Рез = СервисЗАГС.getMinMaxDaysZB(Пар_ид, Парам_EnumZBTorj); Должен возвратить две даты, такак в редакторе SOAP 4.0 работает. |
|||
79
Serginio1
17.07.12
✎
12:14
|
А с Парам_EnumZBTorj работает?
|
|||
80
Serginio1
17.07.12
✎
12:18
|
(78) То есть ругается на возвращаемый тип?
Еще для 1С все out параметры должны идти в конце параметров. При чем если out параметр сделать не в конце 1С не ругнется, но при вызове ве равно поставит его в конец. А потом думай поставил одно а получил другое. Но это относистся к собственым сервисам |
|||
81
AllJoke
17.07.12
✎
12:26
|
(79) такого сервиса нет с одним параметром. Эти два (в коде 78) и так минимальны
|
|||
82
AllJoke
17.07.12
✎
12:27
|
(80) а ругается на структру объекта которая не соответствует типу. Что за структура? Какого объекта? Какому типу? Об этом информации воообще ноль!
|
|||
83
Serginio1
17.07.12
✎
13:54
|
(82) А что возвращает getMinMaxDaysZB. Надо понимать DateRange?
|
|||
84
Serginio1
17.07.12
✎
13:59
|
Посмотри v8: MSSOAP 1C
|
|||
85
AllJoke
17.07.12
✎
14:11
|
(83) да
|
|||
86
AllJoke
17.07.12
✎
14:14
|
(84) Так там вообще стандартные средства не используются.
|
|||
87
Serginio1
17.07.12
✎
14:43
|
(86) Ну 1С не все понимает. Мало того, они еще и собственные структуры по разному записывать например СериализаторXDTO и ОбъектXDTO по той же схеме по разному запишут регистр сведений.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |