|   |   | 
| 
 | v7: ТиС не удается изменить константу Контроль отрицательных остатков ТМЦ | ☑ | ||
|---|---|---|---|---|
| 0
    
        Злопчинский 03.08.17✎ 15:07 | 
        ..мутная история...
 но интересно тем не менее: есть база ТиС в которой не удается поменять значение констант Константа.КонтрольОтрицательныхОстатков Константа.НомерРелиза вот такой код //******************************************* Процедура Сформировать() Сообщить("до: "+Константа.КонтрольОтрицательныхОстатков); Константа.КонтрольОтрицательныхОстатков = Перечисление.СпособыКонтроляОстатковТМЦ.ПоКомпании; Сообщить("после: "+Константа.КонтрольОтрицательныхОстатков); КонецПроцедуры никаких ошибок не дает, но к изменению константы не приводит: до: По фирме после: По фирме такое ощущение, что либо сбой в файле констант (что очень сомнительно) либо что файл констант как-то кем-то хитро подредактирован. Ибо после его физического удаления - когда он создается заново - все отрабатывает нормально... собственно вопрос - почему не удается изменить значение константы? | |||
| 1
    
        Злопчинский 03.08.17✎ 15:08 | 
        ..и как найти - почему?     | |||
| 2
    
        Базис naïve 03.08.17✎ 15:09 | 
        Привет. В глобальнике глянь - 77 позволяет фильтровать запись констант программно.     | |||
| 3
    
        Базис naïve 03.08.17✎ 15:10 | 
        Наверное, "ПриЗаписиКонстанты"     | |||
| 4
    
        Злопчинский 03.08.17✎ 15:13 | 
        (3) проверено. там проблем нет.     | |||
| 5
    
        Ёпрст гуру 03.08.17✎ 15:15 | 
        (0) периодическая ?     | |||
| 6
    
        Ёпрст гуру 03.08.17✎ 15:16 | 
        ну и это, 1sconst.cdx прибей что ле, если дбф база     | |||
| 7
    
        Злопчинский 03.08.17✎ 15:17 | 
        (5) нет
 (6) не помогает | |||
| 8
    
        Ёпрст гуру 03.08.17✎ 15:18 | 
        (7) ну найди в файле 1sconst эту запись и осмотри, че там     | |||
| 9
    
        Злопчинский 03.08.17✎ 15:19 | 
        как найти, с ID мало работал     | |||
| 10
    
        Хряк 03.08.17✎ 15:20 | 
        удали ея (или переименуй), добавь заново - все будет работать
 есть такой глюк в константах по непонятным причинам | |||
| 11
    
        1dvd 03.08.17✎ 15:22 | 
        (9) dd (dds) файл смотри     | |||
| 12
    
        KishMish 03.08.17✎ 15:23 | 
        (0) а по Перечисление.СпособыКонтроляОстатковТМЦ.ПоКомпании это не по фирме?     | |||
| 13
    
        Злопчинский 03.08.17✎ 15:25 | 
        (11) не, как из 
 Константа.КонтрольОтрицательныхОстатков получить ID в 1SCONST.DBF ? | |||
| 14
    
        Злопчинский 03.08.17✎ 15:26 | 
        (12) к сабжу темы отношения не имеет, но ответ: нет, "по компании" это не "по фирме"     | |||
| 15
    
        Базис naïve 03.08.17✎ 15:27 | 
        Прямым запросом - поля имя и ID из таблицы. Под рукой 77 нет, но там просто всё ,ты же знаешь.     | |||
| 16
    
        aka AMIGO 03.08.17✎ 15:28 | 
        (14) Какой Тип Константы? Перечисление?     | |||
| 17
    
        Злопчинский 03.08.17✎ 15:29 | 
        (16), да, перечисление     | |||
| 18
    
        Злопчинский 03.08.17✎ 15:29 | 
        (15) я в прямых туп     | |||
| 19
    
        Злопчинский 03.08.17✎ 15:31 | 
        (10) блин, сколько работаю - ни разу не сталкивался, сейчас попробую     | |||
| 20
    
        aka AMIGO 03.08.17✎ 15:34 | 
        Может, Латинские буквы затесались? :)
 Работаешь под опенконфом? | |||
| 21
    
        Злопчинский 03.08.17✎ 15:35 | 
        (10) Попробовал.
 Получилось. | |||
| 22
    
        Злопчинский 03.08.17✎ 15:36 | 
        (20) где лат.буквы затесались?
 опенконф - работаю. там где проблема - опенкофа нет | |||
| 23
    
        aka AMIGO 03.08.17✎ 15:36 | 
        Вот и хорошо.     | |||
| 24
    
        Злопчинский 03.08.17✎ 15:37 | 
        (23) пока - все плохо.
 почему код в (0) - не дает изменений в базе? | |||
| 25
    
        aka AMIGO 03.08.17✎ 15:37 | 
        (22) Имелось в виду - после точки печатал вручную, либо выбирал из списка опенконфа..
 Ну, ладно, получилось - и заботу с плеч долой :) | |||
| 26
    
        aka AMIGO 03.08.17✎ 15:38 | 
        (24) Погодь малёк, я попробую у себя.     | |||
| 27
    
        Злопчинский 03.08.17✎ 15:38 | 
        (25) не, это неправильно     | |||
| 28
    
        Злопчинский 03.08.17✎ 15:39 | 
        подозрительно то, что такая проблема - на двух константах
 . Константа.КонтрольОтрицательныхОстатков Константа.НомерРелиза . вариант из (10) - прокатил, но это не наш путь. | |||
| 29
    
        Злопчинский 03.08.17✎ 15:43 | 
        гуру, подскажите лучше как для
 Константа.КонтрольОтрицательныхОстатков получить ID (который в 1SCONST.DBF) ? | |||
| 30
    
        aka AMIGO 03.08.17✎ 15:44 | 
        (28) Смотри.
 https://i.paste.pics/f83c431f6655466b290d38d5777c93d6.png И это после твоего кода. Теперь - когда я жмакнул по константе - значение тут-же поменялось на "по Компании" т.е. окно списка констант должно быть обновлено Так что, имхо - всё у тебя путём, меняется | |||
| 31
    
        aka AMIGO 03.08.17✎ 15:46 | 
        вот после жмакания - если не веришь:
 https://i.paste.pics/6f31c92c6a26476d1f77025bc0c389a7.png | |||
| 32
    
        Злопчинский 03.08.17✎ 15:48 | 
        (30) проблема в том - что у тебя - меняется, а у меня НЕ МЕНЯЕТСЯ. ни интерактивно, ни программно.     | |||
| 33
    
        aka AMIGO 03.08.17✎ 15:49 | 
        Ааа.. блин.. понял.. посмотрел в сабж твой. Извини     | |||
| 34
    
        aka AMIGO 03.08.17✎ 15:52 | 
        (32) глянь еще в "Описание структуры метаданных"
 такие параметры? - Константа - Идентификатор "КонтрольОтрицательныхОстатков" - Синоним "Контроль отрицательных остатков ТМЦ" - Комментарий - Тип "Перечисление" - Вид "СпособыКонтроляОстатковТМЦ" - Длина "0" - Точность "0" - НеОтрицательный "0" - РазделятьТриады "0" - Периодический "0" - ОбластьРаспространения "ВсеИнформационныеБазы" | |||
| 35
    
        Злопчинский 03.08.17✎ 15:53 | 
        (34)
 - Константа - Идентификатор "КонтрольОтрицательныхОстатков" - Синоним "Контроль отрицательных остатков ТМЦ" - Комментарий - Тип "Перечисление" - Вид "СпособыКонтроляОстатковТМЦ" - Длина "0" - Точность "0" - НеОтрицательный "0" - РазделятьТриады "0" - Периодический "0" - ОбластьРаспространения "ВсеИнформационныеБазы" 1 в 1 | |||
| 36
    
        Злопчинский 03.08.17✎ 15:54 | 
        (33) лучше (29) подскажи     | |||
| 37
    
        Злопчинский 03.08.17✎ 16:00 | 
        ууу, злыдни.. приходится по всяким помойкам лазить искать     | |||
| 38
    
        aka AMIGO 03.08.17✎ 16:00 | 
        (35) :(
 (36) - не знаю, не получал ни разу, разве только в дбф заглянуть https://i.paste.pics/375b49938536d813e2157c0394452a27.png | |||
| 39
    
        aka AMIGO 03.08.17✎ 16:02 | 
        (38) + в 8-ке пользовал, и не раз, а в 7-ке вроде ни к чему было     | |||
| 40
    
        Злопчинский 03.08.17✎ 16:03 | 
        "<"+ЗначениеВСтрокуБД(Перечисление.СпособыКонтроляОстатковТМЦ.ПоКомпании)+">" = <   4K5   >
 "<"+ЗначениеВСтрокуБД(Перечисление.СпособыКонтроляОстатковТМЦ.ПоФирме)+">" = < 4K2 > | |||
| 41
    
        Злопчинский 03.08.17✎ 16:05 | 
        это ID самого значения константы, то есть VALUE
 . а как получить ID, соответсвующий константе как объекту? / то есть как получить именно вот этот 16W ? | |||
| 43
    
        aka AMIGO 03.08.17✎ 16:08 | 
        Через метаданные - никак?     | |||
| 44
    
        aka AMIGO 03.08.17✎ 16:17 | 
        Вообще-то можно прямо из дбф-файлика и взять.. Предварительно скопировав его, он может быть захвачен 1с-ом     | |||
| 45
    
        Злопчинский 03.08.17✎ 16:21 | 
        так.. походу такое злопство как в (0) проистекает из того, что в файлике констант есть несколько записей на один объект...     | |||
| 46
    
        Злопчинский 03.08.17✎ 16:22 | 
        ща... еще не одна бяка от Сергея Михайловича просто так не уходила...     | |||
| 47
    
        aka AMIGO 03.08.17✎ 16:24 | 
        (45) ничё се!.. :)     | |||
| 48
    
        Ёпрст гуру 03.08.17✎ 16:24 | 
        select *
 from 1sconst as Периодика where Периодика.objid = :ТС and Периодика.id = $ИсторияРеквизита.НужныйВидСправочника.НужныйРеквизитВЭтомСправочнике | |||
| 49
    
        Ёпрст гуру 03.08.17✎ 16:24 | 
        Ид константы, или штатно, или через метадатаворк     | |||
| 50
    
        Злопчинский 03.08.17✎ 16:31 | 
        ТАК И ЕСТЬ!
 Константа.КонтрольОтрицательныхОстатков https://content.screencast.com/users/Che66/folders/Jing/media/f0d3cf4d-ff55-4c13-9e2d-4afe85fec069/2017-08-03_1623.png (для константа.номеррелиза - аналогично!) видим что для константы присутствует две записи. ХОТЯ ДОЛЖНА БЫТЬ ОДНА . первая запись = ПО КОМПАНИИ вторая запись = ПО ФИРМЕ . в меню-операции-константы (и в "настройки параметров учета") показывается вторая запись (то есть СЧИТЫВАЕТСЯ ПОСЛЕДНЯЯ ЗАПИСЬ?) | |||
| 51
    
        Злопчинский 03.08.17✎ 16:33 | 
        то есть когда есть код
 КонтрольОстатков = Константа.КонтрольОтрицательныхОстатков; то в КонтрольОстатков - сидит последняя считанная запись (? это так) | |||
| 52
    
        Вафель 03.08.17✎ 16:37 | 
        (51) Та на которую индекс указывает     | |||
| 53
    
        aka AMIGO 03.08.17✎ 16:37 | 
        (51) или только первая встреченная     | |||
| 54
    
        Злопчинский 03.08.17✎ 16:38 | 
        !!!
 а вот когда пишем код Константа.КонтрольОтрицательныхОстатков = КакоеТоНовоеЗначение; то новое значение пишется в ПЕРВУЮ запись! (проверил!) | |||
| 55
    
        Злопчинский 03.08.17✎ 16:38 | 
        (52) а вот хрен! смотри (54)     | |||
| 56
    
        aka AMIGO 03.08.17✎ 16:39 | 
        (54) убирай скорей эту бяку, С.М. :)     | |||
| 57
    
        Базис naïve 03.08.17✎ 16:39 | 
        Ты неправильную базу-то сохранил? ТиИ исправляет это?     | |||
| 58
    
        Ёпрст гуру 03.08.17✎ 16:39 | 
        (55) посмотри, что в индексном файле.     | |||
| 59
    
        Ёпрст гуру 03.08.17✎ 16:40 | 
        (57) ТиИ это никогда не исправляло.     | |||
| 60
    
        Ёпрст гуру 03.08.17✎ 16:40 | 
        +58 через IDXView.exe     | |||
| 61
    
        Злопчинский 03.08.17✎ 16:44 | 
        Итого, картинки и значения
 . ПО КОМПАНИИ = 4К5 ПО ФИРМЕ = 4К2 ПО УПР.АНАЛИТИКЕ = 4К3 . исходное: 1 запись = по компании 2 запись = по фирме если прочитать значения то получим 2 запись (и увидим ее в обработке настройка параметров учета) https://content.screencast.com/users/Che66/folders/Jing/media/f0d3cf4d-ff55-4c13-9e2d-4afe85fec069/2017-08-03_1623.png выполним код: Сообщить("до: "+Константа.КонтрольОтрицательныхОстатков); Константа.КонтрольОтрицательныхОстатков = Перечисление.СпособыКонтроляОстатковТМЦ.ПоУпрАналиткие; Сообщить("после: "+Константа.КонтрольОтрицательныхОстатков); в табло увидим: . до: по фирме после: по фирме . а в базе увидим что ПЕРВАЯ запись изменилась (в соответсвии с присвоением по коду) https://content.screencast.com/users/Che66/folders/Jing/media/0b488e4b-5728-4bf3-a255-7b3a53275ce6/2017-08-03_1636.png и тут встает интересный вопрос а почему !_при чтении берется ОДНА ЗАПИСЬ ТАБЛИЦЫ а почему !_при записи используется ДРУГАЯ ЗАПИСЬ ТАБЛИЦЫ ??? | |||
| 62
    
        Ёпрст гуру 03.08.17✎ 16:45 | 
        (61) всё из-за cdx файла. и задвоенной записи в 1sconst     | |||
| 63
    
        aka AMIGO 03.08.17✎ 16:45 | 
        cdx используется/не используется..     | |||
| 64
    
        Злопчинский 03.08.17✎ 16:48 | 
        (60) сейчас...     | |||
| 65
    
        Базис naïve 03.08.17✎ 16:49 | 
        А выгрузка-загрузка оставит одно значение?     | |||
| 66
    
        Злопчинский 03.08.17✎ 16:50 | 
        (62) задвоенная запись - ПОНЯТНО!
 но cdx - ведь ПОЗИЦИОНИРОВАНИЕ при чтении и при записи должно идти по ОДНОМУ И ТОМУ ЖЕ УКАЗАТЕЛЮ ? | |||
| 67
    
        Злопчинский 03.08.17✎ 17:04 | 
        А киньте кто в мыло e.meil@mail.ru эту прогу IDXView.exe
 кучу ччылок облазил - нет результата | |||
| 68
    
        Сияющий Асинхраль 03.08.17✎ 17:08 | 
        (0) Недавно пару дней угробил из-за того, что в ТиСе не мог поменять значение константы, ни программно, ни руками значение никак не менялось. Сделал полное тестирование базы, ничего не помогало. В итоге нашел где-то в нете подобный случай, где константу удалось привести в себя только заменой файла констант из старой копии базы. Мне помогло, попробуй, может и у тебя тот же случай...     | |||
| 69
    
        Масянька 03.08.17✎ 17:08 | 
        (66) Давно это было...
 Я все-таки (не слушая умных людей) в одной программе попробовала многие-ко-многим. Через пару месяцев вылезла ошибка (не помню уже досконально) - именно считывание одной, а запись другой. Тоже - dbf. Не знаю - как реализовано в семерке. Очень бы хотелось глянуть. | |||
| 70
    
        Злопчинский 03.08.17✎ 17:14 | 
        (68) точно так же как у меня в этом случае.
 в моем случае - причину нашли - две записи на константу вместо одной. непонятки с чтением/записью остались еще.. но лечить как минимум два способа. 1 способ. удалить константу и ввести ее заново в конфигураторе (НАДО ОСТОРОЖНО!, потому что для конст.контрольотрицостатков - пройдет норм, а для конст.номеррелиза - при неграмотных действиях поведет за особйо отработку ОбновленияИБ от начала времен (первый запуск), прочие траблы могут быть и для других констант) 2 способ. обрыть файл констант и удалить дубли руками. есть подозрение что Епрст про причину трабла (не дает исправлять) знал, но промолчал... ;-) | |||
| 71
    
        Злопчинский 03.08.17✎ 17:17 | 
        прогу получил. спсб.
 сейчас посмотрю что в индексах если осилю | |||
| 72
    
        Ёпрст гуру 03.08.17✎ 17:17 | 
        (70) А ?
 про дубли в 1сконст ? Есть такое, сталкивался, только не с константами, а с периодикой в них. Правил ручками, прямым запросом и не задумывался. ЗЫ: вот в справочниках, дубли id справочника, можно было и штатно поиметь, на кубани раньше была ветка, как получить сей эффект. | |||
| 73
    
        Злопчинский 03.08.17✎ 17:18 | 
        но вот откуда такие дубли появились - ЭТО ОЧЕНЬ ИНТЕРЕСНО.
 если чтение/запись/создание индекса для таких дублей предсказуемо та тоакую фишку можно использовать для блокировки изменения настроек... | |||
| 74
    
        Злопчинский 03.08.17✎ 17:20 | 
        (72) вот теперь и не с периодикой.
 есть у меня подозрение что это не следствие сбоя, как мне сказали, а что кто-то там из приходящих пошаманил ручками.. ибо когда взялся за ремонт - быстро столкнулся с непоняткой и взял паузу (копию базы), сказал - найдете спеца - если то вопросов нет.. - спеца нашли (но ко мне за помощью один чел обращался, а спеца нашли другие люди из конторы) - "пришел, поправил за 5 минут". вот мне и подозрительно это... вдобавок ибо Архангельск.. самые спецы - в Арзхангельске? | |||
| 75
    
        Злопчинский 03.08.17✎ 17:25 | 
        такс..
 записи дубли - в конце файла... https://content.screencast.com/users/Che66/folders/Jing/media/6b2fa0e4-3590-497f-b239-0c9e1fa7d93b/2017-08-03_1724.png | |||
| 76
    
        Злопчинский 03.08.17✎ 17:26 | 
        индекс - неуникальный в DD     | |||
| 77
    
        Злопчинский 03.08.17✎ 17:30 | ||||
| 78
    
        Злопчинский 03.08.17✎ 17:33 | 
        видно, что в индексе есть две записи - первая в начале файла, вторая в конце файла.
 . в качестве рабочей гипотезы примем следующее: 1. при записи пишет в ту запись, которая первая в индексе (типа перед записью позиционируемся на единственную запись, получаемцю по индексу), то есть для записи выбирается одна щзапись. 2. при чтении количество выбираемых записей неограничено и, похоже, что в качестве результата чтения берется ПОСЛЕДНЯЯ прочитанная по индексу запись... . как вам такое? | |||
| 79
    
        Злопчинский 03.08.17✎ 17:34 | 
        ну, вот.. не прошло и 20 лет как еще один секрет 1С 7.7 раскрыт!
 ура, товарищи! | |||
| 80
    
        Злопчинский 03.08.17✎ 17:35 | 
        (72) поправить - не проблема. главное - понять и простить...
 ;-) | |||
| 81
    
        Злопчинский 03.08.17✎ 17:42 | 
        фича:
 если дубль положить в правильную запись таблицы (в физическом следовании записей) - то можно сказать, что индекс построится _предсказуемо_: в индексе в дублирующихся записях первой записью будет запись с меньшим физ.номером записи (RecNO) - и здесь можно уже это юзать с "пользой", как например, хитрую защиту от от изменения настроек. так как настройки всегда применяться штатно будут "по чтению"... а изменение записи - ничем не поможет, так как изменяем первую запись, а применяться в работе будет всегда последняя... | |||
| 82
    
        Злопчинский 03.08.17✎ 17:43 | 
        фиг его знает... в данном моем случае то ли это сбой был, то ли преднамеренно кто-то так сделал - 100% не возьмусь утверждать, но имхается что не без вмешательства... ;-)     | |||
| 83
    
        Ёпрст гуру 03.08.17✎ 17:44 | 
        (82) понаделай побольше записей с одним ид, для достоверности     | |||
| 84
    
        Злопчинский 03.08.17✎ 17:51 | 
        (83) попробую, но не прям сейчас.. убегаю     | |||
| 85
    
        Злопчинский 03.08.17✎ 23:14 | 
        (83) посоветовался со спецом по движку (ходжик) - смысла не вижу.. растолковал мне он... в зависимости от "контекста" для извлечения нужных записей применяются разные методы поиска в индексном файле. и результат (конкретная запись) могут быть разные....
 . но фиг с вами... сделаю тестик "для достоверности" | |||
| 86
    
        Злопчинский 03.08.17✎ 23:15 | 
        а причина таких "дублей" которых не должно быть - это битые индексы часто или глюки железа     | |||
| 87
    
        Злопчинский 04.08.17✎ 01:50 | 
        (83) исключительно из-за пиетета... ;-)
 ЗначениеВСтрокуБД(Перечисление.СпособыКонтроляОстатковТМЦ.ПоФирме) = 4K2 ЗначениеВСтрокуБД(Перечисление.СпособыКонтроляОстатковТМЦ.ПоУпрАналитике) = 4K3 ЗначениеВСтрокуБД(Перечисление.СпособыКонтроляОстатковТМЦ.ПоЮрЛицу) = 4K4 ЗначениеВСтрокуБД(Перечисление.СпособыКонтроляОстатковТМЦ.ПоКомпании) = 4K5 ЗначениеВСтрокуБД(Перечисление.СпособыКонтроляОстатковТМЦ.НеКонтролировать) = 4K6 Генерим в константах вместо правильной одной записи значения константы несколько "неправильных" записей https://content.screencast.com/users/Che66/folders/Jing/media/1d4c3461-1273-4898-b4a7-caeb81786bfc/2017-08-04_0146.png | |||
| 88
    
        Злопчинский 04.08.17✎ 01:56 | 
        .. если попробовать прочитать значение константы - то должно получиться ПОСЛЕДНЕЕ (по индексному файлу), то есть "НеКонтролировать"
 проверяю (делаю все вживую вместе с написанием поста): так и есть: https://content.screencast.com/users/Che66/folders/Jing/media/cca42bce-6bb5-450d-bea9-7a36c2ec658a/2017-08-04_0152.png индекс: https://content.screencast.com/users/Che66/folders/Jing/media/897b8419-8143-4016-ae37-78e500f03977/2017-08-04_0155.png | |||
| 89
    
        Злопчинский 04.08.17✎ 01:57 | 
        попробуем изменить значение константы, установить его в 4К4 = ПоЮрЛицу:
 //******************************************* Процедура Сформировать() Сообщить("до: "+Константа.КонтрольОтрицательныхОстатков); Константа.КонтрольОтрицательныхОстатков = Перечисление.СпособыКонтроляОстатковТМЦ.ПоЮрЛицу; Сообщить("после: "+Константа.КонтрольОтрицательныхОстатков); КонецПроцедуры | |||
| 90
    
        Злопчинский 04.08.17✎ 01:59 | 
        что должно получиться:
 до: НеКонтролировать после: НеКонтролировать - то есть "трабла" - константа почему-то не поменялась.. (потому что мы ЧИТАЕМ и получим последнюю запись из индекса) | |||
| 91
    
        Злопчинский 04.08.17✎ 02:01 | ||||
| 92
    
        Злопчинский 04.08.17✎ 02:06 | 
        .. что мы увидим в файле DBF - по идее мы увидим что _первая_ запись станет равна 4К4 (ПоЮрЛицу) - как мы присваивали константе..
 проверяем... ЕСТЬ! https://content.screencast.com/users/Che66/folders/Jing/media/55b8ee2c-4ce1-47d1-a80b-36ff6251995a/2017-08-04_0204.png - то бишь при чтении мы позиционированы на одной записи, а при записи мы позиционированы на совсем другой... | |||
| 93
    
        Злопчинский 04.08.17✎ 02:08 | 
        и еще тестик, гифтик для Ёпрста...
 вернем все взад, см. (87) https://content.screencast.com/users/Che66/folders/Jing/media/1d4c3461-1273-4898-b4a7-caeb81786bfc/2017-08-04_0146.png | |||
| 94
    
        Злопчинский 04.08.17✎ 02:16 | 
        ..гифтик не получился.. хотел подшаманить индексный файо, чтобы первый запись с клбючом указывала не на первую запись а на третью например, тогда - по идее - при записи константы менялась бы не первая а третья запись в файле... не удалось - индексный файл не дает редактировать, а как так сделать - не знаю...     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |