![]() |
|
Конвертация 2.1.5 и 1С++ | ☑ | ||
---|---|---|---|---|
0
Popkorm
09.04.12
✎
09:02
|
В запрос добавил строку ДатаОтчета,все ссылающие строки SQL на ДатаОтчета имеет формат datatime,при выполнении запроса ошибка такая:
State 22007, native 241, message [Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting datetime from character string. Синтаксическая ошибка преобразования даты из строки символов. Можно конешно так: Where Journ.DATE_TIME_IDDOC BETWEEN :НачДата AND :КонДата~ но в данном случаи в Конвертации нет понятии НачДата и КонДата........ Метадата = Параметры.Метадата;//Объект MetaDataWork ОДБЦ = СоздатьОбъект("ODBCRecordset"); Состояние("Подготовка движений прошлых периодов:" + Источник); СтрокаПроектВозврат = ""; СпрПроект = СоздатьОбъект("Справочник.Проекты"); СпрПроект.ВыбратьЭлементы(); Пока СпрПроект.ПолучитьЭлемент() = 1 Цикл Если (Найти(Врег(СпрПроект.Наименование),Врег("Возврат")) = 0) и (Найти(Врег(СпрПроект.Наименование),Врег("Брак")) = 0) Тогда Продолжить; КонецЕсли; СтрокаПроектВозврат = СтрокаПроектВозврат + ",'" + Метадата.ЗначениеВСтрокуБД(СпрПроект.ТекущийЭлемент()) + "'"; КонецЦикла; СтрокаПроектВозврат = Сред(СтрокаПроектВозврат,2); // Запрос по движениям документов ТекстЗапроса = " |Select |Docs.PrihRash as [ВидДвиженияПриходРасход], |Docs.VidOper as [ВидОперацииСТоваром], |Docs.Project as [Проект $Справочник.Проекты], |Docs.Org as [Организация $Справочник.Фирмы], |Docs.Sklad as [Склад $Справочник.Склады], |Docs.DataSklad as [ДатаОтчета], |Docs.Kontr as [Контрагент $Справочник.Контрагенты], |Docs.KontrSklad as [КонтрагентСклад $Справочник.Склады], |Docs.Nomenkl as [Номенклатура $Справочник.Номенклатура], |Sum(Docs.Kolvo) as [Количество], |Sum(Docs.Summa) as [Сумма] |From |( |Select -- ВводОстатковТМЦ |DocHeader.IdDoc as IdDoc, |'Приход' as PrihRash, |'НачальныйОстаток' as VidOper, |Journ.SP798 as Project, |Journ.SP4056 as Org, |DocHeader.SP3941 as Sklad, |'' as DataSklad, |'' as Kontr, |'' as KontrSklad, |DocTable.SP3944 as Nomenkl, |DocTable.SP3945 * Fenix_TD.dbo.fn_NotNull(DocTable.SP3947) as Kolvo, |DocTable.SP3948 as Summa |From |_1sjourn as Journ |inner join DH3957 as DocHeader on DocHeader.IdDoc = Journ.IdDoc |inner join DT3957 as DocTable on DocTable.IdDoc = Journ.IdDoc //|Cast(Journ.DATE_TIME_IDDOC As Date)='" + Формат(Источник,"ДГГГГММДД") + "' |Where Left(Journ.DATE_TIME_IDDOC,8) = '" + Формат(Источник,"ДГГГГММДД") + "' |And Journ.CLOSED = 1 |And DocHeader.SP3935 = ' 2Y7 ' -- Вид операции ОстаткиТМЦ |Union All |Select -- ВыпускПродукции |DocHeader.IdDoc as IdDoc, |'Приход' as PrihRash, |'КупляПродажа' as VidOper, |Journ.SP798 as Project, |Journ.SP4056 as Org, |DocHeader.SP6883 as Sklad, |DocHeader.SP6887 as DataSklad, |'' as Kontr, |'' as KontrSklad, |DocTable.SP6889 as Nomenkl, |DocTable.SP6890 * Fenix_TD.dbo.fn_NotNull(DocTable.SP6892) as Kolvo, |DocTable.SP6894 * Fenix_TD.dbo.fn_NotNull(DocHeader.SP6885) as Summa |From |_1sjourn as Journ |inner join DH6898 as DocHeader on DocHeader.IdDoc = Journ.IdDoc |inner join DT6898 as DocTable on DocTable.IdDoc = Journ.IdDoc //|Cast(Journ.DATE_TIME_IDDOC As Date)='" + Формат(Источник,"ДГГГГММДД") + "' |Where Left(Journ.DATE_TIME_IDDOC,8) = '" + Формат(Источник,"ДГГГГММДД") + "' |And Journ.CLOSED = 1 |Union All |Select -- ПоступлениеТМЦ |DocHeader.IdDoc as IdDoc, |'Приход' as PrihRash, |Case |When Journ.SP798 in (" + СтрокаПроектВозврат + ") Then 'Возврат' |Else 'КупляПродажа' |End as VidOper, |Journ.SP798 as Project, |Journ.SP4056 as Org, |DocHeader.SP1565 as Sklad, |DocHeader.SP1555 as Kontr, |DocHeader.SP6561 as DataSklad, |'' as KontrSklad, |DocTable.SP1569 as Nomenkl, |DocTable.SP1570 * Fenix_TD.dbo.fn_NotNull(DocTable.SP1572) as Kolvo, |(Case | When DocHeader.SP1561 = 1 and DocHeader.SP1562 = 0 Then DocTable.SP1574 + DocTable.SP1575 -- Если УчитыватьНДС и СуммаВклНДС Тогда + СуммаНДС |Else DocTable.SP1574 |end) * Fenix_TD.dbo.fn_NotNull(DocHeader.SP1558) as Summa |From |_1sjourn as Journ |inner join DH1582 as DocHeader on DocHeader.IdDoc = Journ.IdDoc |inner join DT1582 as DocTable on DocTable.IdDoc = Journ.IdDoc //|Cast(Journ.DATE_TIME_IDDOC As Date)='" + Формат(Источник,"ДГГГГММДД") + "' |Where Left(Journ.DATE_TIME_IDDOC,8) = '" + Формат(Источник,"ДГГГГММДД") + "' |And Journ.CLOSED = 1 |Union All |Select -- ПоступлениеТМЦИмпорт |DocHeader.IdDoc as IdDoc, |'Приход' as PrihRash, |'КупляПродажа' as VidOper, |Journ.SP798 as Project, |Journ.SP4056 as Org, |DocHeader.SP3281 as Sklad, |DocHeader.SP3282 as Kontr, |DocHeader.SP6563 as DataSklad, |'' as KontrSklad, |DocTable.SP3298 as Nomenkl, |DocTable.SP3299 * Fenix_TD.dbo.fn_NotNull(DocTable.SP3301) as Kolvo, |DocTable.SP3303 * Fenix_TD.dbo.fn_NotNull(DocHeader.SP3285) + DocTable.SP3305 + DocTable.SP3307 as Summa -- + СуммаПошлиныРуб + СуммаНДСРуб |From |_1sjourn as Journ |inner join DH3311 as DocHeader on DocHeader.IdDoc = Journ.IdDoc |inner join DT3311 as DocTable on DocTable.IdDoc = Journ.IdDoc //|Cast(Journ.DATE_TIME_IDDOC As Date)='" + Формат(Источник,"ДГГГГММДД") + "' |Where Left(Journ.DATE_TIME_IDDOC,8) = '" + Формат(Источник,"ДГГГГММДД") + "' |And Journ.CLOSED = 1 |Union All |Select -- Реализация |DocHeader.IdDoc as IdDoc, |'Расход' as PrihRash, |'КупляПродажа' as VidOper, |Journ.SP798 as Project, |Journ.SP4056 as Org, |DocHeader.SP1593 as Sklad, |DocHeader.SP1583 as Kontr, |DocHeader.SP6510 as DataSklad, |'' as KontrSklad, |DocTable.SP1599 as Nomenkl, |DocTable.SP1600 * Fenix_TD.dbo.fn_NotNull(DocTable.SP1602) as Kolvo, |(Case |When DocHeader.SP1589 = 1 and DocHeader.SP1590 = 0 Then DocTable.SP1604 + DocTable.SP1605 -- Если УчитыватьНДС и СуммаВклНДС Тогда + СуммаНДС |Else DocTable.SP1604 |end) * Fenix_TD.dbo.fn_NotNull(DocHeader.SP1586) as Summa |From |_1sjourn as Journ |inner join DH1611 as DocHeader on DocHeader.IdDoc = Journ.IdDoc |inner join DT1611 as DocTable on DocTable.IdDoc = Journ.IdDoc //|Cast(Journ.DATE_TIME_IDDOC As Date)='" + Формат(Источник,"ДГГГГММДД") + "' |Where Left(Journ.DATE_TIME_IDDOC,8) = '" + Формат(Источник,"ДГГГГММДД") + "' |And Journ.CLOSED = 1 |Union All |Select -- ВозвратПоставщику |DocHeader.IdDoc as IdDoc, |'Расход' as PrihRash, |'Возврат' as VidOper, |Journ.SP798 as Project, |Journ.SP4056 as Org, |DocHeader.SP1667 as Sklad, |DocHeader.SP1657 as Kontr, |DocHeader.SP6545 as DataSklad, |'' as KontrSklad, |DocTable.SP1672 as Nomenkl, |DocTable.SP1673 * Fenix_TD.dbo.fn_NotNull(DocTable.SP1675) as Kolvo, |(Case |When DocHeader.SP1663 = 1 and DocHeader.SP1664 = 0 Then DocTable.SP1677 + DocTable.SP1678 -- Если УчитыватьНДС и СуммаВклНДС Тогда + СуммаНДС |Else DocTable.SP1677 |end) * Fenix_TD.dbo.fn_NotNull(DocHeader.SP1660) as Summa |From |_1sjourn as Journ |inner join DH1684 as DocHeader on DocHeader.IdDoc = Journ.IdDoc |inner join DT1684 as DocTable on DocTable.IdDoc = Journ.IdDoc //|Cast(Journ.DATE_TIME_IDDOC As Date)='" + Формат(Источник,"ДГГГГММДД") + "' |Where Left(Journ.DATE_TIME_IDDOC,8) = '" + Формат(Источник,"ДГГГГММДД") + "' |And Journ.CLOSED = 1 |Union All |Select -- ВозвратОтПокупателя |DocHeader.IdDoc as IdDoc, |'Приход' as PrihRash, |'Возврат' as VidOper, |Journ.SP798 as Project, |Journ.SP4056 as Org, |DocHeader.SP1639 as Sklad, |DocHeader.SP1629 as Kontr, |DocHeader.SP6543 as DataSklad, |'' as KontrSklad, |DocTable.SP1644 as Nomenkl, |DocTable.SP1645 * Fenix_TD.dbo.fn_NotNull(DocTable.SP1647) as Kolvo, |(Case |When DocHeader.SP1635 = 1 and DocHeader.SP1636 = 0 Then DocTable.SP1649 + DocTable.SP1650 -- Если УчитыватьНДС и СуммаВклНДС Тогда + СуммаНДС |Else DocTable.SP1649 |end) * Fenix_TD.dbo.fn_NotNull(DocHeader.SP1632) as Summa |From |_1sjourn as Journ |inner join DH1656 as DocHeader on DocHeader.IdDoc = Journ.IdDoc |inner join DT1656 as DocTable on DocTable.IdDoc = Journ.IdDoc //|Cast(Journ.DATE_TIME_IDDOC As Date)='" + Формат(Источник,"ДГГГГММДД") + "' |Where Left(Journ.DATE_TIME_IDDOC,8) = '" + Формат(Источник,"ДГГГГММДД") + "' |And Journ.CLOSED = 1 |Union All |Select -- ОприходованиеТМЦ |DocHeader.IdDoc as IdDoc, |'Приход' as PrihRash, |'ИзлишкиНедостачи' as VidOper, |Journ.SP798 as Project, |Journ.SP4056 as Org, |DocHeader.SP2094 as Sklad, |'' as DataSklad, |'' as Kontr, |'' as KontrSklad, |DocTable.SP2098 as Nomenkl, |DocTable.SP2099 * Fenix_TD.dbo.fn_NotNull(DocTable.SP2101) as Kolvo, |0 as Summa |From |_1sjourn as Journ |inner join DH2106 as DocHeader on DocHeader.IdDoc = Journ.IdDoc |inner join DT2106 as DocTable on DocTable.IdDoc = Journ.IdDoc //|Cast(Journ.DATE_TIME_IDDOC As Date)='" + Формат(Источник,"ДГГГГММДД") + "' |Where Left(Journ.DATE_TIME_IDDOC,8) = '" + Формат(Источник,"ДГГГГММДД") + "' |And Journ.CLOSED = 1 |Union All |Select -- СписаниеТМЦ |DocHeader.IdDoc as IdDoc, |'Расход' as PrihRash, |'ИзлишкиНедостачи' as VidOper, |Journ.SP798 as Project, |Journ.SP4056 as Org, |DocHeader.SP1777 as Sklad, |DocHeader.SP6570 as DataSklad, |'' as Kontr, |'' as KontrSklad, |DocTable.SP1782 as Nomenkl, |DocTable.SP1783 * Fenix_TD.dbo.fn_NotNull(DocTable.SP1785) as Kolvo, |0 as Summa |From |_1sjourn as Journ |inner join DH1790 as DocHeader on DocHeader.IdDoc = Journ.IdDoc |inner join DT1790 as DocTable on DocTable.IdDoc = Journ.IdDoc //|Cast(Journ.DATE_TIME_IDDOC As Date)='" + Формат(Источник,"ДГГГГММДД") + "' |Where Left(Journ.DATE_TIME_IDDOC,8) = '" + Формат(Источник,"ДГГГГММДД") + "' |And Journ.CLOSED = 1 |Union All |Select -- ПеремещениеТМЦ |DocHeader.IdDoc as IdDoc, |'Расход' as PrihRash, |'Перемещение' as VidOper, |Journ.SP798 as Project, |Journ.SP4056 as Org, |DocHeader.SP3078 as Sklad, |DocHeader.SP6511 as DataSklad, |'' as Kontr, |DocHeader.SP1615 as KontrSklad, |DocTable.SP1620 as Nomenkl, |DocTable.SP1621 * Fenix_TD.dbo.fn_NotNull(DocTable.SP1623) as Kolvo, |0 as Summa |From |_1sjourn as Journ |inner join DH1628 as DocHeader on DocHeader.IdDoc = Journ.IdDoc |inner join DT1628 as DocTable on DocTable.IdDoc = Journ.IdDoc //|Cast(Journ.DATE_TIME_IDDOC As Date)='" + Формат(Источник,"ДГГГГММДД") + "' |Where Left(Journ.DATE_TIME_IDDOC,8) = '" + Формат(Источник,"ДГГГГММДД") + "' |And Journ.CLOSED = 1 |And DocHeader.SP3078 <> DocHeader.SP1615 |Union All |Select -- ПеремещениеТМЦ (Приход) |DocHeader.IdDoc as IdDoc, |'Приход' as PrihRash, |'Перемещение' as VidOper, |Journ.SP798 as Project, |DocHeader.SP6511 as DataSklad, |Journ.SP4056 as Org, |DocHeader.SP1615 as Sklad, |'' as Kontr, -- СкладОтправитель |DocHeader.SP3078 as KontrSklad, |DocTable.SP1620 as Nomenkl, |DocTable.SP1621 * Fenix_TD.dbo.fn_NotNull(DocTable.SP1623) as Kolvo, |0 as Summa |From |_1sjourn as Journ |inner join DH1628 as DocHeader on DocHeader.IdDoc = Journ.IdDoc |inner join DT1628 as DocTable on DocTable.IdDoc = Journ.IdDoc //|Cast(Journ.DATE_TIME_IDDOC As Date)='" + Формат(Источник,"ДГГГГММДД") + "' |Where Left(Journ.DATE_TIME_IDDOC,8) = '" + Формат(Источник,"ДГГГГММДД") + "' |And Journ.CLOSED = 1 |And DocHeader.SP3078 <> DocHeader.SP1615 |) as Docs |Group By |Docs.PrihRash, |Docs.DataSklad, |Docs.VidOper, |Docs.Project, |Docs.Org, |Docs.Sklad, |Docs.Kontr, |Docs.KontrSklad, |Docs.Nomenkl |"; КоллекцияОбъектов = СоздатьОбъект("ТаблицаЗначений"); ОДБЦ.ВыполнитьИнструкцию(ТекстЗапроса,КоллекцияОбъектов); Сообщить("Выгрузка движений прошлых периодов:" + Источник + "(" + КоллекцияОбъектов.КоличествоСтрок() + " строк)","i"); |
|||
1
spock
09.04.12
✎
09:05
|
Cast(Left(Journ.DATE_TIME_IDDOC,8) As Datetime)
|
|||
2
spock
09.04.12
✎
09:11
|
а вообще, вот так будет лучше:
WHERE Journ.DATE_TIME_IDDOC > '" + Формат(Источник,"ДГГГГММДД") + "' AND Journ.DATE_TIME_IDDOC < '" + Формат(Источник + 1,"ДГГГГММДД") + "' |
|||
3
МихаилМ
09.04.12
✎
09:29
|
ветки на плодите
не работает запрос |
|||
4
Popkorm
09.04.12
✎
09:33
|
(2)
а куда мы денем Journ.DATE_TIME_IDDOC?!Это и есть дата,а ДатаОтчета это реквизит(Тип:Дата) 1С 7.7 в документах..По моему DataSklad надо наложить условие. Без ДатаОтчета запрос работает (1) и (2) не работает (1)ошибка Cast (2)ошибка:Syntax error converting datetime from character string. |
|||
5
ДенисЧ
09.04.12
✎
09:39
|
where date_time_iddoc between :ДатаОтчета AND :ДатаОтчета~
читайте доки, они рулят |
|||
6
ДенисЧ
09.04.12
✎
09:40
|
И
ОДБЦ.УстановитьТекстовыйПараметр("ДатаОтчета", ДатаОтчета) |
|||
7
spock
09.04.12
✎
09:41
|
(4)как это не работает?
|
|||
8
Popkorm
09.04.12
✎
10:01
|
(7)вот так запрос отрабатывает,но по завершению ошибку выдает :
Выгрузка движений прошлых периодов:02.04.12(0 строк) Выгрузка движений прошлых периодов:03.04.12(0 строк) Выгрузка движений прошлых периодов:04.04.12(0 строк) Выгрузка движений прошлых периодов:05.04.12(0 строк) Выгрузка движений прошлых периодов:06.04.12(0 строк) Выгрузка движений прошлых периодов:08.04.12(0 строк) Выгрузка движений прошлых периодов:09.04.12(0 строк) DOMDocument.save(ИмяФайлаДанных); {\\SQL1\DB\AVTOJOB\V77EXP_ТИС_ТД_КА82_ФЕНИКС.ERT(25064)}: msxml4.dll: Отказано в доступе. Документы пустые |Left(Journ.DATE_TIME_IDDOC,8) > '" + Формат(Источник,"ДГГГГММДД") + "' |AND Left(Journ.DATE_TIME_IDDOC,8) < '" + Формат(Источник + 1,"ДГГГГММДД") + "' |
|||
9
Popkorm
09.04.12
✎
10:03
|
(6)это условие оставлять?!:
|Where Left(Journ.DATE_TIME_IDDOC,8) = '" + Формат(Источник,"ДГГГГММДД") + "' то есть 2 условия: where date_time_iddoc between :ДатаОтчета AND :ДатаОтчета~ Where Left(Journ.DATE_TIME_IDDOC,8) = '" + Формат(Источник,"ДГГГГММДД") + "' |
|||
10
spock
09.04.12
✎
10:05
|
(8)Во-первых, выжи ошибку "Отказано в доступе". Во-вторых, Left(Journ.DATE_TIME_IDDOC,8) - про LEFT я ничего не писал в (2). В-третьих, мозг-то включать надо иной раз.
|
|||
11
ДенисЧ
09.04.12
✎
10:14
|
(9) нет, не оставлять
|
|||
12
Popkorm
09.04.12
✎
10:23
|
||||
13
spock
09.04.12
✎
10:27
|
(12)не видно ничего
|
|||
14
Popkorm
09.04.12
✎
10:32
|
(13) ну поле DATE_TIME_IDDOC имеет строку больше 8 символов,из чего Left(Journ.DATE_TIME_IDDOC,8) беру только первые 8 строк
|
|||
15
spock
09.04.12
✎
10:44
|
(14)а, некоторая логика в этом есть :)
Что будет в таком случае? WHERE LEFT('20120409ABCDEF', 8) > '20120409' AND LEFT('20120409ABCDEF', 8) < '20120410' |
|||
16
Popkorm
09.04.12
✎
11:45
|
Вообщем проблема в самом первом вложенном запросе :
|Select -- ВводОстатковТМЦ |DocHeader.IdDoc as IdDoc, |'Приход' as PrihRash, |'НачальныйОстаток' as VidOper, |Journ.SP798 as Project, |Journ.SP4056 as Org, |DocHeader.SP3941 as Sklad, |'' as DataSklad, у меня для ВводОстатковТМЦ нет в Скуле поле DataSklad, из чего ошибка: Syntax error converting datetime from character string(преобразования даты из строки символов)..Надо через Case как то делать в других таблицах где есть поля DataSklad(и поле Пустое),то поле равно = 1753-01-01 Для ВводОстатковТМЦ для строки DataSklad условие писать |
|||
17
Popkorm
09.04.12
✎
12:55
|
к примеру для ПоступлениеТМЦ я понимаю примерно так будит:
When Case(DocHeader.SP6561 = '17530101' Then DocTable.SP6561 as DateTime Else DocHeader.SP6561 End)as DataSklad правильно или нет,как вы думаете?! |
|||
18
Popkorm
09.04.12
✎
12:56
|
cast('17530101' as DateTime) - вот это выражение для пустой даты использовать
|
|||
19
Ёпрст
гуру
09.04.12
✎
13:12
|
(0) а чего не пользуешься метапарсером ? Чего за изврат писать поля руктями ? Чем (5) не нравится ?
заместо пустой строки лучше null писать |
|||
20
Popkorm
09.04.12
✎
14:19
|
(19) как в (5)в данном случаи у меня тут:
|Where Left(Journ.DATE_TIME_IDDOC,8) = '" + Формат(Источник,"ДГГГГММДД") + "' отрабатывает. Пустая строка в 1С 7.7,а в Скул она 1723-01-01 00:00:00: http://clip2net.com/s/1MVJs вот здесь надо допилить: |Select -- ВводОстатковТМЦ |DocHeader.IdDoc as IdDoc, |'Приход' as PrihRash, |'НачальныйОстаток' as VidOper, |Journ.SP798 as Project, |Journ.SP4056 as Org, |DocHeader.SP3941 as Sklad, |'' as DataSklad, вот так выдает ошибку: |Select |Docs.PrihRash as [ВидДвиженияПриходРасход], |Docs.VidOper as [ВидОперацииСТоваром], |Docs.Project as [Проект $Справочник.Проекты], |Docs.Org as [Организация $Справочник.Фирмы], |Docs.Sklad as [Склад $Справочник.Склады], |Docs.DataSklad as [ДатаОтчета], |Docs.Kontr as [Контрагент $Справочник.Контрагенты], |Docs.KontrSklad as [КонтрагентСклад $Справочник.Склады], |Docs.Nomenkl as [Номенклатура $Справочник.Номенклатура], |Sum(Docs.Kolvo) as [Количество], |Sum(Docs.Summa) as [Сумма] |From |( |Select -- ВводОстатковТМЦ |DocHeader.IdDoc as IdDoc, |'Приход' as PrihRash, |'НачальныйОстаток' as VidOper, |Journ.SP798 as Project, |Journ.SP4056 as Org, |DocHeader.SP3941 as Sklad, |cast('17530101' as DateTime), |'' as DataSklad, |'' as Kontr, |'' as KontrSklad, No column was specified for column 7 of 'Docs'(Нет колонке указаны для колонке 7 "Документы") |
|||
21
Ёпрст
гуру
09.04.12
✎
18:53
|
(20) я знаю как 1с конвертит пустую строку в скуле.
Еще раз - нулл пихай, заместо '' |
|||
22
Ёпрст
гуру
09.04.12
✎
18:54
|
+ $ПустойИД для всего остального.. а не ''
|
|||
23
Salimbek
09.04.12
✎
19:18
|
(19) +1
Автору: 1. Используй "$DocHeader.Склад" вместо "DocHeader.SP394", метапарсер за тебя поля сам вытащит и код читать удобнее станет 2. Послушай (21-22) и сделай как он предлагает, т.к. он правильно все предлагает 3. Пытался разобраться в твоем коде, но без п.1 - очень трудно вникать, перепиши запрос, и уже будет более конструктивная тема для обсуждения |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |