входящий номер письма образец

Опыт автоматизации непростой переписки (Часть 1. Входящий)

Атрибуты

Объект «Входящий документ» обладает целой кучей атрибутов, о каждом нужно рассказать отдельно.

Регистрационный номер получателя

Обычный порядковый номер входящего документа. Нумерация начинается заново каждый год. Простым нумератором для присвоения порядкового номера воспользоваться не удалось, он не умеет сбрасывать значение каждый год, поэтому в скрипте «До инициализации объекта» была объявлена функция:

Функция updateDocumentRegNum вызывается из скрипта атрибута «При инициализации»:

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

Тип отправления

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

Контрагент

Ссылка на объект «Контрагент» из процесса «Заказчики». С целью получения списка доступных контрагентов в скрипте объекта «До инициализации объекта» была объявлена вспомогательная функция prepareIncomingContragents:

Функция selectAll выбирает из процесса «crm_management» все объекты «crm_management_contragent» без каких-либо условий, обрабатывает и возвращает как результат функции.
Инициализация атрибута происходит в скрипте объекта «После инициализации объекта»:

Обращаю внимание, что не в самом атрибуте, а в объекте. Так тоже можно. Иногда именно такое решение может иметь большое значение.
Выбор контрагента пользователем должен приводить к изменению списка доступных контактов и договоров. Список доступных контактов и договоров формируется в скрипте атрибута «При изменении»:

Используются вспомогательные функции объявленные в скрипте объекта «При инициализации»:

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

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

Контакт

Ссылка на объект «Контакт» в процессе «Заказчики». Все вспомогательные функции необходимые для инициализации значений атрибута описаны выше, поэтому остается только добавить, что инициализация атрибута происходит в скрипте объекта «После инициализации объекта» (следом за инициализацией списка контрагентов):

Кстати, пользователь, при заполнении формы входящего письма может не указывать контрагента, а сразу указать нужный контакт. Система сама определит его контрагента и подставит значение. Реализовать такую хитрость удалось в скрипте атрибута «При изменении»:

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

Исполнители

Ссылка на объект «Контакт» в процессе «Заказчики». Предназначен для хранения информации о том, кто именно разработал письмо на стороне заказчика. Это такая короткая приписка в конце письма, дескать исполнил такой-то. Кстати, исполнителей бывает несколько, поэтому и атрибут множественный. Позволяет сохранить не одного, а целый список исполнителей. Инициализация атрибута происходит также в скрипте объекта «После инициализации объекта»:

Дата отправления

Собственно, хранит дату отправления входящего письма, которую специалист по делопроизводству берет из документа. Важно знать, когда письмо было отправлено и когда получено. Частенько эти даты совпадают в нашем быстром XXI веке, поэтому для простоты заполнения атрибуту присваивается текущая дата и время в скрипте «При инициализации»:

Регистрационный номер отправителя

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

Дата получения

Очевидно, хранит дату получения входящего письма. Также, как и дате отправления присваивается текущая дата и время в скрипте «При инициализации»:

Но «При изменении» значения атрибута осуществляется обновление имени файла с помощью функции updateDocumentFileName:

Дата получения оригинала

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

Оповестить о получении оригинала

При первоначальной разработке объекта этого атрибута не было. Он появился через несколько недель после начала эксплуатации. Смысл его существования в том, чтобы знать, надо уведомлять заинтересованных лиц о приходе оригинала входящего письма или нет. Кроме того, если оповещение было отправлено, атрибут меняет значение на «Оповещен».
В easla.com список предопределенных значений атрибута можно сформировать даже простым массивом. Вот так просто добавил список с тремя возможными значениями в скрипте атрибута «При инициализации»:

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

Тип содержания

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

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

Переадресовать

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

В ответ на исходящее

Ссылка на «Исходящий документ» этого же процесса. Очень важный атрибут, т.к. позволяет связать в цепочку все входящие и исходящие письма и отследить ее в случае необходимости. В скрипте «До инициализации объекта» написана вспомогательная функция prepareOutgoings, которая формирует список всех исходящих писем:

Она вызывается «При инициализации» атрибута:

Атрибут является множественным, таким образом входящее письмо может быть зарегистрировано как ответное сразу на несколько наших писем.

Договор

Ссылка на объект «Договор» в процессе «Договоры». Еще один важный атрибут, позволяющий классифицировать письма по договорам, что упрощает поиск и формирование отчетов в будущем. Атрибут множественный, что позволяет отнести входящее письмо к нескольким договорам сразу. Такое бывает довольно часто.
Вспомогательные функции для инициализации значений атрибута были описаны выше, поэтому только укажу, что его значения формируются в скрипте «После инициализации объекта» следом за инициализацией исполнителей:

Документ

Вот в этом атрибуте и хранится файл входящего документа. Атрибут не множественный, что заставляет хранить в нем только один файл, и ни в коем случае, не несколько.
После загрузки файла на форму, происходит его автоматическое переименование с помощью скрипта атрибута «При изменении»:
cobjectref()->updateDocumentFileName();
В переименовании используется вспомогательная функция updateDocumentFileName описанная в скрипте «До инициализации объекта»:

Новое имя файла формируется из описания объекта, которое, в свою очередь, формируется с помощью функции calcIncomingDesc (о ней позже).

Приложения

Вместе с официальным входящим письмом могут поступить и файлы приложений. Их может быть много и они могут быть самых разных форматов, поэтому атрибут множественный и не ограничивает формат загружаемых файлов.
Кстати, упомяну, что именно возможность хранения файлов в разных атрибутах независимо стала одной из основных причин использования easla.com для управления перепиской. Я еще не встречал такой системы, которая обращалась бы с файлами также, как с обычными атрибутами.

Отправитель оповещен о передаче письма адресату

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

В том случае, если отправить уведомление не получилось, скажем, не указан эл. адрес контакта, то после передачи вх. письма на рассмотрение атрибут примет значение «Невозможно». Но это редкость. В большинстве случаев уведомление успешно отправляется и атрибут принимает значение «Да».
Мне запомнилась реакция некоторых заказчиков на появление такого уведомления. Они были просто в восторге. Даже не думал, что такая мелочь может вызвать такую бурную положительную реакцию!

Объект

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

В easla.com достаточно дял этого добавить в скрипт «После инициализации объекта» вот такой код:

Всего можно присвоить до 9 цветов. Все цвета радуги от 1 до 7. Белый — 8. Черный – 9.
Кстати, чтобы объект получал описание (изначально оно пустое), была написана вспомогательная функция в скрипте «До инициализации объекта»:

Которая была вызвана в скрипте «Перед сохранением объекта»:

Кроме этого, перед сохранением объекта происходит смена статуса и проверка присвоенного в момент создания регистрационного номера. Этой возможности мне очень не хватало в elma, она сперва сохраняет объект, а потом… потом уже поздно!

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

Статусы

Разобравшись с объектом и его атрибутами, озадачился статусами. В easla.com существуют три типа статусов: начальный, обычный и конечный. Начальный присваивается объекту в момент создания, т.е. когда объект еще не сохранен и открыта форма создания объекта. Конечный блокирует любые попытки изменить объект, хотя, с помощью действий это можно обойти.
После коротких обсуждений сошелся на следующих статусах входящего документа:
Регистрация – начальный статус
Зарегистрирован – присваивается сразу после регистрации
Передан адресату – присваивается после отправки «переадресату» письма с требованием рассмотреть документ
Рассмотрен – присваивается после назначения задач для подготовки ответа (задачи исполняются в смежном процессе «Задачи»)
Аннулирован – присваивается, если письмо нужно аннулировать
На этом этапе уже можно было вздохнуть полегче. Надо было показать форму специалисту по делопроизводству, т.к. именно ей предстояло работать с ней большую часть времени. Создали с ней один объект. Поглядели, что получилось. В общем, получил от нее положительный отклик и пучок пожеланий.

Действия

В easla.com перевести объект из одного статуса в другой можно только действием. Действие – это кнопка под формой объекта, которая выполняет скрипт в контексте объекта.

На рассмотрение

Переводит объект из статуса «Зарегистрирован» в «Передан адресату» и отправляет письмо «переадресату» с просьбой рассмотреть входящий документ. Скрипт действия получился несложный:

Особенностью действия является отправка не одного, а нескольких писем в том случае, если входящий документ переадресован ГИПу. ГИПы сами попросили отправлять копию письма в адрес их помощника, т.к. могут быть заняты другой работой или находится в командировке и письмо «зависнет» на неопределенный срок. Конечно, было понятно, что ГИПы лукавят, они вполне могли заниматься рассмотрением письма даже удаленно, но вступать с ними в спор бессмысленно. Поэтому, после согласования решения с высшим руководством, реализовал отправку копии письма помощнику ГИПа (мы их называем «гипятами»).

Добавить задачу

Сервисная команда, позволяет создать задачу с входящим письмом в основании для открытия.

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

Рассмотрен

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

Добавить контакт.

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

Разумеется, действие привязано к атрибуту «Контакт».

Добавить контрагента.

По аналогии создал действие для создания нового контрагента и привязал его к атрибуту «Контрагент».

Ответить

Честно признаюсь, как-то не сразу додумался до этого действия, хотя потребность в нем ощущалась сразу. Ведь в каждом почтовике есть кнопочка «Ответить», которая создает исходящее письмо и заполняет два поля: кому и тема. Но хорошо когда только 2 поля надо заполнить, можно и исходящее создавать без сервисной команды, а когда у нас 19 атрибутов и почти все надо заполнить, чтобы отправить исходящее письмо, действие просто незаменимо!
Мне казалось, что столкнусь со сложностями, однако все оказалось проще, чем думал:

Уведомить о получении оригинала

Помните атрибут «Оповестить о получении оригинала»? Вот именно для этого действия он и был добавлен. Когда специалист по делопроизводству получает оригинал документа, то вызывает это действие и все!

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

Источник

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

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