Телефонный справочник организации: управляемые формы, вэб клиент, api














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

Оглавление

1. Развертывание и автозапуск.

2. Поиск по введенному тексту и функция API speller.

3. Кнопки настройки

4. API и cookie

5. Карточка сотрудника и фото сотрудника

 

1. Развертывание и автозапуск.

Требуется поднять ВЭБ сервер (я использую Apache, быстро и бесплатно) и опубликовать данную систему.

Система тестировалась на платформе 1С:Предприятие 8.3.11.2867.

Для того, чтобы 1С не запрашивала авторизацию по пользователю при запуске, в файле default.vrd прописать имя пользователя и пароль, например: ib="File="D:data ell";usr=username;pwd=userpass;">

При публикации системы на вэб-сервере, не забываем проставить галки Публиковать Web-сервисы по умолчанию и Публиковать Web-сервисы, и галку Table.

Система стартует с условием:

1. Если нет избранных контактов, то ищет контакт с должностью "Генеральный директор", либо "Главный бухгалтер", либо "Бухгалтер". И фильтрует по полученному подразделению сотрудника.

2. Если есть избранные контакты, то выводит список избранных.

 

 

2. Поиск по введенному тексту и функция API speller.

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

Также имеется функция, которая предлагает варианты, которые вы имели в виду при вводе в поле поиска, например опечатка. Можно не вводя заново выбрать предложенный вариант для поиска информации:

Для данной функции используется API speller от Яндекса.

 

3. Кнопки настройки

В шапке имеются кнопки Группировать по подразделениям, Подчиненные подразделения, Колонки и Обновить.

Разберем по отдельности:

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

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

2. При нажатии на кнопку Подчиненные подразделения, в результатах поиска, будут присутствовать также и починенные подразделения:

3. Кнопка Колонки дает возможность выбора выводимых колонок. Не всегда, и не всем нужна вся информация по сотрудникам. Кому-то требуется видеть только контакты, и более ничего:

Как видим, колонка Состояние исчезло. Настройка также сохраняется в системе, и в последующих входах в систему, будет найдена существующая настройка.

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

 

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

 

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

В группе Информация содержатся отборы по тематикам:

1. Избранное

2. Весь справочник

3. На больничном

4. Собираются в отпуск

5. В отпуске

6. Отпуск по графику (данный пункт имеет список месяцев для отбора)

7. Дни рождения (данный пункт имеет список месяцев для отбора)

При нажатии на каждый пункт, производится поиск сотрудников.

 

4. API и cookie

Также в системе имеется api для обновления данных со сторонней системы, например учетной 1С.

В системе создаем пользователя для работы для web-сервисов, например: WEBServiceUser с паролем 12345

Используется get-запрос с одним параметром text, например:

WSОпределение = Новый WSОпределения("http://sql1c-2012/tell2/ws/text.1cws?wsdl", "WEBServiceUser", "12345");
WSПрокси = Новый WSПрокси(WSОпределения, "tell", "Table", "TableSoap");
WSПрокси.Пользователь = "WEBServiceUser";
WSПрокси.Пароль = "12345";

ТекстПараметр = "
|<?xml version=""1.0"" encoding=""UTF-8""?>
|<home>
|   <group department=""Центральный офис"" referencegroup=""1"">
|        <element department=""Центральный офис"" fio=""Мажеров Виктор Викторович"" fiomaiden=""Мажеров Виктор Викторович"" position=""Генеральный директор"" birthday=""01.09.1975"" tel=""7777777"" fax="""" telinternal=""0000"" email=""majorov@mail.ru"" |startdatestate=""25.11.2024"" enddatestate=""04.12.2024"" currentstate=""В ежегодном отпуске"" startdatefuture="""" enddatefuture="""" statefuture="""" schedule=""1_12_2024_12"" referencegroup=""0"" base64photo=""""/>
|        <group department=""IT отдел"" referencegroup=""1"">
|            <element department=""IT отдел"" fio=""Иванов Иван Иванович"" fiomaiden=""Иванов Иван Иванович"" position=""Начальник отдела"" birthday=""01.05.1980"" tel=""1234567"" fax="""" telinternal=""1111"" email=""ivanov@mail.ru"" startdatestate="""" enddatestate="""" currentstate="""" startdatefuture="""" enddatefuture="""" statefuture="""" schedule=""2_06_2024_14"" referencegroup=""0"" base64photo=""""/>
|            <element department=""IT отдел"" fio=""Петров Петр Петрович"" fiomaiden=""Петров Петр Петрович"" position=""Инженер"" birthday=""15.06.1995"" tel="""" fax="""" telinternal=""1112"" email=""petrov@mail.ru"" startdatestate="""" enddatestate="""" currentstate="""" startdatefuture="""" enddatefuture="""" statefuture="""" schedule="""" referencegroup=""0"" base64photo=""""/>
|        </group>
|        <group department=""Бухгалтерия"" referencegroup=""1"">
|            <element department=""Бухгалтерия"" fio=""Сидорова Мария Сидоровна"" fiomaiden=""Сидорова (Иванова) Мария Сидоровна"" position=""Главный директор"" birthday=""10.12.1979"" tel=""2345678"" fax=""6541651465"" telinternal=""2222"" email=""sidorova@mail.ru"" startdatestate="""" enddatestate="""" currentstate="""" startdatefuture="""" enddatefuture="""" statefuture="""" schedule="""" referencegroup=""0"" base64photo=""""/>
|            <element department=""Бухгалтерия"" fio=""Клинина Ольга Ивановна"" fiomaiden=""Клинина Ольга Ивановна"" position=""Бухгалтер"" birthday=""14.02.1993"" tel="""" fax="""" telinternal=""2223"" email=""klinina@mail.ru"" startdatestate="""" enddatestate="""" currentstate="""" startdatefuture="""" enddatefuture="""" statefuture="""" schedule="""" referencegroup=""0"" base64photo=""""/>
|        </group>
|        <group department=""Работа с клиентами"" referencegroup=""1"">
|            <element department=""Работа с клиентами"" fio=""Васин Василий Васильевич"" fiomaiden=""Васин Василий Васильевич"" position=""Начальник отдела"" birthday=""25.07.1987"" tel=""849849494"" fax="""" telinternal=""4444"" email=""vasin@mail.ru"" startdatestate="""" enddatestate="""" currentstate="""" startdatefuture="""" enddatefuture="""" statefuture="""" schedule="""" referencegroup=""0"" base64photo=""""/>
|            <element department=""Работа с клиентами"" fio=""Петин Петр Петрович"" fiomaiden=""Петин Петр Петрович"" position=""Инженер"" birthday=""30.01.1999"" tel="""" fax="""" telinternal=""4445"" email=""petin@mail.ru"" startdatestate="""" enddatestate="""" currentstate="""" startdatefuture="""" enddatefuture="""" statefuture="""" schedule="""" referencegroup=""0"" base64photo=""""/>
|        </group>
|        <group department=""Юридический отдел"" referencegroup=""1"">
|            <element department=""Юридический отдел"" fio=""Катина Екатерина Максимовна"" fiomaiden=""Катина Екатерина Максимовна"" position=""Главный юрист"" birthday=""20.03.1983"" tel=""654651981"" fax="""" telinternal=""7777"" email=""katina@mail.ru"" startdatestate="""" enddatestate="""" currentstate="""" startdatefuture="""" enddatefuture="""" statefuture="""" schedule="""" referencegroup=""0"" base64photo=""""/>
|        </group>
|    </group>
|</home>";

ВозвращаемоеЗначение = WSПрокси.apibase(ТекстПараметр);

В примере приведен пример текста XML для теста, для корректности проверки данного функционала. Функция WSПрокси.apibase(ТекстПараметр) возвращает ответ при корректности выполнения "ОК", при ошибке "ERROR".

Параметр referencegroup имеет 2 значения, "0" или "1", 0 — элемент; 1 — группа.

Формат записи параметра schedule, например: schedule="2_06_2024_14" — означает, что сотрудник собирается в отпуск в середине июня 2024г. на 14 дней.

Первый параметр: 1 — начало месяца, 2 — середина месяца, 3 — конец месяца, 4 — просто в указанном месяце (например: 4_06_2024_14 — в июне 2024г. на 14 дней).

Второй параметр: цифра месяца, в формате "ЧЧ", например: 06 или 10 и т.п.

Третий параметр: год, в формате "гггг".

Четвертый параметр: дней отпуска, число.

 

Если система развернута через WEB, и в файле default.vrd прописано входить всем под одним пользователем, то нужно как-то разграничивать сохраненные настройки, например: избранных, использование Группировки подразделений, использование Подчиненных подразделений или настройку колонок. Для этого браузер хранит cookie: дату и время первого запуска в миллисекундах, которое используется в качестве идентификатора. При входе через тонкий клиент, в качестве идентификатора используется имя пользователя.

 

5. Карточка сотрудника и фото сотрудника

В карточке сотрудника описан каждый параметр XML.

В качестве фотографии сотрудника, при обновлении с помощью XML передаем через параметр base64photo. Также можно вручную выбрать фото сотруднику в регистре Фото сотрудников добавить вручную запись, указав сотрудника и выбрать фото. Фото сотрудников хранятся в отдельном регистре, и при обновлении данных не очищаются, заменяются только тогда, когда передано заполненное значение base64photo. Так было сделано специально, чтобы картинки не затирались при обновлении данных.

Если же сотруднику прикреплено фото, то оно будет отображаться при наведении на поле ФИО.

Меню для работы с системой вручную, имеется у пользователя с ролью Полные

 

Обновления:

12/12/2024г.

Доработан api. Теперь подразделения (включая его родителя, это связано с тем, если подразделение переносится в другую группу) ищутся перед созданием новых, так как раньше очищался весь справочник, и пересоздавался заново. Сделано было для того, чтобы не возникала проблема поиска по УИН (появлялось сообщение о не найденном объекте), так как он менялся, если сотрудник не обновлял данные таблицы.

Также добавлена галка в константах Выполнять поиск по головному подразделению. Не всем нужно выполнять поиск по 1 уровню иерархии меню.

05/12/2024г.

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

04/12/2024г.

Исправлены некоторые интерфейсные моменты. В левом поле вывода фильтров и подразделений, изменен вывод подразделений (убран пункт "Подразделения", выводятся сразу же верхние уровни подразделений). Также при нажатой кнопке "Группировать по подразделениям" названия подразделений стали ссылками, при нажатии на которые происходит фильтрация.

03/12/2024г.

Изначальное представление

Гарантия возврата денег

ООО «Инфостарт» гарантирует Вам 100% возврат оплаты, если программа не соответствует заявленному функционалу из описания. Деньги можно вернуть в полном объеме, если вы заявите об этом в течение 14-ти дней со дня поступления денег на наш счет.

Программа настолько проверена в работе, что мы с полной уверенностью можем дать такую гарантию. Мы хотим, чтобы все наши покупатели оставались довольны покупкой.

Для возврата оплаты просто свяжитесь с нами.

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *