Да, снова адресная книга. :-)
Появилась у меня задача по организации адресного справочника в достаточно крупной организации.
Чтобы получить доступ к данным, сначала ведь кто-то должен эти данные внести...
Можно было бы пойти следующим путём:
- находим готовую программу (и даже бесплатную);
- поручаем кому-то из сотрудников заняться сбором и внесением данных в программу;
- устанавливаем программу на рабочие места заинтересованных сотрудников...
Но, по-моему, это не наш метод. А кто будет поддерживать в актуальном состоянии эти данные? Сотрудник уволился, приняли нового человека, изменился номер телефона и прочее... Через довольно небольшое время в базе окажется много ненужной информации. И наоборот, новых данных будет не хватать. Или нужно выделять отдельного сотрудника, который актуализировал бы информацию.
Но...
Ведь у нас уже есть все эти данные. Отдел персонала работает в программе 1С:ЗУП 3.1.
Там уже всё есть (как выяснилось, не всё) - адреса, телефоны, адреса электронной почты, дни рождения. Информация обновляется регулярно (ну более-менее регулярно).
Однако устанавливать 1С:Предприятие всем персонам, кто заинтересован в доступе к этим данным, у меня нет никакого желания. Как не хочу и предоставлять доступ посредством публикации базы на web-сервере.
Кроме того - для каждого рабочего места потребуется лицензия на использование 1С.
Поэтому мы будем использовать другой способ.
А давайте организуем web-доступ к адресной информации. Но не через встроенный в платформу 1С механизм http-сервисов, который по-прежнему требует клиентскую лицензию на доступ для каждого рабочее места.
Мы пойдём другим путём
Это будет небольшое web-приложение, доступное пользователям через привычный всем браузер.
В качестве источника данных для приложения будем использовать свободную базу данных MariaDB. А данные в неё из 1С:ЗУП будем выгружать с помощью регламентного задания.
База и WEB-сервер у меня расположены на другой машине. Не на той, на которой работает 1С:ЗУП. Хотя это, конечно, не обязательно условие :-) Просто уже давно различные данные из 1С я выгружаю на этот сервер. И это не только адреса из ЗУП...
Так что...
1. Создаем базу на сервере MariaDB. SQL-скрипт для создания прилагаю в публикации. Следует знать, что нужно ещё настроить базу данных для доступа к ней по сети, ибо после установки Maria-DB отвечает на запросы только с локального интерфейса. Опять-таки не забыть настроить firewall.
2. Создаем обработку и подсоединяем её в базе данных через механизм использования дополнительных обработок. Настраиваем расписание для её периодического запуска.
Весь код обработки расположен только в "модуле объекта" обработки.
Здесь в коде нужно установить уникальные для вашего случая данные - адрес или имя сервера, имя пользователя имеющего права на доступ базе, пароль.
Как видите, здесь используется ODBC-драйвер версии 9.0.
Это актуальная версия на август 2024 года. Возможно у вас будет другая версия.
Пакет для установки драйвера я взял здесь
https://dev.mysql.com/downloads/connector/odbc/
Важно.
Если вы используете 64-х разрядную платформу 1С:Предприятия, то и драйвер следует скачать 64-х разрядный. А если платформа 32-х разрядная - то придётся скачать архивную версию драйвера 8.0.37
На этом можно было бы остановиться.
Но... В стандартной конфигурации 1С:ЗУП в контактной информации физ.лиц есть поле "мобильный телефон"
Но нам нужно добавить ещё одно поле - Мобильный телефон (СЛУЖЕБНЫЙ). Это номера корпоративных sim-карт. Хорошо, что такая возможность в конфигурации ЗУП теперь предусмотрена.
Делается это так
И теперь контактная информация физ.лица выглядит следующим образом.
Далее...
На последнем скриншоте в левом нижнем углу появился "флажок" с именем "Включать в корпоративную адресную книгу".
Что это? Его нет в стандартной конфигурации.
Дело в том, что я не хочу, чтобы в корп.адресную книгу, которую мы сейчас и создаём, попадали все адресные данные всех сотрудников. Хотя это спорный вопрос. Кто-то, может, скажет - пусть будет все.
Но мне кажется, что пусть это определяет служба персонала. А этот "флажок" предоставляет механизм, с помощью которого мы говорим программе, выгружать данные этого конкретно человека или нет.
Это так называемый "дополнительный реквизит" справочника физических лиц.
Там ещё нужно было изменить форму справочника физ.лица для того, чтобы этот "флажок" располагался именно на этой вкладке, а не как по умолчанию, когда он находится на вкладке "дополнительные реквизиты".
Ну вот... кажется, всё... Остаётся только приложить к публикации собственно обработку...
А нет.
Замечание по фото физических лиц.
Как я уже где-то писал, в конфигурации при загрузке фото физ.лица программа, к сожалению, никак не контролирует размер загружаемого изображения. Это может быть и файл размером в 200 мБ. И система попробует его положить в регистр сведений. Представляете, как распухнет размер базы данных, если для 2000 сотрудников загрузить такие детальные фото? А в данном случае, когда мы выгружаем данные в MariaDB, это тоже ни к чему хорошему не приведёт.
Можно посоветовать загружать фото не более 100кб. Например png-файлы 640х480px. Этого более чем достаточно для отображения в программе в карточке физлица.
Можно написать расширение для конфигурации, которое при загрузке фото будет его перекодировать в подходящий формат/размер. Благо современная платформа 1С-Предприятия такие механизмы предоставляет. Но это тема отдельной публикации.
И ещё.
Я не разбираю подробно здесь вопрос о web-приложении. Я сделал приложение с использованием php и библиотек bootstrap. Вы можете написать своё, использую более привычные для вас инструменты.
Видео-пример работы приложения доступен здесь
P.S.
При публикации использовались данные из демонстрационной базы 1С:ЗУП 3.1.
Надеюсь адреса и фото из этой базы не связаны с существующими людьми.
Все совпадения, если такие будут, случайны.
Проверено на следующих конфигурациях и релизах:
- Зарплата и управление персоналом, редакция 3.1, релизы 3.1.30.15