Как сделать чат в 1с
Цель публикации
1. Определить потребность в полновункциональном чате в 1С с предлагаемым интерфейсом.
2. В качестве примера работы с HTML, переопределением событий, возникающих в объекте HTML (в том числе генерируемых java скриптами), динамичексое изменение HTML, реализафия "фоновых" форм с возможностью обращения к ним.
PS: подсистема публикуется в качестве ПРИМЕРА. Вы можете дорабатывать ее по своему усмотрению для СВОИХ нужд и нужд СВОЕЙ компании, при этом не удаляя копирайты автора. Подсистему или ее части ЗАПРЕЩЕНО передавать третьим лицам на возмездной основе (ЗАПРЕЩЕНО ПРОДАВАТЬ!), даже если Вы ее дорабатывали.
Для реализации подсистемы , кроме прочих, были применены следующие технологии, опубликованные в статьях:
Планы по доработке:
Установка
Архив содержит Инсталляционный пакет для Инсталлятора пакетов 1С 8.2. и выгрузка из БД, видео по которой опубликовано на Youtube. Чат может быть установлен на любую конфигурацию на УФ, в которой есть справочник Пользователи и ПараметрСеанса.ТекущийПользователь
Специальные предложения
(10) Yashazz,
никто не говорит что сам чат в 1С - что-то новое.
но попробуйте то-же самое реализовать на 8.2 УФ, особенно перехватите контрол+энтер и передайте текст в 1С. На обычных формах все просто. На УФ таких штатных возможностей нет.
И ссылочку плиз.
(11) Уже мучился. Правда, не для чата - мне для своей "Базы знаний" понадобилось, когда в УФ переводить стал. Авось к Новому Году допилю, выложу ))
(14) Yashazz,
думаю, проблем для красивых решений на всех хватит, но, как знаешь
вообще, конечно, лучше чтоб еще какао-то решение было )
Исталлятор качать не обязательно.
Выгрузка и инсталляционный пакет находятся в одном архиве к статье.
Конечно можно посчитать что это скрытая реклама, но я предпочитаю создать инсталляционный пакет и выложить его, а не писать инструкции по установке подсистемы.
ХТМЛ-документ,конечно, дает возможности по отрисовке интерфейса, но ИМХО довольно тяжеловесен. Думается мне, что для работы с базой через инет я бы использовал ТаблицуФормы.
В любом случае очень приятная разработка.
(22) sput74,
принимается на уровне красивого вопроса )
ответный вопрос: у пользователя не запускается компьютер или stand-alone мессенджер
скорее всего он возьмет телефон и позвонит.
(23)
Не удержусь, задам еще "красивый вопрос", точнее дополнение.
Чат внутри 1С бесполезен, в случаях, когда
1. У пользователя не включается 1С
2. Пользователь вышел из 1С (по просьбе админа, как в примере)
3. Не все пользователи, которым нужен чат, работают с 1С (по лицензионным, техническим, организационным соображениям)
4. Пользователи работают более чем с одной базой 1С.
5. Пользователи работают удаленно, например на планшетах (разновидность п. 3)
6. У пользователя запущена громоздкая обработка чего-нибудь
7. У пользователя [ИЛИ|И] админа [занят|разрядился|сломался|неоплачен]телефон/охрип/глухонемой/сидит удаленно с ребенком/etc, в сочетании с пп 1,2,3,5,6
Добавлю для очистки совести:
-Все предусмотренное, напомню, мое личное ИМХО;
-Контр-аргументы сохранились с тех времен когда У МЕНЯ в организации стоял вопрос про вариант корпоративного чата
-Сказано только для организаций ПОХОЖИХ на мою - они есть, и поэтому в этой ветке такие аргументы уместны.
-Осознаю, что ЕСТЬ и другие организации - для них эта программа может подойти.
-Топикстартеру в любом случае респект и уважуха за энтузиазм и красиво сделанную работу.
(31) sput74,
я согласен со всеми аргументами, но.. это именно внутренний чат. т.е. только для внутреннего пользования..
А еще важнее: пользователю вообще по барабану 1С, он, к примеру, конструктор.
Имхейшее имхо: корпоративный чат надо строить по другому (UDP, IMAP и т.п.). А для полного счастья можно предусмотреть и отправку в 1С/ из 1С (как у нас и сделано ;))
P.S. По вышеприведенным соображениям и все "поздравлялки" 1С ущербны, ибо подразумевают наличие у пользователя 1С
P.P.S. А автор - всё равно молодец! ;)
а мне вот неймется рискнуть внедрить, но у меня 40 юзеров через инет в пике активности почти одновременно пишут в 2 регистра. вот борюсь с соблазном)
(33) Программулькин,
))). Я для толстого не проверял, но, теоретически, должно запахать, если режим соотвестсвующий поставить.
(39)
Не очень оперативно получается, а как раз таки в таких базах не помешал бы чат, у нас это насущьная тема, куча удаленных розничных точек, постоянные изменения, акции. пользуемся майлом агентом. Вот сделал бы кто нить чат для 1с через чейнить сервер, тот че майл к примеру.
(42) shira84,
На инфостарте есть статья по этому поводу (обмен ч/з веб сервисы, кажись). Только для этого придется поднимать веб сервер
(45) Pawlick,
Согласен.
У меня есть версия, в которой есть, как в скайпе, вывод за неделю, месяц и т.п.
Я сейчас занят проектом магазина типа AppStore - Магазин решений "PrimaStore". Временный сайт проекта primastore.top-choice ру
Как только запущу проект - выложу туда обновленную версию чата.
(50) kentavr27, проблему иерархического отображения пользователей решил с помощью запроса, который выдает нужную структуру в зависимости от выбора пользователя. Группы теперь разворачиваются/сворачиваются. Как изменить цвет текста/шрифт групп, элементов и он-лайн пользователей -- тоже нашел.
Остался вопрос организации флагов в HTML форме.
Да и с редактированием макета (даже добавление простого текста) как-то не алё получается. Редакторы показывают одну картинку, а 1С рисует несколько по-другому.
(52) в общем получилось что-то типа этого:
жалко что тут в фоне крутиться регл. задание. думал будет как-то по другому реализовано. в целом отлично
Параметр сеанса - «ТекущийПользователь» (Справочник ссылка пользователи)
После добавления данных объектов конфигурации, создадим общий модуль - «Работа с пользователями».
Добавим в него следующий код со вспомогательными процедурами и функциями.
«Отправитель, Адресат» - СправочникСсылка.Пользователи
Так же создадим две строковые константы для хранения ключей шифрования:
Обе константы строковые неограниченно длинны.
Создадим еще один общий модуль для работы с RSAшифрованием.
Код модуля
Получается примерно следующее:
Специальные предложения
Интересно, но - если ключей еще нет то после создания ключей продолжение процедуры дает ошибку в этой строке("ОбъектШифрования.FromXmlString(Константы.RSA_ПубличныйКлюч.Получить());" Еще перепутаны в форме с ТЗ (пользователи) = Адресат = Элементы.Пользователи.ТекущиеДанные; - здесь напутано в именах
(1) seermak, Доброго дня, действительно были недочеты, спасибо, что вовремя указали. Исправил, внес корректировки в код. Отправил на модерацию. Так же добавил скрины того что в итоге получается.
(3) да дело здесь скорее не в самом чате - + за то, что подвинул на изучение криптографии на таком простом примере))
: Ошибка при вызове метода контекста (FromXmlString)
ОбъектШифрования.FromXmlString(Константы.RSA_ПубличныйКлюч.Получить());
по причине:
Произошла исключительная ситуация (mscorlib): Недопустимый синтаксис в строке 1.
ОбщийМодуль.RSA_Шифрование.Модуль(80)>
(10) lampa24111986, Доброго дня. Если честно, чтобы понять в чем проблема нужно смотреть проблему целиком. Так ответить не готов. Вроде бы где то оставались исходники, если нужно могу выслать.
(11) Я столкнулся с такой же проблемой, не могли бы вы скинуть исходник, если он у вас еще остался в живых.
(16) поделитесь со мной тоже (palkor@list.ru) Буду очень признателен. Вероятно, на сайте не измененный код, исходный. У меня "проблемы" аналогичные вышеописанным.
И огромное спасибо, что даете возможность изучать то, что не "лежит на поверхности" :)
Может быть кому-то будет полезно: ошибки с выбором пользователя и открытием формы (10) возникают из-за того, что процедуры выбора, при открытии и тд. не привязаны к форме.
Чтобы сделать общение более комфортным и при этом не отвлекать сотрудников от рабочих обязанностей, фирма «1С» предусмотрела средства коммуникации прямо в программах 1С.
Каждый день внутри коллектива мы обмениваемся информацией. Когда на предприятии два и более бухгалтера, им необходимо постоянно держать связь друг с другом. Менеджеры также ведут плотную переписку с другими сотрудниками на всех этапах продаж. Однако ежедневный поток информации из различных мессенджеров и чатов может отвлекать от непосредственной работы и как следствие привести к снижению эффективности и даже срыву сроков исполнения задач.
В таком случае очень удобно использовать подсистему «Обсуждения», которая встроена сразу в программы 1С. П одключить и использовать «Обсуждения» можно абсолютно бесплатно. Данная возможность реализована во всех программах 1С:Предприятие 8.
Рис. 1 (нажмите, чтобы увеличить)
Рис. 2 (нажмите, чтобы увеличить)
Как включить « Обсуждения »
1) Проверьте, чтобы каждый пользователь имел свой логин и пароль в информационной базе.
2) Откройте меню «Настройки пользователей и прав».
Рис. 3 (нажмите, чтобы увеличить)
Рис. 4 (нажмите, чтобы увеличить)
4) В открывшемся окне «Пользователи» проверьте, все ли пользователи информационной базы добавлены. После того, как вы убедились, что все пользователи добавлены в базу, можно переходить к подключению сервиса «1С:Диалог».
5) Откройте «Главное меню» – «Все функции…».
Рис. 5 (нажмите, чтобы увеличить)
6) В открывшемся окне «Все функции» раскройте раздел «Стандартные» – «Управление системой взаимодействия».
Рис. 6 (нажмите, чтобы увеличить)
7) В открывшемся окне «Управление системой взаимодействия» выберите «Получить код».
Рис. 7 (нажмите, чтобы увеличить)
8) При получении кода необходимо указать адрес электронной почты. Обратите внимание, что каждый пользователь должен указывать реальный адрес, так как он может понадобиться вам для общения со службой поддержки.
9) После того, как все пользователи, которые подключаются к сервису «1С:Диалог», будут добавлены, перезагрузите программу 1С на каждом рабочем месте.
Где в программе находятся «Обсуждения»
Рис. 8 (нажмите, чтобы увеличить)
Рис. 9 (нажмите, чтобы увеличить)
Ура, теперь можно решать рабочие вопросы, не выходя из программы 1С. Продуктивных вам обсуждений!
Есть в 1С: Предприятие несколько задач, которые хотелось бы решить без применения «чёрной магии» и малыми силами, но система не позволяет сделать такое, потому что в ней нет нормального корпоративного чата. Речь идёт о линейке версий 1С 8.xx.
1. 1С + корпоративный чат, зачем?
Например, при создании заказа автоматически отправлять уведомление исполнителю, это гораздо быстрее, чем через почту. Или ускорить согласование заявок на платежи. Либо уведомлять людей о том, что пришли выписки по платежкам из банка.
Экономим время — уведомления рассылаются сразу же по событию, нет задержек. Телефон не занят, необязательно, чтобы человек сидел на рабочем месте, уведомление пришло в чат и будет прочитано.
Автоматические напоминания о важных событиях — система не пропустит ничего и не забудет уведомить нужного человека.
2. Какой чат взять?
Про «вкусности» рассказали, теперь о прозе. Как это всё сделать, желательно побыстрее и попроще?
Вам понадобится офисный чат MyChat, если у вас его ещё нет — скачайте бесплатную версию на 20 человек, «на попробовать» хватит, потом можно расширить лицензию. Бесплатная версия по функционалу почти ничем не отличается от коммерческой, да и триала на 30 дней нету, лицензия не ограничена по времени.
Итак, скачали, установили сервер и хотя бы один клиент, подключили клиент к серверу. Это всё можно сделать на одном компьютере, для теста хватит вполне. Ставится всё линейно, без умных вопросов. Если вдруг возникнет заминка, то вот руководства по установке:
3. Как увязать эти две системы?
Нам понадобится два файла:
- Компонент для 1С, C:\Program Files (x86)\MyChat Server\doc\IntegrationAPI\1C\8.xx\mychatvk.dll, сделан по технологии NativeAPI.
- Библиотека MyChat Integration API, C:\Program Files (x86)\MyChat Server\doc\IntegrationAPI\MyChatIntegrationAPIDLLs\x32\mychat.dll
Берём эти две dll-библиотеки и выкладываем их в в папку \bin установленной 1С (C:\Program Files (x86)\1cv8t\8.3.5.1248\bin\).
Теперь открываем тестовую конфигурацию 1С и пишем туда вот такое (у моего компьютера с работающим сервером MyChat IP адрес 192.168.10.107, а пользователь, которого я зарегистрировал, UIN=2), а вы впишите свои данные:
Что вообще произошло?
Можно и не от имени робота, но так проще, у нас ведь пользователей-то нет ещё, конфигурация тестовая.
Понятно, что в примере всё линейно и максимально просто, но для теста и понимания, как оно работает — достаточно.
Обязательно посмотрите 4. Что делать, когда не получается?
Кто ничего не делает, тот никогда не ошибается. Если что-то поломалось или не работает, а разобраться, почему, самому никак не выходит —
Специальные предложения
Сергей, эти компоненты идут штатно в комплекте с дистрибутивом MyChat Server, бесплатно. Разработаны авторами мессенджера.
ArsenProg; 127.0.0.0; Mogilnikova; Inkasor; D-masterrr; olegmedvedev; dark_wolf; sys1c; PrinzOfMunchen; Rik30; dj_serega; Silenser; Trucker; + 13 – 2 Ответить
(5) eskor, возражу. Чаты на основе самой 1С это жуткое УГ. В силу того, что платформа для этого не предназначена. Прежде, чем делать какие-то выводы, рекомендую хотя бы попробовать.
Далее, чаты на основе Telegram это здорово, но ему нужен Интернет, а MyChat — это сервер внутри вашей сети. Если вы добровольно согласны сливать внутреннюю информацию компании на чужие сервера непонятно куда - это ваше право. Лично я на такое не готов. Как и множество наших клиентов.
Пример в студию, покажите, насколько это проще, в отличие от того примера, что я привел.
(7) eskor, наверное, вы пошутили насчёт простоты :) Там кода на три порядка больше, я специально зашёл и посмотрел. Уже не говоря про версию 8.3. Идём дальше, нужен бот. А получатели должны подписаться на этого бота. В статье, что я написал, речь идёт о корпоративном чате, с Windows. У людей десктопы. Вы предлагаете всем установить Telegram.
Хотелось бы. Но использование своего мессенджер-сервера - принципиальная вещь. При чём тут порты и кто инициирует соединение? Я говорю о том, что вы предлагаете конфиденциальную коммерческую информацию сливать на сервера Телеграма в Интернет. Это несерьёзно и недопустимо для бизнеса. Хотя, возможно, каким-то компаниям и наплевать на это.
(5) eskor, Гораздо лучше - это рассылка СМС со СВОЕГО шлюза. своим работникам, или кому еще пожелаете.
Чаты, телеграммы - это все зло .
Наша компания делала такой шлюз на основе Siemens MC35i, всё работало, но не бесплатно.
P.S. Забыл про бонус. Оператор связи и все интересующиеся будут знать про все ваши телодвижения в бухгалтерии. Привет Яровой :):)
Вообще-то правы все! Я бы совместил идеи. SMS - для сотрудников работающих в "полях", и чат для "офисного планктона".
Типа SMS: Вася! Обнови 1С:Бухгалтерию ООО "Василёк"
Чат: Марья Ивановна! Платеж не прошел на сумму бла бла бла для организации бла бла ссылка, документ ссылка .
У нас для подобного решения и оповещений используется свой jabber сервер с глобальным ростером единным для всех.
(15) dreamadv, покажите своё решение, если не жалко, может, у него есть какие-то сильные стороны, которых мы, возможно, не заметили.
(17) bas_nsk, Пожалуйста, пользуйтесь на здоровье. Андрей, насчёт диалога передачи файлов — лучше написать в официальный форум , там выясним, что конкретно не так и как это полечить.
в одном из новейших релизов БУДЕТ чат от самой 1С +видеозвонки. Уже видел демонстрацию. Правда не известно когда он выйдет.
(19) rasswet, где об этом можно почитать? И, я так понимаю, всем, кто его захочет, придётся за новый релиз заплатить. Они не говорят, сколько?
P.S. Надо скачать свежую версию библиотеки mychatvk.dll с официального сайта.
(23)
Александр, MyChat работает под Windows/Linux/MacOS/Android/WEB. Сервер - только под Windows.
Насчёт Jabber и 1С - я рекомендую вам самому развернуть эти системы и сравнить функционал и стоимость с MyChat, а уже потом давать комментарии, владея конкретными цифрами и функционалом.
Открытые системы - это здорово, но, к сожалению, очень сложно и часто работает далеко не всё. Когда дело доходит до реальных задач, нужны восьмигранные напильники с алмазным напылением, и то не всегда помогает :) Говорю не просто так, есть приличный опыт работы с OpenFire/ejabberd. Серьёзные же коммерческие системы стоят уйму денег. Например, Skype for business. MyChat между ними посредине. В любом случае, для начала попробуйте бесплатную версию, чтобы сложить своё собственное мнение. До 20 человек онлайн - бесплатно, без ограничения по времени использования.
Насчёт решения от 1С. Да, в статусе беты, наверное, допилят до какого-то уровня со временем. Функционал слабенький, системные требования - весьма серьёзные, без 1С - не работает. Работает через WebSockets. То есть внутри что-то типа Electron или WebKit (обрезанный Chrome, ниже Windows 7/Vista работать не будет). Вы серьёзно считаете, что для компании на 200-300 человек нужно закупать лицензии на 1С на все рабочие места, чтобы общаться в корпоративном чате? Во сколько это обойдётся?
(24) Насчёт Jabber и 1С, неоднократно разворачивал и использую. Например наиболее активно используется корпоративный чат на коробке Битрикс24 там свой Jabber (XMPP) сервер, есть интеграция с 1С с Jabber (вполне себе без сторонних компонент), все отлично работает, про какие напильники идет речь?
Туда же в Битрикс заведены открытые линии, так что менеджеры из единого чата могут общаться с клиентами через Telegram, Viber, VK, Facebook и пр.
MyChat безусловно молодцы что сделали библиотеку для интеграции, функционал действительно достаточно широк и выходит за рамки корпоративного чата, я даже проголосовал за публикацию в знак одобрения и поддержки.
Но справедливости ради надо заметить что это не единственное достойное решение.
(25) Понятно, что не единственное. Когда я говорил о Jabber серверах, я имел в виду не готовое решение от 1С, а отдельный ejabberd или openfire сервер, с ними, собственно, и хлебнули радостей :)
Есть проверка работы на платформе 8,2 в клиент серверном варианте, почему спрашиваю, потому что уже наступал на эти грабли с библиотеками API / COM и т.п.
Автор безусловно молодец, спасибо за наводку, но к этому чату очень много вопросов, не тянет он на корпоративный чат, очень много косяков обнаружил наш сисадмин, писал им в поддержку несколько раз ответы "порадовали"))) создание msi пакетов за денежку, поддержки универсальных путей: //server100500/files - увы нет :( ну не хотим мы файлы, передаваемые пользователями хранить у них на компе, хотим все хранить на серверах
(31) MSI пакет есть, берите и пользуйтесь. Вы что-то явно путаете. А не хотите файлы у клиентов хранить - ну не передавайте их напрямую, проблем-то. Заливайте штучно, они ж на сервере хранятся :) Перетащили мышкой в окно и бросили, что проще может быть?
"корпоративный чат" - это когда много пользователей) а цены на лицензии этой программы просто "конские"( 100 человек - 4000 баксов, 300 человек (количество пользователей для нашего предприятия) - 15000 баксов. Уж лучше самим сделать, на регистрах сведений, на порядок дешевле получается, ИМХО
(35) Макс, у вас нелады с математикой. Лицензия на 100 человек стоит 400 долларов, а не 4 тысячи. На порядок промахнулись.
(36) Моё упущение))) Посмотрел на сайте, там они хотят ввести количество лицензий кратное 10. После надписи "Укажите, сколько подключений вам необходимо:" я в поле ввёл необходимое количество, и совсем не смотрел на какие-то арифметические действия. Ввел количество, посмотрел на цену))) Не внятно этот момент на сайте прописан, или надпись поменять, или принцип ввода количества
(40) Вам надо событие отловить в самом 1С, что новая задача назначена. А что отправлять в чат - это уже дело техники.
вот именно кто даст решение на пальцах как это сделать. очень актуально!
у кого какие мысли?
(45) выглядит неплохо. А есть в 1С какой-то встроенный механизм для работы с JSON, чтобы руками его не лепить?
Вариант с REST через метод POST. Параметры собираются в объект типа Структура, затем преобразуются в JSON (его можно скормить сразу готовый) и передаются на сервер:
(49) да, примерно так:
(50) Стандартных средств преобразования из структуры в строку JSON без сохранения в файл я не нашел, но с помощью дополнительных функций это можно сделать (функции взяты отсюда: Обмен данными с сайтом используя формат JSON в 1С , добавил в них только замену Символы.ПС на "\r\n"):
(49) добил, наконец, через средства, появившиеся в версии 8.3.6 и позволяющие преобразовывать без лишних телодвижений:
Поразительно, столько шума за два года и никто не обратил внимание на то, что в главе "2. Какой чат взять?" не рассматривается причин взять этот чат. Словно бы действительно это единственный чат, который может во внешнее API. А ведь причин объективно нет. API сейчас у любого современного чата, полно свободного ПО с открытым кодом для организации корпоративных мессенджеров. Народ не торчит у компов и корпоративный - это прежде всего который из программы присылает пуш-уведомление на телефон.
У вас есть возможность через апи зарегистрировать пользователя, перенести пользователя из общего чата в группу. Но откуда возьмется группа нигде не сказано! И почему любой человек может переносить в группу людей, или там какие-то права настраиваются на группе или что там происходит? Почему это -то не описали во внешнем Апи, или к вашему мессенджеру надо ещё брать комплект администраторов этого мессенджера? так ведь они тоже денег стоят.
Половина документации просто пустые разделы, зачем-то втюхан глоссарий с кучей слов в алфавитном порядке и несколько из них даже описаны. Вероятно какие-то сложные термины про Rest,сервера, протоколы обмена? Нет, там указано объяснение слов "Админка", "Мессадж", "Онлайн", "Чат".
В документации на консоль кони пляшут(смотреть скрины)
Создается устойчивое впечатление, что функционал настолько печален, что потребовалось сделать как можно больше пустых и бесполезных разделов, чтобы покупатель запутался, заблудился и не увидел этой пустоты.
Возможно, во времена Фидонета это было актуально и весело, но вы вроде как продаете лицензии на ПО, написанное в течение 15 лет на паскале, за неплохие деньги в 2019ом году. Ну за 15 лет можно было сделать к ней нормальную документацию или там действительно описывать нечего?
Переходим по следующему пути: CRM - Еще больше возможностей - ставим галочку напротив Чат, история изменений и видеозвонки (новый интерфейс).
Далее откроется окно подключения к сервису 1С:Диалог.
Нажимаем Получить код.
В открывшемся окне введем адрес электронной почты абонента.
На указанную почту будет выслан код регистрации.
Вводим полученный код в открывшуюся форму.
Теперь у нас появился доступ к вкладке Обсуждения.
ВАЖНО! Для того, чтобы Вы могли добавить пользователей к обсуждению и они могли участвовать в диалоге, необходимо, чтобы они хотя бы один раз зашли в приложение.
Как работать с чатами?
Вариант 1: Обычные обсуждения без привязки к какому-либо элементу программы
Переходим по кнопке Обсуждения, которая находится между Панелью открытых и Панелью инструментов.
Чтобы создать беседу, нажимаем кнопочку …
Добавляем коллег и дальше переписываемся как в обычном мессенджере.
Вариант 2: В рамках какого-либо элемента справочников
Откроется блок обсуждения, связанного с открытым элементом/документом.
Под цифрой 1 расположена кнопка, отвечающая за совершение видеозвонка. При нажатии на нее откроется окно, где мы сможем ввести имя пользователя, которому хотим позвонить.
Под цифрой 2 находится кнопка, включающая системные оповещения в рамках того или иного элемента/документа.
Под номером 3 расположено поле добавления пользователя, которого Вы хотите оповестить. Нужно просто начать вводить нужное имя.
Понравилась статья? У нас еще много интересных и полезных материалов. А еще мы оказываем поддержку программ 1С.
С условиями можно ознакомиться здесь =)
А если вы только планируете внедрять УНФ, то почитайте, что мы можем вам предложить
Читайте также: