morpher.ru 8 (499) 647 86 54
nowhere@morpher.ru
 
 

Компонента склонения по падежам фамилий и должностей в 1С

Внешняя компонента Morpher.dll предназначена для склонения по падежам фамилий, имен и отчеств, а также произвольных словосочетаний на русском и украинском языках. Для установки компоненты не требуется регистрировать ее в системном реестре и не нужны права администратора. Компонента работает под управлением Windows в любом звене 1С: на сервере, в тонком и толстом клиентах. Для работы компоненты не требуется подключение к Интернет.

В настоящий момент реализованы функции:

ФункцияРусскийУкраинский
Склонение фамилий, имен и отчествДаДа
Склонение произвольных словосочетанийДаПока нет
Определение рода (пола)ДаДа
Пропись чисел и денежных сумм в любом падежеДаПока нет

«Произвольные словосочетания» включают в себя должности, названия отделов, предприятий и организаций, например: директор по маркетингу, инженер-программист, отдел продаж.

Инструкция по установке и использованию

Внешняя компонента состоит из одного файла с названием Morpher.dll. Для установки достаточно поместить этот файл в папку bin 1С:Предприятия (в ту же папку, где находится файл 1cv8.exe).

Для проверки работоспособности компоненты откройте вашу конфигурацию в режиме Конфигуратора, кликните правой кнопкой на узле «Конфигурация» и выберите в появившемся меню пункт «Открыть модуль обычного приложения».

Добавьте в модуль следующий код:

Процедура ПриНачалеРаботыСистемы()

    Если ПодключитьВнешнююКомпоненту(
        "Morpher.dll", 
        "Морфер", 
        ТипВнешнейКомпоненты.Native) 
    Тогда
        морфер = Новый ("AddIn.Морфер.Русский");    
        Сообщить (морфер.Дательный ("Привет Приветыч"));
    Иначе
        Сообщить ("Не удалось ПодключитьВнешнююКомпоненту Morpher.dll.");
    КонецЕсли;

КонецПроцедуры    

Функции склонения

Названия функций соответствуют падежам русского языка:

Функция Вопрос Описание
Родительный кого? чего? Строит форму родительного падежа.
Дательный кому? чему? Строит форму дательного падежа.
Винительный кого? что? Строит форму винительного падежа.
Творительный кем? чем? Строит форму творительного падежа.
Предложный о ком? о чем? Предложный падеж без предлога. *
ПредложныйО о ком? о чем? Предложный падеж с предлогом О/ОБ/ОБО. *
ПредложныйВ где? Предложный падеж с предлогом В/НА. *

* См. Рекомендации по выбору варианта предложного падежа

Для украинского языка нужно создать объект "AddIn.Морфер.Українська", а список функций выглядит так:

Функція Питання Опис
Родовий кого? чого? Утворює форму родового відмінку
Давальний кому? чому? Утворює форму давального відмінку
Знахiдний кого? що? Утворює форму знахiдного відмінку
Орудний ким? чим? Утворює форму орудного відмінку
Мiсцевий на кому? на чому? Утворює форму мiсцевого відмінку без прийменника
Кличний Шановний... Утворює форму кличного відмінку

Каждая из вышеперечисленных функций принимает строковый параметр – словосочетание в именительном падеже и возвращает также строку – исходное словосочетание в форме заданного падежа.

Функция определения рода (пола)

Данная функция определяет грамматический род входного словосочетания. Роду однозначно соответствует пол, если словосочетание называет человека.

Для русского языка функция называется Род и может возвращать одно из следующих строковых значений:

Функция Возвращаемые значения Означает
Род Муж Мужской род или пол
Жен Женский род или пол
Сред Средний род
Множ Множественное число

Для украинского языка соответствующая функция называется Рід:

Функція Повертає значення Означає
Рід Чол Чоловічий рід або стать
Жін Жіночий рід або стать
Сер Середній рід
Множ Множина

В случае если входное словосочетание не содержит русских (или украинских) слов, функции склонения и определения рода возвращают встроенное значение Неопределено.

Функция прописи чисел и денежных сумм

Функция Пропись формирует пропись числа или денежной суммы в любом падеже. Функция принимает три параметра:

  1. Числовой параметр "сумма или количество". Может быть положительным, нулем или отрицательным. До 30 десятичных знаков до и после запятой. Для денежных сумм обычно допускается до 2 знаков после запятой, подробнее ниже.
  2. Строковый параметр "единица измерения". Произвольное именное словосочетание на русском языке: "российский рубль", "доллар", "процент", "календарный день".
  3. Строковый параметр "падеж" — первая буква названия падежа: И, Р, Д, В, Т, П. Параметр необязательный. По умолчанию используется именительный падеж.

Построение прописи денежных сумм ("Сумма прописью")

Вызов Результат
морфер.Пропись(123.45, "рубль") Сто двадцать три рубля 45 копеек
морфер.Пропись(123.45, "доллар США") Сто двадцать три доллара США 45 центов
морфер.Пропись(123.45, "евро") Сто двадцать три евро 45 центов

При желании можно использовать сокращенные названия денежных единиц, с точкой или без:

Вызов Результат
морфер.Пропись(123.45, "руб.") Сто двадцать три руб. 45 коп.
морфер.Пропись(123.45, "долл. США") Сто двадцать три долл. США 45 центов
морфер.Пропись(123.45, "грн.") Сто двадцать три грн. 45 коп.

В качестве денежной единицы допускается также использование трехбуквенных кодов валют международного стандарта ISO 4217, таких как RUB, USD, EUR и др. При этом в название денежной единицы автоматически включается название страны:

Вызов Результат
морфер.Пропись(123.45, "RUB") Сто двадцать три российских рубля 45 копеек
морфер.Пропись(123.45, "UAH") Сто двадцать три украинских гривны 45 копеек
морфер.Пропись(123.45, "KZT") Сто двадцать три казахских тенге 45 тиынов

См. также Полный список обозначений валют.

Пропись чисел с произвольной единицей измерения

Кроме денежных единиц, возможно построить пропись числа в сочетании с произвольной единицей измерения, например:

Вызов Результат
морфер.Пропись(10, "рабочий день") 10 (Десять) рабочих дней
морфер.Пропись(-2, "пункт") -2 (Минус два) пункта
морфер.Пропись(5.3, "процент") 5.3 (Пять целых три десятых) процента

Чтобы поставить результат в нужный падеж, укажите третьим параметром первую букву названия падежа (И, Р, Д, В, Т, П):

Вызов Результат
морфер.Пропись(2, "рабочий день", "Р") 2 (Двух) рабочих дней
морфер.Пропись(2, "рабочий день", "Д") 2 (Двум) рабочим дням
морфер.Пропись(2, "рабочий день", "П") 2 (Двух) рабочих днях

Например, чтобы сформировать фразу "В течение 30 (Тридцати) календарных дней", используйте код:

Сообщить("В течение " + Пропись(30, "календарный день", "Р"));

В редких случаях возникает необходимость изменить формулировку, выдаваемую функцией Пропись. Например, если вам нужно обозначить проценты знаком %, на не словом "процент". В таком случае можно разбить строку, возвращаемую функцией Пропись, на составляющие, ориентируясь на скобки, а затем склеить их так, как вам нужно. Например, выбросить слово "процент" и добавить знак %.

Обработка ошибок в функции Пропись

При некоторых входных данных функция Пропись может генерировать исключение. Конкретная причина ошибки отображается в окне Служебные сообщения. Функция ИнформацияОбОшибке() при этом возвращает только имя метода: "Ошибка при вызове метода контекста (Пропись)".

Чтобы предупредить аварийное завершение вашей программы по исключению, необходимо проверить параметры на допустимость перед вызовом функции Пропись. Особенно это актуально для программ, выполняющихся &НаСервере.

Ниже перечислены возможные ошибки и способы их предупреждения:

Слишком большое число. В целой части допустимо не более 30 значащих цифр.

морфер.Пропись(1000000000000000000000000000000, "единица")

Вы передали в функцию слишком большое число.

На практике числа, большие чем 1030, обычно означают ошибку в вычислениях. Если вам действительно нужна поддержка таких чисел, напишите автору программы и укажите необходимый диапазон.

Примечание: Указать "слишком маленькое" число невозможно. Числа от 10 – 17 и меньше автоматически округляются до 0.

Третий аргумент (падеж) должен быть одной из букв: И, Р, Д, В, Т, П.

морфер.Пропись(1, "единица", "А")

Вы передали в функцию неправильный идентификатор падежа.

Вставьте проверку на допустимость параметра. Значения параметра должны быть заглавными русскими буквами и строго соответствовать списку.

Единица измерения нерусская или не имеет нужной падежной формы.

морфер.Пропись(5, "edinitsa")

морфер.Пропись(5, "теля")

морфер.Пропись(5, "")

Второй параметр либо пустой, либо не является русским словом, либо представляет собой слово, у которого нет нужной падежной формы.

Укажите правильную единицу измерения. Если единица измерения неизвестна на момент составления программы (вводится пользователем, читается из файла...), то оберните вызов функции Пропись в блок Попытка ... Исключение.

Слишком много цифр после запятой. Для большинства валют допустимо не более 2 цифр; для белорусских рублей число должно быть целым.

морфер.Пропись(1.234, "рубль")

морфер.Пропись(123.4, "белорусский рубль")

Указанная денежная сумма содержит слишком много цифр после запятой.

Округлите сумму до нужного количества цифр. Почему функция Пропись не делает округление автоматически? Потому что это могло бы привести к ошибкам округления. Например, если 1 рубль поделить на троих и автоматически округлить результат до 0,33, то одна копейка потеряется: 0,33 * 3 = 0,99.

Что лучше – компонента или веб-сервис?

Если сравнивать компоненту 1C Morpher.dll с сервисом «Морфер.Сервер», то преимущества компоненты следующие:

  1. Работает быстрее.
  2. Не требует веб-сервера.

Преимущества локального веб-сервиса перед компонентой:

  1. Поддерживает функцию коррекции склонения при помощи пользовательского словаря.
  2. Позволяет интегрироваться с другими системами, кроме 1С.

Полезные ссылки

История изменений

Дата Версия  
05.07.2011 1.0.0.1 Первая версия
19.09.2011 1.0.0.1 Добавлен украинский язык (номер версии не изменился).
26.07.2012 1.0.1.0 Пополнение словарной базы, исправлена функция Рід.
10.11.2013 1.0.4.0 Добавлена функция прописи чисел и денежных сумм.
11.11.2013 1.0.5.0 При указании более двух цифр после запятой в денежной сумме теперь выдается ошибка.
10.12.2013 1.0.6.0 В украинский алгоритм добавлен учет «апострофов» вида Дерев”яна и Дерев"яна.
11.12.2013 1.0.7.0 Небольшое пополнение словаря (русского и украинского).
18.12.2013 1.0.8.0 Пополнение словаря.
26.08.2014 1.0.9.0 Пополнение словаря.
17.10.2014 1.0.9.0 Добавлен 64-битный вариант компоненты. Номер версии не изменился.
07.12.2014 1.0.10.0 Исправлена ошибка в функции Пропись. Ошибка проявлялась только для валюты "белорусский рубль". Сообщение об ошибке: "Русский : Ошибка в Morpher.dll: Исключительная ситуация при вызове функции Spell."
17.02.2015 1.0.11.0 Исправлена ошибка в функции Пропись. Ошибка проявлялась для сумм с числом копеек 0x. В результате выдавалось x0 копеек вместо 0x.
25.01.2016 1.0.13.0 В функции Пропись учтены слова-исключения "человек" и "год". Пополнен словарь программы.
17.01.2017 1.0.14.0 В функции Пропись исправлена ошибка «ноль годов». Добавлены копейки к белорусскому рублю в связи с его деноминацией. Старый (до июня 2016 г.) белорусский рубль имеет обозначение BYR, новый — BYN. Пропись BYR не содержит копеек, а BYN содержит.

Купить Morpher.dll

  «Бейсик» «Профи» «Бизнес» «Франчайзи»
Функция склонения
Поддержка
Функция определения рода
Функция прописи чисел
64-битная версия
Возможность распространения
Цена 9000 руб. 11000 руб. 29000 руб. 49000 руб.
  Купить Купить Купить или
Заключить договор
Купить или
Заключить договор

Цены включают в себя все налоги. При заключении договора к этим ценам прибавляется административный сбор 2500р.

Лицензия «Франчайзи» предназначена для фирм, специализирующихся на разработке конфигураций на заказ и предусматривает возможность распространения компоненты в составе продаваемых конфигураций. Остальные лицензии предназначены для использования в пределах одного предприятия или организации. Ни одна из приведенных выше лицензий не предназначена для приобретения фирмой 1С. Если вы представитель фирмы 1С и заинтересованы в приобретении компоненты, свяжитесь с нами.

Поддержка включает в себя консультации по настройке и использованию компоненты, а также устранение дефектов, таких как несоответствие документации, медленная работа или зависания. Исправление ошибок склонения не входит в поддержку, хотя обычно они исправляются довольно быстро: сообщить об ошибке в склонении.

Скачать компоненту Morpher.dll вы сможете сразу после оплаты на сайте. Процедура оплаты следующая. После нажатия на кнопку Купить вы попадете на сайт платежной системы OnPay.ru, где вам будет предложено множество способов оплаты, в том числе WebMoney, Яндекс.Деньги и банковские карты. Процесс оплаты займет несколько минут. По завершению нажмите «Вернуться на сайт продавца» и вы сразу же сможете скачать компоненту. Вам таже будет выслано письмо со ссылкой для скачивания.


Комментарии

Добавить комментарий
1sneg 16.11.2011 22:19 UTC

морфер = Новый("AddIn.Морфер.Русский");

сотрудник = Справочники.Сотрудники.Выбрать();

сотрудник.Следующий();

Сообщить (морфер.Дательный (сотрудник.Наименование));


{МодульОбычногоПриложения(28)}: Поле объекта недоступно для записи (Наименование)
Сообщить (морфер.Дательный (сотрудник.Наименование));

Как побороть?

Сообщить (морфер.Дательный ("Телегин Петр Кузьмич"));

Работает нормально



Сергей Слепов 26.11.2012 20:46 UTC

Не знаю, почему 1С требует права записи в это поле. Проблема легко обходится присваиванием значения поля переменной:

фио = сотрудник.Наименование;

Сообщить (морфер.Дательный (фио));



Иван 29.11.2012 14:04 UTC

Можно без внешней компоненты:
http://ask.8c1.ru/questions/141/%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D1%8F-%D0%B4%D0%BB%D1%8F-%D1%81%D0%BA%D0%BB%D0%BE%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F-%D1%84%D0%B0%D0%BC%D0%B8%D0%BB%D0%B8%D0%B9-%D0%B2-1%D1%81?page=1&focusedAnswerId=147#147



Сергей Слепов 01.12.2012 21:10 UTC

Можно, конечно. Разница только в качестве склонения:

Сравнительное тестирование решений задачи автоматического склонения

а также в наборе поддерживаемых функций - определение рода, склонение произвольных словосочетаний (отделов, продуктов...), поддержка украинского.

"Разнообразие - соль жизни" (Уильям Коупер)



Никита 11.07.2013 06:19 UTC

Будет ли дальнейшее развитие 1с-версии компоненты?
Глядя на выпуски под .Net, появляется мысль, что 1с-реализация несколько заброшена...



Сергей Слепов 16.07.2013 10:00 UTC

Никита, версия для 1С развивается: пополняется словарь, улучшается качество склонения. Так как эти изменения постепенные, они не отражаются в истории изменений. Модули склонения для 1С, Excel и Delphi имеют одну кодовую базу, поэтому улучшения в одном продукте сразу же отражаются в остальных. Компонента для 1С ни в коем случае не заброшена и вы можете рассчитывать на тот же уровень поддержки, что и для остальных продуктов.



Евгений 12.11.2013 10:22 UTC

Можно добавить функцию перевода в Именительный падеж. В компоненте 1С NameDekl такая функция имеется.



Евгений 12.11.2013 11:20 UTC

Морфер.Родительный("Завод Красный октябрь") возвращает "Завода красного октябрь"



Сергей Слепов 12.11.2013 12:21 UTC

Евгений, как указано в ограничениях сочетания "нарицательное + собственное" нужно склонять раздельно.

Перевод в именительный планируется, но сроков пока назвать не могу.



Сергей 03.04.2014 13:25 UTC

Здравствуйте, скажите пожалуйста для чего было запрещено использование пустой единицы измерения, как здесь - морфер.Пропись(5, "")?
Ведь не всегда нужно записывать число с какой-либо единицей измерения. Частенько при заполнении форм необходимо вывести просто число прописью без привязке к единице измерения.



Сергей Слепов 03.04.2014 14:48 UTC

Хороший вопрос! Рад, что вы спросили. Дело в том, что некоторые русские числительные склоняются по родам, а род задается как раз единицей измерения (два яблока - две груши; один день - одна ночь - одни сутки). Если для вас приемлемо выдавать сочетания вида "количество груш: два" или "количество суток: двадцать один", то передайте в качестве единицы измерения любое слово мужского рода, а в выходной строке его удалите.

В винительном падеже имеет значение также одушевленность:
Приобрели два коня (спортивный снаряд)
Приобрели двух коней (животное)

Или приведите ваш пример, где единица измерения совсем не играет роли (для любого числа). Может быть, я чего-то не знаю?



Сергей 04.04.2014 10:34 UTC

Спасибо, за ответ, я как-то об этом и не подумал. Тогда всё правильно. Но мне кажется в таком случае есть смысл добавить ещё один необязательный параметр, который будет указывать выводить единицу измерения или нет.
И для справки, в этой компоненте как-нибудь учитывается одушевлённость в винительном падеже?



Джангар 04.07.2014 11:30 UTC

Добрый вечер! скажите пожалуйста, где это dll скачать?



Сергей Слепов 12.07.2014 05:51 UTC

Джангар, DLL можно только купить.



Максим 03.10.2014 07:26 UTC

Добрый день!
Скажите пожалуйста, есть ли (или планируется) функция преобразования рода.
Практическая задача - генерировать наименования номенклатуры. Например, есть "стакан" и "тарелка", есть свойство "стеклянный". Получается наименование "Стакан стеклянный" и "Тарелка стеклянный", а хочется видеть "Тарелка стеклянная".



Сергей Слепов 04.10.2014 08:30 UTC

Максим, эта задача состоит из двух подзадач:
1) Определить род существительного.
2) Изменить род прилагательного на род существительного.
Первую задачу компонента решает, вторую вы легко можете решить сами, заменив в прилагательном конечные буквы в соответствии с родом по следующей таблице:

-гий -гая -гое -гие
-кий -кая -кое -кие
-хий -хая -хое -хие
-ий -яя -ее -ие
-ой -ая -ое -ые
-ый -ая -ое -ые

Если возникнут вопросы, пишите.



Иван 14.10.2014 11:56 UTC

Здравствуйте!
Подскажите, пожалуйста, из-за чего на серверах с ОС Windows Server 2008 x64 и Windows Server 2012 x64 может не подключаться библиотека в 1c? Т.е. на моей локальной машине с win7 x64 всё работает нормально, а в абсолютно идентичном коде на серверах ПодключитьВнешнююКомпоненту("Morpher.dll", "Морфер", ТипВнешнейКомпоненты.Native) не срабатывает, т.е. просто возвращает "Ложь". Возможно, нужны какие-то дополнительные библиотеки, .net, или что-то в этом роде?



Сергей Слепов 14.10.2014 12:36 UTC

Здравствуйте, Иван! Библиотеке Morpher.dll не нужен .NET. Она зависит только от одной системной библиотеки kernel32.dll:
Morpher.dll dependencies.
Проверьте, что вы скопировали Morpher.dll в папку bin нужной версии 1C (их может быть установлено несколько). Если что, пишите мне лично.



Денис 17.12.2014 06:36 UTC

Доброго времени суток.

Будет удобно, если в функции прописи появится четвертый параметр, отвечающий за форму вывода результата: "число + (пропись) + единица измерения" или "пропись + единица измерения".

Сейчас форма вывода зависит от того, является ли единица измерения валютой или чем-нибудь иным, но зачастую нужно принимать решение самостоятельно.

Заранее спасибо.



Сергей Слепов 18.12.2014 02:08 UTC

Денис, поясните на примере, что у вас не получается сделать?



Денис 18.12.2014 06:50 UTC

На данный момент пропись выдает следующее:
а) 10, день = 10 (Десять) дней,
б) 10, рубль = Десять рублей.

Хотелось бы для валют в некоторых случаях получать Десять рублей, а в некоторых – 10 (Десять) рублей.

На данный момент приходится выводить так: 10 руб. (Десять рублей), где в скобках выводится результат морфера.



Сергей Слепов 23.12.2014 22:46 UTC

Денис, я понимаю ваше желание. Проблема в том, что способов записи "суммы прописью" как минимум несколько десятков. Даже если у меня найдутся силы учесть их все с помощью добавления новых параметров в функцию Пропись, пользоваться такой функцией будет значительно сложнее, так как вам придется подбирать нужную комбинацию параметров из примерно такого списка:

Названия денежных единиц писать полностью или сокращенно?
Выводить копейки числом или прописью или и так, и так?
Брать в скобки только пропись или все выражение, следующее за суммой цифрами?
Писать пропись со строчной или заглавной буквы?
Писать ли названия денежных единиц после всей суммы цифрами?
Как отображать ноль копеек: 00, словом «ровно» или знаком =?
Как отображать ноль рублей?
и т.п.

Насколько я понимаю, вам удалось достичь желаемого результата имеющимися средствами. Всю нужную информацию функция Пропись выдает. Разобрать ее на части и собрать, как вам надо - со скобками, точками и прописными/строчными буквами - не так уж сложно. Если не получится, пишите сюда, вместе напишем функцию на языке 1С, которая преобразует результат функции Пропись к нужному вам виду.



Семен 26.02.2015 05:02 UTC

Здравствуйте,
подскажите пожалуйста, чтобы компонента для 1С работала на сервере 2008 R2 x64 необходимо покупать 64 битную ("Бизнес") версию или достаточно купить "Профи"?



Сергей Слепов 27.02.2015 20:59 UTC

Семен, разрядность операционной системы в данном вопросе имеет второстепенное значение. Понятно, что на 32-битной системе можно запускать только 32-битные приложения. На 64-битной ОС можно запускать 64-битные и 32-битные приложения. Решающее значение имеет разрядность вашего сервера 1С (1cv8s.exe) – разрядность компоненты Morpher.dll должна совпадать с ней, чтобы компонента могла выполняться на сервере. С другой стороны, для выполнения на клиенте (толстом или тонком, но не веб), достаточно 32-битной компоненты.



Семен 28.02.2015 10:22 UTC

Спасибо, понятно.
Еще вопрос, локальный веб-сервер входит ли в состав какого либо пакета?
И если его необходимо покупать отдельно, то пожалуйста сориенти́руйте по ценам(отправьте на почту, если возможно).



Сидоров Сергей 30.10.2015 07:48 UTC

Пытаюсь использовать компоненту в режиме управляемого приложения в 1С. Компонента не подключается когда приложение выполняется на сервере 1С. При попытке регистрации на сервере компоненты файл оказывается не подходящим. У нас есть вариант что не подходит версия компоненты для х64 ОС. Вопрос в том можно ли каким нибудь способом использовать компоненту на сервере 1С без ее регистрации, либо можно ли получить х64 вариант компоненты. Под сервером 1С я имею в виду не физический сервер а режим работы платформы 1С.



Сидоров Сергей 30.10.2015 08:03 UTC

В данный момент приобретена версия бейсик за 1500. Будет ли работать компонента на сервере 1с х64, с операционной системой х64 если мы приобретем вариант "Бизнес" который включает версию х64. Хотелось бы иметь уверенность что проблема именно в неподходящей разрядности перед покупкой.



Сергей Слепов 03.11.2015 08:05 UTC

Сергей, судя по тому, что у вас компонента работает на клиенте (32-битном) и не работает на 64-битном сервере, да, скорее всего дело в разрядности сервера. Да, вариант "Бизнес" включает в себя 64-битную компоненту, которая работает на 64-битном сервере.



Денис 03.05.2016 10:30 UTC

Добрый день.

В связи с деноминацией белорусского рубля (с 1 июля 2016 года) для прописи сумм в этой валюте необходимо будет использовать копейки.

В идеальном случае хотелось бы выводить прописи в старых документах без копеек. Но для этого нужно либо дифференцировать старую валюту и новую (по кодам она отличается, но это все тот же белорусский рубль), либо вводить дополнительный необязательный параметр.

Буду признателен, если к "моменту икс" (вовремя) выйдет оптимальное обновление.

Заранее спасибо.



Добавить комментарий


 

Библиотеки

Заметили опечатку? Выделите слово мышкой и нажмите Ctrl-Enter. Система Orphus

© Сергей Слепов, 2003 - 2017. Перепечатка материалов сайта только с разрешения автора.