Конвейер проверки качества кода

Публикация № 1117485

Разработка - Инструментарий разработчика

Sonar SonarQube BSL АПК ACC качество Jenkins Pipeline Конвейер ГитКонвертор EDT Oscript

118
Jenkinsfile для выполнения проверки качества кода. Собирает информацию с АПК, EDT и BSL-LS. Сопоставляет ошибки с гит-репозиторием, выгруженным ГитКонвертором. Отправляет в Сонар.

Про управление качеством кода - Управление техническим долгом - Концепция Continuous Inspection и Управление качеством кода.

Использование сонара - Управляй качеством кода 1С с помощью SonarQube

Что умеет

Как работает

Установка и настройка инфраструктуры

    Установить ГитКонвертор

    Установить SonarQube и плагины

    Установить 1С:EDT

    Установить Дженкинс

    Установить и настроить SonarScanner для дженкинса

    Создать каталог инструментов

    Установить oscript и библиотеки

    Установить и настроить АПК

    Создать репозиторий для дженкинсфайла

    Настроить оповещения

Добавление проекта к проверке

    Настроить ГитКонвертор

    Настроить АПК

    Создание первого конвейера

    Указать параметры запуска конвейера

    Создание второго конвейера

    Расчет покрытия тестами

 

Что умеет

 

  • Собирает ошибки с 3х анализаторов: АПК, EDT и BSL-LS и отправляет в Сонар.
  • Используется единый дженкинсфайл для всех проектов. Если нужно улучшить конвейер - делается это в одном месте.
  • Работает по выгрузке ГитКонвертора. А ГитКонвертор выгружает проект в формате EDT.
  • Вырезает из списка ошибок все объекты на замке. Если конфигурация на поддержке и поменять только один модуль - будут показаны ошибки только по этому модулю.
  • Переопределяет параметры ошибок. Можно понизить/повысить важность ошибок. И даже полностью пропустить.
  • Параметры переопределения могут быть как едиными - лежать в репозитории рядом с дженкинсфайлом. Так и частными для каждого проекта.
  • Можно вывести покрытие кода.

Как работает

 

Разработчик помещает свои изменения доработки в хранилище. Через некоторое время получает уведомление о завершении проверок. Заходит в SonarQube и видит список замечаний по своему коду.

В это время внутри:

  • ГитКонвертор получает все новые изменения и коммитит их в репозиторий.
  • Вручную, по расписанию или по событию стартует конвейер. Первым шагом он получает и актуализирует дженкинсфайл.
  • Инициализирует все нужные переменные, заполняет пустые параметры значениями по умолчанию и готовит каталоги. Выполняет оповещение о старте конвейера.
  • Получает репозиторий с кодом в подкаталог “repo”.
  • Выполняется выгрузка ошибок из АПК, EDT и BSL-LS в джсон-файлы.
  • Джсон-файлы обрабатываются оскриптом - вырезаются файлы на поддержке, переопределяются данные ошибок.
  • Если указана папка с файлами замеров, то они конвертируются в файл покрытия.
  • По исходникам получается текущая версия конфигурации. Переопределяется джава. Собираются параметры для работы СонарСканера и запускается.
  • После отработки сканера конвейер ставится на паузу и ждет ответа от сервера сонара. По ответу можно сломать сборку, если порог не пройден или просто сообщить статус проверки оповещением.

Установка и настройка инфраструктуры

Установить ГитКонвертор

 

https://github.com/1C-Company/GitConverter

Он нужен для конвертации хранилища в гит-репозиторий. Когда SonarQube работает по гит-репозиторию - появляется информация о разработчике, который внес ошибку.

ГитКонвертор можно установить на тот же сервер, где будут располагаться и другие инструменты. Плюсы от совместного размещения - экономия на количестве серверов, все в одном месте, переиспользование инструментов. Из минусов - возможные конфликты за ресурсы, уменьшение надежности.

Установить SonarQube и плагины

 

Про установку хорошо написано в статье Управляй качеством кода 1С с помощью SonarQube

Сканер ставить не надо. Будет использоваться плагин дженкинса.

Комьюнити плагин для сонара доступен теперь и в маркете сонара.

Установить 1С:EDT

 

https://edt.1c.ru/

Если ГитКонвертор установлен на этом же сервере, то едт уже был установлен ранее. Второй раз можно не ставить.

Установить Дженкинс

 

Про установку хорошо написано в статье Переводим рутину ручного тестирования 1C на рельсы Jenkins-а и ADD. Именно из-за этой статьи я решил сделать единый дженкинсфайл для проверки качества кода. И в ней же узнал как это сделать.

Слейв ноду нужно обязательно настроить. АПК отказывается корректно работать, если дженкинс запущен как сервис.

Установить и настроить SonarScanner для дженкинса

 

SonarScanner for Jenkins” - https://docs.sonarqube.org/latest/analysis/scan/sonarscanner-for-jenkins/

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

В конфигурации системы:

В конфигурации глобальных инструментов:

Имя сервера “Sonar” и имя сканера “SonarQube Scanner” используются в дженкинсфайле, поэтому их лучше не менять. Или поменять и в дженкинсфайле.

Создать каталог инструментов

 

На сервере создать папку “C:/Sonar/”. Не обязательно именно этот путь, но далее буду оперировать именно им.

Скачать последний релиз обработки с https://github.com/otymko/acc-export/releases. Положить по адресу "C:/Sonar/bin/acc-export.epf".

Скачать последний релиз BSL-LS c https://github.com/1c-syntax/bsl-language-server/releases.

Положить по адресу "C:/Sonar/bin/bsl-language-server.jar".

Скачать 11 JDK https://jdk.java.net/archive/. Положить по адресу “C:/Sonar/jdk”. Полный путь к java выглядит вот так "C:/Sonar/jdk/bin/java.exe". Прописывать в переменные среды не надо, а то будет конфликт с 8ой джавой для едт.

Установить oscript и библиотеки

 

http://oscript.io/

choco install onescript-cli

Скачать и распаковать архив из приложенных файлов и запустить install.bat. Будут установлены приложения vanessa-runner, perf-measurements-to-cover, stebi и библиотека v8metadata-reader.

Установить и настроить АПК

 

https://releases.1c.ru/project/ACC

Установить нужно в каталог “C:/Sonar/ACC” и создать пользователя “Admin” без пароля.

Создать репозиторий для дженкинсфайла

 

Форкнуть или скопировать репозиторий https://github.com/Stepa86/jenkins-pipeline-1C-to-sonar. Донастроить под себя при необходимости. Адрес репозитория с дженкинсфайлом понадобится позднее.

Настроить оповещения

 

В моем дженкинсфайле используется плагин “RocketChat Notifier” для отправки оповещений в рокет.чат. Если вы не используете в работе рокет.чат, то нужно самостоятельно найти и скачать подходящий вам плагин и заменить в дженкинсфайле строки “rocketSend” на вызов своего плагина.

Добавление проекта к проверке

Настроить ГитКонвертор

 

Настроить и запустить конвертацию хранилища по инструкции от ГитКонвертора.

Для работы скрипта по вырезанию файлов на поддержке нужна информация о поддержке. Поэтому в настройках нужно снять флаг “Удалять конфигурации поставщиков”.

После снятия флага начнет выгружаться информация о поддержке и cf-файлы конфигураций, cf-файлы нужно добавить в “.gitignore”.

Значения в зеленых полях потребуются в дальнейшем.

Обязательно каталог выгрузки в репозиторий должен быть на латинице. Если там кириллица - Дженкинс очень непредсказуемо себя ведет.

Настроить АПК

 

Запуск проверки АПК ищет конфигурацию по наименованию и использует ее.

Создать новую конфигурацию.

В наименование указать “Каталог выгрузки в репозитории” из ГитКонвертора.

В “Путь к источнику проверки” указать “Адрес хранилища”. Заполнить пользователя и его пароль для доступа к хранилища.

Важно, чтобы пользователи хранилища для ГитКонвертора и АПК были разными. Их никто не должен больше использовать. Иначе это приведет к конфликтам получения изменений из хранилища.

Дальше нужно настроить список проверяемых требований (выбрать все, например) и исключений, проверить подключение к базе после записи и закрыть АПК.

Стоит запустить полную проверку вручную из АПК, чтобы убедится в работоспособности.

Создание первого конвейера

 

Перейти в веб-интерфейс Дженкинса. По умолчанию это http://localhost:8080

Слева сверху “Создать Item”.

Имя Item'а - произвольное. Лишь бы было понятно что это. Лучше латиницей и без пробелов.

Тыкнуть на Pipline и нажать Ок внизу.

Откроется конфигурация джоба.

Перейти к разделу Pipline.

 

В Definition выбрать Pipline script from SCM.

В SCM - Git.

Repository URL - адрес репозитория с дженкинсфайлом. В моем случае это https://github.com/Stepa86/jenkins-pipeline-1C-to-sonar.git

В Credentials добавить/выбрать параметры доступа к этому репозиторию.

Стоит сразу создать Credentials для доступа к репозиторию с исходниками конфигурации и скопировать его ID. Он понадобится чуть позднее.

В Script Path - путь к дженкинсфайлу в репозитории. В моем случае это “Sonar/Jenkinsfile”.

Сохранить. И в окне джоба слева нажать на “Собрать сейчас”.

Если все настроено верно, то отработает первый шаг - получение дженкинсфайла, а потом сразу все упадет.

Указать параметры запуска конвейера

 

Обновить страницу джоба. Слева сверху кнопка “Собрать сейчас” превратится в “Собрать с параметрами”. Нажать на нее. Откроется окно ввода параметров.

 

PROJECT_NAME - ключ проекта. Именно под этим именем будет создан проект в сонаре. Именно по нему выполняется поиск конфигурации в АПК. Сюда вписываем наименование конфигурации АПК. Она же - Каталог выгрузки в репозитории”.

git_repo_url - адрес репозитория git из ГитКонвертора.

git_repo_branch - имя ветки в репозитории.

sonar_catalog - каталог инструментов C:/Sonar/

PROPERTIES_CATALOG - каталог в проекте с переопределенными настройками.

ACC_check - Запуск проверки АПК перед выгрузкой ошибок.

ACC_recreateProject - Пересоздание конфигурации в АПК. Сбрасывает кэш проверки. АПК работает дольше, но все данные переполучаются заново. Актуально, когда ошибка исправлена, а АПК этого исправления “не увидела” из-за кэша.

STEBI_SETTINGS - путь к джсон файлу с переопределением ошибок. Может быть как общим из репозитория с дженкинсфайлом, так и частным для проекта.

jenkinsAgent - имя ноды на которой нужно запускать проверку. Критично к регистру.

EDT_VERSION - версия едт, которую нужно использовать.

perf_catalog - каталог с файлами замера производительности .pff. По ним создается файл с данными покрытия.

git_credentials_Id - ID Credentials для доступа к репозиторию.

rocket_channel - имя канала для отправки оповещений.

После указания всех параметров - Собрать.

Если упало на каком-то шаге. По логам определить и устранить проблему и еще раз нажать на “Собрать с параметрами”.

Если проверка АПК отработала и в конфигурации больше ничего не менялось, то для отладки и ускорения процесса можно перезапускать конвейер со снятой галкой ACC_check.

Из джобы можно перейти в проект сонара и посмотреть, что ошибки загружены.

Создание второго конвейера

 

Аналогично созданию конвейера нужно нажать на Создать Item, ввести имя, тыкнуть в Pipeline и внизу ввести имя существующего для копирования из него настроек.

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

Расчет покрытия тестами

 

Адекватного способа рассчитать покрытие тестами в 1С на данный момент нет. Я костылю так:

Разворачиваю тестовую базу загрузкой из хранилища.

Захожу в конфигуратор. Из него запускаю менеджер тестирования под отладкой.

В менеджере тестирования подключаю тест-клиента под отладкой.

В конфигураторе включаю замеры.

Запускаю выполнение тестов.

Когда все тесты завершились, сохраняю все замеры в спец. папку, предварительно ее очистив. Эту спец. папку указываю в параметрах конвейера.

 

118

Скачать файлы

Наименование Файл Версия Размер
Скрипты для работы конвейера:
.zip 35,44Kb
03.09.19
10
.zip 35,44Kb 10 Скачать

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо
1. vlad.frost 186 04.09.19 08:18 Сейчас в теме
Лайк поставил, скрипты скачал!
2. BlizD 660 04.09.19 09:04 Сейчас в теме
3. Pr-Mex 123 04.09.19 16:30 Сейчас в теме
4. Yashazz 2860 04.09.19 18:58 Сейчас в теме
Это вообще кто-нибудь использует? Ну вот по-честному, реально, хоть один живой пример известен?
5. Stepa86 1258 04.09.19 19:00 Сейчас в теме
(4) Мы в нашей компании используем именно этот инструментарий именно в этом виде.
6. Yashazz 2860 04.09.19 19:04 Сейчас в теме
(5) Ну это-то понятно. Сами для себя изобрели и сами мучаетесь. У вас что, миллиардный оборот, конфиги пилите уровня УХ, и сотни кодеров, что понадобились настолько адские ухищрения, как "конвейер", простихосспади, контроля кода? Его и у 1С-то нет)
triviumfan; +1 Ответить
7. Stepa86 1258 04.09.19 19:07 Сейчас в теме
(6) И с чего вы взяли, что мы мучаемся? И с чего вы взяли, что это настолько адские ухищрения? С чего вы взяли, что этого нет у самого 1С? Нравится писать говнокод, ну продолжайте писать, чо тут то токсичность выплескивать?
drmaxart; A_Max; VasDmi666; kuzyara; Wilka; support; sorb; pavlov_dv; headMade; zeegin; o.nikolaev; +11 Ответить
9. Yashazz 2860 04.09.19 19:47 Сейчас в теме
(7) Да просто ни в одной компании я не видел даже просто аудита и контроля кода. Не то что автоматизации этого процесса. Ну то есть на практике не видел, на бумаге-то много чего было. Не окупается, и не работает толком, выглядит красиво и вкусно, а практического выхлопа ноль. А я много чего видел. В основном - жутковатого.

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

Вы на личности-то не переходите. Что есть говнокод - вопрос интересный, и не след полагать говнокодом всё, что не прошло некую верификацию. Насчёт 1С всё элементарно - я это знаю из первых рук, по крайней мере по состоянию на 2016 год. Да гляньте их поделки, сами поймёте)))

А что, качество запросов ваша система тоже проверяет? По заветам Рупасова?)
Yakud3a; Soloist; support; +3 Ответить
10. zeegin 44 04.09.19 20:10 Сейчас в теме
(9) Вам очень не повезло с работодателями.
Это используют. Не всегда в таком виде, иногда какие-то компоненты заменяют на другие.

После того, как втягиваешься - не понимаешь как это можно не использовать :)
Попробуйте потратить пару недель своего времени и разобраться. Сложно только по началу и от незнания процессов и инструментов.
A_Max; rystam_atai; Stepa86; pavlov_dv; +4 Ответить
11. Yashazz 2860 04.09.19 20:50 Сейчас в теме
(10) Процессы-то я знаю и теорию знаю. И время тратил, и разбирался. А вот раздолбайство и бардак таковы, что это просто нельзя использовать. Человеческий фактор и энтропия коллективных взаимодействий, искажения связей в больших системах итд - всё это сводит на нет любую красивую теорию. Это как эйджилы всякие использовать - натягивание совы на глобус.
Что касается "иногда какие-то компоненты" - через год попыток использования таких систем в 95% случаев всё сползает в прежний бардак, только "бухгалтерии прибавляется", как в том анекдоте. А дальше отдельно ритуальные телодвижения и отдельно грустная реальность.
32. kuzyara 797 06.09.19 06:03 Сейчас в теме
(11) наш пайплайн
Прикрепленные файлы:
12. olegtymko 383 05.09.19 04:27 Сейчас в теме
(9) Мы используем code-review и SonarQube очень в этом помогает.
13. JohnyDeath 294 05.09.19 07:32 Сейчас в теме
(9)
Да просто ни в одной компании я не видел даже просто аудита и контроля кода. Не то что автоматизации этого процесса.


Возможно потому и не используют, что руками очень сложно-долго-дорого?
zeegin; olegtymko; Stepa86; +3 Ответить
16. VmvLer 05.09.19 13:07 Сейчас в теме
согласен с (9)

не буду отрицать, что кому-то подобный продукт полезен в качестве исключения, но то
это необходимо очень спорно.

даже если разобраться и использовать, все равно, я считаю, что выхлоп мал и есть более простые пути.
17. Stepa86 1258 05.09.19 13:13 Сейчас в теме
(16) В https://infostart.ru/public/1096770/ я как раз писал кому это не надо, кому можно, а кому обязательно.

И очень интересно услышать про более простые пути в повышении качества кода, чем использование статических анализаторов. Про двойное чтение кода и просто писать без ошибок можно не рассказывать.
19. olegtymko 383 05.09.19 13:22 Сейчас в теме
(16) А какие вы более простые пути используете?
21. VmvLer 05.09.19 13:25 Сейчас в теме
22. Stepa86 1258 05.09.19 13:35 Сейчас в теме
(21) Эффект Да́ннинга — Крю́гера — метакогнитивное искажение, которое заключается в том, что люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации[1]. Это приводит к возникновению у них завышенных представлений о собственных способностях, в то время как действительно высококвалифицированные люди, наоборот, склонны занижать оценку своих способностей и страдать недостаточной уверенностью в своих силах, считая других более компетентными. Таким образом, менее компетентные люди в целом имеют более высокое мнение о собственных способностях, чем это свойственно людям компетентным (которые к тому же склонны предполагать, что окружающие оценивают их способности так же низко, как и они сами).
Wilka; zeegin; +2 Ответить
24. VmvLer 05.09.19 15:28 Сейчас в теме
(22) надеюсь вы это взяли из конспекта своих лекций.
в приличных вузах это излагают по предмету "инженерной психологии".

ну а по факту что?

невинное изложение субъективного мнения, идущего вразрез
хвалебного "одобрямс крута", вызывает у вас эмоциональные-мелочные потуги
закрасить собеседника в черные тона.

молодой человек, никто не умаляет вашего таланта и мощи нетленки, но
если вы не научитесь управлять эмоциями и видеть главное, то не все
хорошо будет "в датском королевстве".

смысл мною сказанного станет понятен спустя 10...20 лет, если
в то время хоть что-то будет иметь толику смысла.
23. olegtymko 383 05.09.19 13:39 Сейчас в теме
(21) Вот и поговорили. Код наверное сразу без ошибок и тех. долга пишется и в проде проблем не бывает)
VasDmi666; JohnyDeath; +2 Ответить
33. Soloist 488 06.09.19 10:14 Сейчас в теме
(19) Есть, например Booking практически не тестирует. Очень интересный подход изложен в статье https://bronevichok.ru/blog/2015/04/26/engineering-at-booking.com.html
34. Stepa86 1258 06.09.19 10:23 Сейчас в теме
(33) Не увидел в статье, что они не пользуются статистическими анализаторами кода. Да, тестами не занимаются отдельно - это головная боль каждого конкретного разработчика, и они сами как могут тестируют. Но про использование/не использование стат.анализа ни слова.
35. Soloist 488 06.09.19 11:28 Сейчас в теме
(34) Да, не совсем корректный мой ответ. Просто из-за описанной сложности внедрения такого механизма сразу опускаются руки и ищутся альтернативные, или оправдывающие варианты. Для тестирования в некоторых случаях это можно придумать. А вот с остальным хочется такой конвейер, но сил не хватает на подъем всего этого. Ведь так много надо знать.

Механизм крутой. И я желаю сообществу oscript дальнейшего развития всего этого, чтобы снизить планку сложности вхождения в этот мир автоматизации.
31. JohnyDeath 294 05.09.19 16:28 Сейчас в теме
(16)
и есть более простые пути.

Какие?
15. kuzyara 797 05.09.19 12:59 Сейчас в теме
(4) Используем, используем.
26. stepan96 05.09.19 15:59 Сейчас в теме
(4) Мы сейчас разворачиваем у себя. И в продуктив выводим. И статический анализ и автотесты
Labotamy; +1 Ответить
8. o.nikolaev 193 04.09.19 19:15 Сейчас в теме
Да это просто праздник какой-то! (Карабас Барабас) Именины сердца!
14. JohnyDeath 294 05.09.19 07:33 Сейчас в теме
18. Stepa86 1258 05.09.19 13:17 Сейчас в теме
Удивляют меня те, кто выбрал профессию по автоматизации кому-то чего-то, но при этом против автоматизации своей деятельности
A_Max; Wilka; Сергей Осипенко; zeegin; BlizD; VasDmi666; spy87; olegtymko; JohnyDeath; +9 Ответить
20. VmvLer 05.09.19 13:24 Сейчас в теме
(18) На смену удивлению приходит понимание бесполезности(иногда вредности) многих вещей когда опыт автоматизации велик.

будем философствовать с разрушителем легенд или вернемся к пиару вашей нетленки "без шуму и пыли"?
25. stepan96 05.09.19 15:57 Сейчас в теме
Антон, а вот это можно поподробнее: "В менеджере тестирования подключаю тест-клиента под отладкой." Тоже больной вопрос по расчету покрытия
27. Stepa86 1258 05.09.19 16:01 Сейчас в теме
(25) У меня вот так в джсоне для VA

"КлиентыТестирования": [
	{
        "Имя": "Этот клиент",
        "ПутьКИнфобазе": "/FC:/Bases/test",
        "ДопПараметры": "/DEBUG -http -attach /DEBUGGERURL\"http://localhost:1560\"",
        "ТипКлиента": "Тонкий",
        "ИмяКомпьютера": "localhost",
        "ПортЗапускаТестКлиента": "1538",
        "АктивизироватьСтроку": "Истина"
    }
	]
Показать


но первое время можно и вручную в тест-клиенте разрешить отладку и подключить из конфигуратора
28. stepan96 05.09.19 16:06 Сейчас в теме
(27) Антон, давай вот вообще для полного дебила (ну то есть для меня)
1. Я запускаю конфигуратор, в нем в настроках ставлю запуск предприятия в режиме тест менеджера и запускаю
2. Соответственно предприятие в режиме тест менеджера, а дальше?

Я если отдельно запускаю тест-клиент, я в предметах отладки не вижу этот сеанс и не могу подключиться
29. Stepa86 1258 05.09.19 16:12 Сейчас в теме
(28) 3. На вкладке "Клиенты тестирования" нажимаешь на подключить клиента тестирования.
4. В открывшемся клиенте сервис - параметры - Отладка в текущем сеансе - Разрешена и вид отладки
5. В конфигураторе Отладка - подключение. Если клиент не подключился, то сверху будут сеансы, если подключился, то в нижней таблице будут и сеанс от менеджера и сеанс от клиента

Если запускать с указанием в доп параметрах "/DEBUG -http -attach /DEBUGGERURL\"http://localhost:1560\"", то эти шаги должны выполнится сами, но иногда отладка не подцепляется
30. stepan96 05.09.19 16:15 Сейчас в теме
Оставьте свое сообщение

См. также

Альтернативный способ добавления элементов и реквизитов на формы 29

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 ERP2 УТ11 Россия Абонемент ($m) Работа с интерфейсом

Предлагаю альтернативный вариант добавления динамически создаваемых элементов и реквизитов на форму.

1 стартмани

09.09.2019    2512    4    bmk74    0       

Вам нравятся запросы в 1С? 13

Инструменты и обработки Программист Конфигурация (md, cf) v8 v8::Запросы 1cv8.cf Абонемент ($m) Практика программирования Разработка

Речь не только о том, что простейший запрос с "легальным" оформлением растянется на пол-экрана, речь еще обо всем, что нужно написать "в нагрузку" к тексту запроса. Все эти "Новый Запрос", "УстановитьПараметр" и последующие пляски с обработкой результата... Пора с этим заканчивать!

1 стартмани

03.07.2019    9289    1    m-rv    73       

Модель объекта 7

Инструменты и обработки Программист Конфигурация (md, cf) v8 Абонемент ($m) Инструментарий разработчика

Подсистема позволяет описать модель данных объекта, где описана зависимость между реквизитами, и затем использовать эту модель в разных сценариях работы с объектом. Версия платформы: 8.3.6 и выше. С небольшими доработками будет работать на 8.2.

1 стартмани

30.06.2019    2593    1    vadim1980    0       

Цифровая подпись Cades-BES для XML средствами 1С с помощью КриптоПро 6

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Россия Windows Абонемент ($m) Защита и шифрование

Обработка иллюстрирует возможность подписания XML SOAP-конверта по стандарту Cades-BES средствами 1С с помощью внешней компоненты КриптоПРО "CAdESCOM" с учетом ГОСТ 2001 и ГОСТ 2012. Стандарт используется в различных механизмах государственных сайтов России, в том числе в СМЭВ и ГИС ЖКХ. Код не привязан к прикладному решению может быть встроен куда угодно, но только на платформе Windows.

1 стартмани

13.05.2019    3196    12    PythonJ    25       

Быстрый запрос 41

Отчеты и формы Программист Пользователь Внешняя обработка (ert,epf) v8 v8::УФ 1cv8.cf Абонемент ($m) Универсальные обработки

Можно ли дать пользователю "удочку", а не "рыбу"? До сих пор ответ на этот вопрос был отрицательным. Всякий инструмент, который мог бы делать с базой данных все или почти все (или хотя бы многое), отвергался пользователями, как слишком сложный. Вспомните тот же SQL, который изначально разрабатывался именно как пользовательский инструмент. "Быстрый запрос" - это попытка устранить сложность, но сохранить при этом универсальность.

1 стартмани

29.04.2019    5562    15    mkalimulin    28       

"Мобильный ТСД" - инвентаризация и сбор штрихкодов для iOS и Android 22

Инструменты и обработки Программист Пользователь Расширение (cfe) v8 v8::Mobile Розница УНФ ERP2 УТ11 КА2 Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика УУ Монитор заказов Оптовая торговля Розничная торговля Ценообразование, анализ цен Абонемент ($m) Внешние источники данных Сканер штрих-кода Терминал сбора данных Работа с интерфейсом Мобильная разработка

Простой мобильный терминал сбора данных для смартфонов на iOS и Android, не требующий сложных настроек и установки дополнительных программ. Для выгрузки базы штрихкодов и загрузки собранных штрихкодов в документы учетной системы используется Яндекс Диск или облачный сервис и расширение конфигурации. Работает с конфигурациями Розница 2, УНФ 1.6, УТ 11, ERP, КА2.

3 стартмани

22.04.2019    10372    54    suepifanov    61       

Безопасная работа с транзакциями во встроенном языке 186

Статья Программист Конфигурация (md, cf) v8 1cv8.cf Абонемент ($m) Практика программирования Разработка

Разбираемся с опасностями использования транзакций во встроенном языке 1С. Познаем ошибку "В данной транзакции уже происходили ошибки". Учимся защищаться от них.

1 стартмани

25.03.2019    13535    7    tormozit    35       

Трудовой договор, Дополнительное соглашение, Лист ознакомления, Договор о материальной ответственности, Договор о коммерческой тайне, Согласие на обработку персональных данных для ЗУП 3.1 17

Отчеты и формы Бухгалтер Внешняя обработка (ert,epf) v8 v8::СПР ЗУП3.x Россия БУ Зарплата Управление персоналом (HRM) Абонемент ($m) Печатные формы документов

Комплект печатных форм для отдела кадров для документов Прием на работу и Кадровый перевод: Трудовой договор, Доп. соглашение к трудовому договору, Лист ознакомления с локальными нормативными актами, Договор о полной материальной ответственности, Договор о неразглашении коммерческой тайны, Согласие на обработку персональных данных.

2 стартмани

12.03.2019    7010    56    Asenka    3       

Коннектор: удобный HTTP-клиент для 1С:Предприятие 8 514

Инструменты и обработки Программист Конфигурация (md, cf) v8 1cv8.cf Абонемент ($m) Практика программирования Внешние источники данных WEB Универсальные функции Инструментарий разработчика Универсальные обработки

Коннектор - библиотека для работы с HTTP запросами. Библиотека берет на себя всю рутину работы с HTTP запросами. Буквально в одну строку можно получать данные, отправлять, не заботясь о необходимости конструирования URL, кодирования данных и т.п.

1 стартмани

31.01.2019    25572    245    bonv    108       

Редактор объектов информационной базы 8.3 37

Инструменты и обработки Программист Пользователь Внешняя обработка (ert,epf) v8 v8::УФ 1cv8.cf Россия Windows Абонемент ($m) Инструментарий разработчика Универсальные обработки

Универсальная внешняя обработка (СДРОбъектУпр) для редактирования реквизитов и табличных частей объектов информационной базы, редактирование движений документов. Доступ ко всем реквизитам объектов, есть возможность выгрузки и загрузки данных (объекты и движения документов) через XML. Платформа 8.3, управляемые формы. Версия 1.1.0.31 от 02.10.2019

2 стартмани

23.01.2019    8707    127    ROL32    21       

Расширение "Курсы валют в формулах расчета динамических цен" для УНФ 1.6 4

Инструменты и обработки Программист Пользователь Архив с данными v8 УНФ УУ Ценообразование, анализ цен Абонемент ($m) Ценообразование, прайсы

Расширение "Курсы валют в формулах расчета динамических цен" с автоматическим пересчетом цен при изменении курсов валют для конфигурации "Управление нашей фирмой, редакция 1.6"

5 стартмани

17.01.2019    4695    10    Palmer1976    4       

Конструктор мобильного клиента Simple WMS Client: способ создать полноценный ТСД без мобильной разработки. Теперь полноценный оффлайн (обновление от 15.08.19)! 169

Инструменты и обработки Программист Архив с данными v8 v8::Mobile БУ УУ Android Оптовая торговля Производство готовой продукции (работ, услуг) Розничная торговля Учет ОС и НМА Учет ТМЦ Абонемент ($m) Инструментарий разработчика Сканер штрих-кода Терминал сбора данных Мобильная разработка

Simple WMS Client – это визуальный конструктор мобильного клиента для терминала сбора данных(ТСД) или обычного телефона на Android. Приложение работает в онлайн режиме через интернет или WI-FI, постоянно общаясь с базой посредством http-запросов (вариант для 1С-клиента общается с 1С напрямую как обычный клиент). Можно создавать любые конфигурации мобильного клиента с помощью конструктора и обработчиков на языке 1С (НЕ мобильная платформа). Вся логика приложения и интеграции содержится в обработчиках на стороне 1С. Это очень простой способ создать и развернуть клиентскую часть для WMS системы или для любой другой конфигурации 1С (УТ, УПП, ERP, самописной) с минимумом программирования. Например, можно добавить в учетную систему адресное хранение, учет оборудования и любые другие задачи. Приложение умеет работать не только со штрих-кодами, но и с распознаванием голоса от Google. Это бесплатная и открытая система, не требующая обучения, с возможностью быстро получить результат.

5 стартмани

09.01.2019    20282    212    informa1555    167       

Сравнение pdf-файлов актов сверки 1

Инструменты и обработки Бухгалтер Внешняя обработка (ert,epf) v8 v8::БУ БП2.0 Россия БУ Дебиторская и кредиторская задолженность Абонемент ($m) Универсальные обработки

Обработка сравнивает два pdf-файла, в которых находятся стандартные печатные формы актов сверки, и показывает на экране совпадающие и/или отличающиеся по суммам документы взаиморасчетов.

1 стартмани

19.12.2018    5790    4    Torin99    2       

Централизованное управление списком доступных баз 1С у пользователей 8

Инструменты и обработки Системный администратор Архив с данными v8 1cv8.cf Россия Windows Абонемент ($m) Стартеры 1С Сервисные утилиты Рабочее место

Когда в локальной сети много пользователей, а еще большое количество различных баз и при этом каждому нужны свои, то администрирование этого зоопарка превращается в АД! Этот комплекс позволяет централизованно управлять списком доступных баз в разрезе пользователей. За пару кликов можно добавить или убрать базу у всех пользователей.

5 стартмани

05.12.2018    4847    7    RomikR    7       

Проверка VAT номеров 2

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) WEB

Обработка для вызова сервиса проверка VAT номера.

1 стартмани

26.11.2018    3771    wtlz    0       

Обнуление остатков регистров бухгалтерии и накопления 41

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v8 v8::БУ v8::ОУ v8::УФ КА1 БП2.0 ЗУП2.5 УТ10 УПП1 УНФ БГУ ERP2 БП3.0 УТ11 УХ КА2 ЗУП3.x Россия Абонемент ($m) Универсальные обработки Чистка базы

Обработка позволяет обнулить остатки по регистру накопления или бухгалтерии на определенную дату. Поддерживается большинство типовых конфигураций (БП 3, БП 2, УТ 11, УТ 10, ЗУП 3, ЗУП 2, БГУ 2, БГУ 1, ERP, УПП, КА 2, КА 1, УХ 3, УХ 1, УНФ). Гибкая настройка (отборы, заполнение реквизитов и любых полей корр. счета, возможность обнулять ресурсы выборочно). Несколько режимов работы. Два интерфейса: простой и с расширенным набором настроек.

2 стартмани

19.11.2018    8960    171    morozov.sv    30       

Шпаргалка разработчика для работы с формами 23

Отчеты и формы Программист Архив с данными v8 Россия Абонемент ($m) Работа с интерфейсом

Сборник помогает быстро освоить встроенный язык и средства конфигурирования при разработке обычных и управляемых форм.

3 стартмани

31.10.2018    7974    68    ELAM    3       

Навигатор по конфигурации базы 1С 8.3 102

Инструменты и обработки Программист Пользователь Внешняя обработка (ert,epf) v8 v8::УФ 1cv8.cf Россия Windows Абонемент ($m) Инструментарий разработчика Универсальные обработки

Универсальная внешняя обработка (СДРНавигаторУпр) для просмотра метаданных конфигураций баз 1С 8.3. Отображает свойства и реквизиты объектов конфигурации, их количество, основные права доступа и т.д. Отображаемые характеристики объектов: свойства, реквизиты, стандартные рекизиты, реквизиты табличных частей, предопределенные данные, регистраторы для регистров, движения для документов, команды, чужие команды, подписки на события, подсистемы. Отображает структуру хранения объектов базы данных, для регистров доступен сервис "Управление итогами". Небольшой набор сервисных функций для повседневной работы. Для программистов и пользователей. Платформа 8.3, управляемые формы. Версия 1.1.0.43 от 01.10.2019

3 стартмани

28.10.2018    15130    185    ROL32    43       

Открывашка ячеек таблиц 85

Инструменты и обработки Программист Расширение (cfe) v8 1cv8.cf Абонемент ($m) Работа с интерфейсом

Глобальное сочетание клавиш для открытия объекта по ссылке из текущей ячейки любой таблицы в большинстве управляемых форм

1 стартмани

27.10.2018    9343    11    tormozit    28       

Расширение "Интерфейс Плюс" 40

Отчеты и формы Бухгалтер Пользователь Расширение (cfe) v8 v8::ОУ Розница УТ11 Россия УУ Розничная торговля Абонемент ($m) Рабочее место

Расширение для 1С:Розница 2.2 и 1С:Управление Торговлей 11, которое позволит повысить удобство работы!

3 стартмани

22.09.2018    10117    88    RocKeR_13    81       

Отправка электронной почты с помощью локального почтового клиента из 1С, развернутой под удаленным рабочим столом 13

Инструменты и обработки Программист Пользователь Архив с данными v8 КА1 БП2.0 УТ10 УПП1 Windows Абонемент ($m) Печатные формы документов Универсальные функции Email

Решение для интерактивной (нажал-отредактировал) отправки электронных писем и печатных форм через почтовый клиент (Thunderbird, Outlook) находящийся на локальном компьютере, из конфигурации 1С, развернутой под удаленным рабочим столом (RDP, remote-app). Подходит также для локального развертывания 1С. Представлен пример быстрой интеграции с конфигурациями "Управление торговлей 10.3", "Управление производственным предприятием 1.3", "Комплексная автоматизация 1.1", "Бухгалтерия предприятия 2.0".

1 стартмани

21.09.2018    11278    10    stvorl    0       

TextRadar - нечеткий поиск в тексте (Native API) 9

Инструменты и обработки Программист Компонента, плагин (dll, vbs,..) v8 1cv8.cf Абонемент ($m) Разработка внешних компонент

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

5 стартмани

19.09.2018    7057    14    TSSV    14       

Работа с публикациями "Инфостарт" 13

Инструменты и обработки Программист Архив с данными v8 УУ Абонемент ($m) Практика программирования О сообществе WEB

Работа с рублевыми публикациями на сайте "Инфостарт": ведение клиентов, заказов, обновление файлов публикации, рассылка обновлений.

1 стартмани

13.09.2018    8331    10    RocKeR_13    12       

Управляемая консоль запросов, отчетов 3.7.5 (расширение, внешняя обработка) 361

Инструменты и обработки Программист Архив с данными v8 v8::УФ v8::Запросы v8::СКД 1cv8.cf Абонемент ($m) Консоль запросов

Работа с запросом и СКД, Полная поддержка пакетных запросов, временных таблиц, Выполнение в фоне (с возможностью отмены), Сравнение результатов, текстов, Разбор структуры запроса в виде дерева, Анализ плана запроса, Групповая обработка

1 стартмани

14.08.2018    49782    1100    Evg-Lylyk    418       

Позиционирование в помещении с помощью нейросети по сигналу Wi-Fi. Интерактивная карта склада в 1С с показом позиции 63

Инструменты и обработки Программист Бизнес-аналитик Приложение (apk) v8 Windows Абонемент ($m) Инструментарий разработчика Практика программирования

Данная публикация содержит в себе редактор и интерактивную карту склада или иного помещения, на которой в реальном времени отображается позиция устройства, координаты которого вычисляются по уровням сигнала нескольких роутеров Wi-Fi. В статье и приложенным к ней разработкам предлагаются инструменты и методика для реализации вычисления точной геопозиции внутри помещений с помощью нейронной сети. Конфигурация написана на релизе 1С:Предприятие 8.3.12.1412, клиентское приложение имеет минимальный уровень совместимости SDK -16.

5 стартмани

09.08.2018    14888    23    informa1555    26       

Визуализация событий на временной шкале средствами "Поле HTML документа" 175

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Работа с интерфейсом

Интересный способ наглядно отобразить события на временной шкале. Например, может быть применен для красивого вывода документов по клиенту. Тестировалось на платформе 8.3.12.1469

1 стартмани

31.07.2018    14119    127    Plotks2017    24       

Работа с данными выбора 38

Инструменты и обработки Программист Архив с данными v8 Россия Абонемент ($m) Практика программирования Работа с интерфейсом

В управляемом интерфейсе заложена мощная возможность описывать связи реквизитов формы через параметры. Установка параметров связей позволяет ограничить выбор данных так, чтобы целостность данных была обеспечена на этапе ввода. Однако без дополнительного программирования задать можно только самые простые связи. Такие условия связи, как зависимость от реквизита через точку или зависимость через дополнительное отношение, заданное в регистре сведений - уже задать без программирования не получится.

1 стартмани

17.07.2018    20158    13    kalyaka    15       

Пример использования REST API Яндекс Диска 33

Инструменты и обработки no Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) WEB

Пример использования REST API Яндекс Диска: чтение диска, добавление каталога, загрузка файла, скачивание файлов или каталогов, удаление файлов или каталогов.

1 стартмани

26.06.2018    12480    23    MKFreeUser    12       

Приложение Android для идентификации/распознавания образов (с обучением с одного раза, One-Shot Learning) с возможностью работы с 1С через веб-сервис 13

Инструменты и обработки Программист Архив с данными v8 Абонемент ($m) Мобильная разработка

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

1 стартмани

19.06.2018    8297    4    informa1555    15       

Обмен файловыми базами данных через Yandex диск 7

Инструменты и обработки no Приложение (exe) v8 Россия Windows Абонемент ($m) WEB

Выполнение операций обмена с Yandex диском для файловых БД, по протоколу WebDav, в автоматическом или ручном режимах.

1 стартмани

11.06.2018    9921    6    slimper    1       

Конфигурация для просмотра публичных телеграм каналов 10

Инструменты и обработки Программист Конфигурация (md, cf) v8 Абонемент ($m) WEB

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

1 стартмани

02.06.2018    9966    7    DO_WHILE_LOOP    7       

ВСТАВИТЬ В Справочник.Номенклатура (Код, Наименование) ЗНАЧЕНИЯ ("001", "Новый товар") 105

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 v8::Запросы 1cv8.cf Абонемент ($m) Практика программирования

Вас не обманывают ваши глаза, это запрос на изменение данных! И это работает без прямого доступа к БД, регистрации и смс.

1 стартмани

01.06.2018    19165    86    m-rv    57       

БСП: Дополнительная обработка (Регламенты), примеры от простого к сложному 236

Статья Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Практика программирования БСП (Библиотека стандартных подсистем)

Очень много попадается странных решений, которые можно решить через БСП:Дополнительные отчеты и обработки. Я бы вообще БСП из-за этой подсистемы переименовал в «Большое Спасибо Программистам». Поработаем с подсистемой в части написания регламентных заданий.

1 стартмани

10.05.2018    26504    24    dsdred    34       

Tool1CD Beta в деле 98

Инструменты и обработки Программист Компонента, плагин (dll, vbs,..) v8 Абонемент ($m) Разработка внешних компонент

Пс, парень! Не хочешь немного сырых байтов?

1 стартмани

09.05.2018    17259    27    baton_pk    26       

Как выполнить отчет на СКД через COM и получить данные отчета? 86

Статья Программист Архив с данными v8 УПП1 Россия Windows Абонемент ($m) Практика программирования

Для чего это нужно. Например, нужно в одной базе получить какой-либо показатель из другой базы. Этот показатель вычисляется в каком-либо сложном отчете, который написан на СКД. Можно, конечно, "скопипастить" текст запроса из другой базы, немного подправить его и выполнять в том же COM подключении. Но с этим теряется гибкость: если отчет изменился, то нужно помнить о том, что где-то есть его "немного модифицированная" копия. В статье будет рассмотрен пример получения данных из базы ЗУП.

2 стартмани

08.05.2018    17369    10    wowik    3       

Вы больше не будете разбирать Excel как раньше 112

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Абонемент ($m) Загрузка и выгрузка в Excel

Кому не приходилось разбирать файлы в формате Excel? Все матерятся, плюются, требуют обещаний что "это в последний раз", но таки пишут загрузку из Excel. Потом форматы меняются, строки съезжают, колонки переставляют... Вам это не надоело?

1 стартмани

07.05.2018    18934    61    m-rv    32       

Просмотр, изменение реквизитов объекта. Сравнение двух одинаковых объектов метаданных ИБ 0

Инструменты и обработки Программист Внешняя обработка (ert,epf) v8 1cv8.cf Россия Абонемент ($m) Универсальные обработки

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

1 стартмани

26.04.2018    8240    18    Vin_Tik    0       

Работа со схемой запроса 171

Статья Программист Конфигурация (md, cf) v8 v8::Запросы Абонемент ($m) Инструментарий разработчика Практика программирования

Стандартом взаимодействия с реляционной базой данных стал язык SQL. Приемником SQL в 1С является язык запросов. Язык запросов, также как и SQL, является структурированным. Составляющие структуры запроса отвечают на разные вопросы о том, какие данные требуется получить и какие манипуляции с множествами данных необходимо произвести при получении. В простых случаях текст запроса можно написать вручную, однако в сложных случаях, а также при программном формировании, - лучше воспользоваться объектной моделью запроса и использовать объект "Схема запроса". В статье дается описание объектной модели и особенностей работы с ней, а также приводится решение, упрощающее взаимодействие с объектом "Схема запроса".

1 стартмани

24.04.2018    27440    72    kalyaka    34       

Внешняя компонента для работы по Web-socket протоколу 21

Инструменты и обработки Программист Архив с данными v8 Windows Абонемент ($m) Разработка внешних компонент WEB

Кто когда-нибудь сталкивался с обменом данными по Web-Socket (wss) протоколу из 1С, тому известно, что в платформе отсутствуют данные механизмы (не путать с HTTP запросами и WebServices). Предлагается использовать внешнюю компоненту, написанную по технологии NativeAPI, для подключения и обмена с серверами из 1С-Предприятия, работающими по протоколу Web-Socket.

6 стартмани

30.03.2018    13023    9    Ditron    62       

Регистры правил [Расширение] 13

Инструменты и обработки Системный администратор Программист Расширение (cfe) v8 v8::Права УТ11 Абонемент ($m) Инструментарий разработчика Информационная безопасность

Регистры правил - права доступа, запрет редактирования, автоподстановка реквизитов и т.д.

10 стартмани

15.03.2018    10295    27    33lab    0       

Правила конвертации документов ЗУП 2.5 - ЗУП 3.1 44

Инструменты и обработки Системный администратор Программист Бухгалтер Документ XML v8 v8::СПР ЗУП2.5 ЗУП3.x Россия БУ Зарплата Абонемент ($m) Обмен через XML Перенос данных из 1C8 в 1C8

Правила конвертации документов ЗУП 2.5 - ЗУП 3.1. Позволяют вести параллельную работу в базах ЗУП редакций 2,5 и 3.1.

10 стартмани

06.03.2018    24419    123    kostya_whiskas    23       

Создание в 1С 7.7 XML в формате EnterpriseData (универсальный формат обмена), версия 1.5. Инструкции и примеры переноса данных из устаревшей конфигурации 1С 7.7 в любую современную 1С 8.3, поддерживающую EnterpriseData, через Конвертацию данных 3 31

Инструменты и обработки Программист Внешняя обработка (ert,epf) v7.7 v8 1cv7.md Россия Абонемент ($m) Перенос данных из 1С7.7 в 1C8.X Обмен через XML

Воспользоваться современным средством переноса данных "Конвертация данных 3.0.5.3" можно только выгрузив из системы - источника данных XML в формате обмена данными EnterpriseData. В этой публикации можно скачать приемы выгрузки из 1С 7.7 универсального формата обмена для Конвертации данных 3. Выполняем перенос данных из «1С:Предприятие 7.7» в «1С:Предприятие 8.3». Используем Конвертацию данных КД 3.0 из 1c 7.7 --> 1С 8.3. На первой стадии еще не опубликовано иного способа подложить файл для Конвертации данных 3 кроме как сформировать его вручную, постараемся решить данную проблему.

1 стартмани

26.02.2018    26058    45    ksnik    3       

Построение маршрута доставки с расчётом расстояния для любой базы УФ 56

Инструменты и обработки Руководитель проекта Внешняя обработка (ert,epf) v8 v8::УФ 1cv8.cf Оптовая торговля Абонемент ($m) Универсальные обработки WEB

Графическое изображение маршрутного листа по картам гугл. Работает на любой конфигурации с управляемыми формами. Использует новую версию api google-карт от 13.02.2018 года под IE11.

10 стартмани

24.02.2018    18602    36    KorotkovRV    16       

Заполняем по шаблону (по умолчанию) 68

Инструменты и обработки Программист Архив с данными v8 v8::УФ 1cv8.cf Абонемент ($m) Практика программирования

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

1 стартмани

08.02.2018    17515    20    mvxyz    17