Название
модуля
|
Свойства
|
Взаимодействия
|
Сервер
Внешнее соединение Вызов сервера
|
Взаимодействия
Вызов Сервера
|
Сервер
Вызов сервера
|
Взаимодействия
Клиент
|
Клиент
(управляемое приложение) Клиент (обычное приложение)
|
Взаимодействия
Клиент Переопределяемый
|
Клиент
(управляемое приложение) Клиент (обычное приложение)
|
Взаимодействия
Клиент Сервер
|
Клиент
(управляемое приложение) Сервер Внешнее соединение Клиент (обычное
приложение)
|
Взаимодействия
Клиент Сервер Переопределяемый
|
Клиент
(управляемое приложение) Сервер Внешнее соединение Клиент (обычное
приложение)
|
Взаимодействия
Переопределяемый
|
Сервер
Внешнее соединение Клиент (обычное приложение)
|
Управление
Электронной Почтой
|
Сервер
Внешнее соединение Клиент (обычное приложение) Вызов сервера
|
Управление
Электронной Почтой Клиент
|
Сервер
Внешнее соединение Клиент (обычное приложение) Вызов сервера
|
Таб. 1. Свойства общих модулей
Формы в «1С: Предприятие» предназначены для
отображения и редактирования информации, содержащейся в базе данных. Общие
формы не принадлежат конкретным объектам конфигурации, а используются всеми
прикладными решениями в целом.
Общая форма Адресная Книга.
Адресная книга используется для подбора и
уточнения контактов при отправке исходящих электронных писем и для уточнения
контактов в полученных входящих письмах. Так же в ней можно выбрать файл
почтовик со списком контактов и автоматически заполнить ими поле получателей.
Рис. 2. Создание формы АдреснаяКнига
Рис. 2.1. Свойства формы АдреснаяКнига
Программный код формы «Адресная книга» находится
в приложении 2.
.4 Создание форм документов подсистемы
Начнем с добавления в общий полный интерфейс
программы «1С: Предприятие» интерфейса разрабатываемой подсистемы, после чего в
настройки пунктов будут добавляться создаваемые документы.
Рис. 3. Добавление дополнительного интерфейса
Рис. 3.1. Свойства элемента интерфейса
.4.1 Журнал документов «Взаимодействия»
Журнал документов будет обладать следующими
свойствами для работы с попадающими в него документами:
· Установка режимов отображения списка
· Просмотр списка по ответственному
· Установка группировки списка
· Назначение ответственного
· Установка флага
"отработано"
· Определение предмета взаимодействия
· Откладывание отработки
взаимодействий
· Загрузка входящей электронной почты
Рис.4. Создание формы журнала документов
«Взаимодействия»
Рис. 4.1. Журнал документов «Взаимодействия» в
Конфигураторе и его свойства
Программный код формы журнала регистрации
«Взаимодействия» находится в Приложении 3.
.4.2 Документ «Электронное письмо входящее»
Документ "Электронное письмо входящее"
предназначен для регистрации полученных электронных писем. Получение почты
происходит после нажатия кнопки "Получить почту" в журнале документов
«Взаимодействия». Там же отображаются полученные письма. При получении нового
входящего электронного письма пользователь может выполнить следующие действия.
· Уточнить контакт. Уточнить контакт с
клиентом. По адресу электронной почты, указанной в письме программа найдет
список тех абонентов, для которых зарегистрирован данный адрес. Поиск
производится в списке партнеров, контактных лиц и физических лиц. Если
информация о таком адресе не зарегистрирована, то можно зарегистрировать запись
о новом контакте.
· Ответить на письмо. На основании
полученного входящего письма будет зарегистрировано исходящее электронное
письмо.
· Запланировать взаимодействие с
клиентом. Планирование взаимодействия производится при нажатии на кнопку
"Взаимодействие". Можно запланировать встречу, телефонный звонок и
т.д.
Рис. 5. Создание формы документа «Электронное
письмо входящее»
Рис.5.1. Документ «Электронное письмо входящее»
в Конфигураторе и его свойства
Программный код формы документа «Электронное
письмо входящее» находится в Приложении 4.
.4.3 Документ «Электронное письмо исходящее»
Документ "Электронное письмо
исходящее" предназначен для формирования исходящего письма контакту и
отправки его по электронной почте. С помощью кнопки "Подобрать
контакт" можно быстро найти нужный контакт в адресной книге.
Электронное письмо исходящее может быть создано
на основании ранее оформленного взаимодействия, контакта или предмета
взаимодействий. Если электронное письмо исходящее оформляется на основании
взаимодействия или предмета взаимодействий, то в форме письма автоматически
заполняется информация о предмете письма. Информация о предмете письма может
быть добавлена и в момент оформления нового письма (поле "Предмет").
К электронному письму исходящему можно приложить
любое количество файлов. Список файлов заполняется в группе
"Вложения".
Варианты важности и статус исходящего письма
заполняются из значений Перечислений ВариантыВажностиВзаимодействий и
СтатусыИсходящегоЭлектронногоПисьма.
На основании исходящего электронного письма
пользователь может зарегистрировать взаимодействие с клиентом.
Рис.6. Создание формы документа «Электронное
письмо исходящее»
Рис. 6.1. Документ «Электронное письмо
исходящее» в Конфигураторе и его свойства
Программный код формы документа «Электронное
письмо исходящее» находится в Приложении 5.
.4.4 Документ «Телефонный звонок»
Документ "Телефонный звонок"
предназначен для регистрации входящих или исходящих звонков, которые
регистрируются в программе.
В документе указывается информация о том , с кем
был зарегистрирован телефонный звонок "Абонент" и информация о том,
как в дальнейшем связаться с данным абонентом ("Как связаться").
· Если абонент уже был зарегистрирован
в информационной базе, то информацию о нем можно выбрать из соответствующего
справочника при активизации поля "Контакт".
· Если это новый абонент , то с
помощью кнопки "Создать контакт" можно зарегистрировать информацию о
нем в информационной базе.
В документе "Телефонный звонок" можно
указать предмет разговора.
Рис.7. Создание формы документа «Телефонный
звонок»
Рис. 7.1. Документ «Телефонный звонок» в
Конфигураторе и его свойства
Программный код формы «Телефонный звонок»
находится в Приложении 6.
.4.5 Документ «Встреча»
Документ предназначен для регистрации информации
о предстоящей встрече. В документе фиксируется информация о цели встречи
("Описание"), место встречи, время встречи и участники встречи.
Информация об участниках встречи вводится в
табличную часть документа. Если участник еще не зарегистрирован в
информационной базе, то его можно зарегистрировать непосредственно из формы
документа "Встреча" с помощью кнопки "Создать контакт".
В качестве предмета встречи может быть указано
любое другое взаимодействие (предыдущая встреча, телефонный звонок, электронное
письмо и т.д.), либо другие объекты, определённые в качестве предмета. В
встрече можно зафиксировать взаимодействия с участниками встречи: телефонные
звонки участникам, электронные письма т.д.
После окончания встречи в ней устанавливается
флаг "Отработано", в поле "Описание" вводится описание
результатов проведенной встречи.
Рис.8. Создание формы документа «Встреча»
Рис. 8.1. Документ «Встреча» в Конфигураторе и
его свойства
Программный код формы «Встреча» находится в
Приложении 7.
.4.6 Документ «Запланированное взаимодействие»
Документ предназначен для планирования взаимодействия
с одним или несколькими участниками взаимодействия. Документ вводится в том
случае, если необходимо запланировать взаимодействие, однако как именно будет
производиться взаимодействие (телефонный звонок, встреча, электронное письмо)
еще не известно.
В запланированном взаимодействии можно указать
предмет взаимодействия.
Информация об участниках вводится в табличную
часть документа. Указывается имя участника и информация о том, как с ним
связаться.
· Если участник уже зарегистрирован в
информационной базе, то информация о нем указывается в поле
"Контакт".
· Если это новый участник, то
непосредственно из формы планируемого взаимодействия его можно
зарегистрировать, нажав на кнопку "Создать контакт" в панели действий
табличной части.
На основании запланированного взаимодействия
можно ввести информацию о реальных взаимодействиях с клиентом - написать
письмо, позвонить и т.д.
Рис. 9. Создание формы документа
«Запланированное взаимодействие»
Рис. 9.1. Документ «Запланированное
взаимодействие» в Конфигураторе и его свойства
Программный код формы документа «Запланированное
взаимодействие» находится в Приложении 8.
.5 Создание справочников и регистров сведений
Объект конфигурации Справочник предназначен для
работы со списками данных. Используется для того, чтобы на его основе платформа
создала в базе данных информационную структуру.
В подсистеме «Директ-маркетинг» разрабатываемые
справочники служат для хранения файлов, присоединенных к какому либо виду
взаимодействия. Они не предназначены для ручного ввода информации и при попытке
обращения к ним программа будет выдавать ошибку (рис.10).
Рис. 10. Ошибка при обращении к созданным
справочникам
Все 5 разработанных справочников имеют
одинаковые реквизиты, табличные части и формы. Так же они обладают одинаковыми
свойствами, за исключением привязки к созданным документам.
Состав справочников и их свойств представлен на
рисунке 11.
Рис. 11. Состав справочников Присоединенных
файлов и их свойства
Объект конфигурации Регистр сведений является прикладным
и предназначен для описания структуры хранения данных в разрезе нескольких
измерений. На основе этого объекта платформа создает в базе данных
информационную структуру, в которой хранится произвольная информация,
"привязанная" к набору измерений.
В подсистеме разработано 2 регистра сведений:
· Идентификаторы Полученных
Электронных Писем - служит для хранения адресов отправителей электронных писем
и даты их получения;
· Наличие Присоединенных Файлов -
служит для определения наличия во взаимодействиях присоединенных файлов.
Рис.12. Разработанные регистры сведений
3. Эксплуатация подсистемы
.1 Настройка почтового сервера
Для начала следует создать учетную запись
электронной почты, которая будет использоваться для получения и отправки
электронных сообщений.
Для удобства справочник «Учетные записи
электронной почты» вынесен в Главное меню --- Директ-маркетинг
Сведения о пользователе:
· имя - имя владельца учетной записи,
например Иван Сергеевич
· почтовый адрес - адрес электронной
почты учетной записи в формате пользователь@почтовый сервер
Сведения о сервере:
· POP3 сервер - адрес POP3 сервера
(сервера входящих сообщений)
· SMTP сервер - адрес SMTP сервера
(сервера исходящих сообщений)
Аутентификация:
· пользователь - имя пользователя
учетной записи (login)
· пароль - пароль учетной записи
· запомнить пароль - если флаг
установлен, пароль будет сохранен в информационной базе, и будет использоваться
при работе с этой учетной записью без дополнительного запроса пароля*.
Используйте кнопку "Проверка учетной
записи" для проверки введенных параметров учетной записи. При этом
отправляется стандартное почтовое отправление и проверяется возможность
соединения с сервером входящих почтовых сообщений.
Флажок "Учетная запись используется только
для отправки сообщений" устанавливается для тех системных учетных записей,
которые предназначены только для рассылки системных сообщений.
* - Для системных учетных записей рекомендуется
запомнить пароль для того чтобы система могла рассылать сообщения от такой
учетной записи без участия пользователя. Тем не менее, решение о хранении
паролей в информационной базе принимается в каждом случае индивидуально.
Рис. 13. Настройка учетной записи электронной
почты
.2 Обработка взаимодействий
Работа со списком взаимодействий
Журнал «Взаимодействие» по умолчанию открывается
с отбором по текущему пользователю в режиме К исполнению, то есть показываются
все неисполненные и отложенные не больше чем на текущий момент взаимодействия.
Установка режимов отображения списка
При работе с журналом «Взаимодействие»
пользователь может установить различные режимы отображения данных, в
зависимости от поставленных перед ним задач по осуществлению взаимодействий.
Для оперативной работы по взаимодействиям
используется режим К исполнению. При установке этого режима в списке
отображаются неотработанные взаимодействия, которые не отложены или отложены не
больше чем на текущий момент.
Для просмотра новых взаимодействия используется
режим Новые. В этом режиме в списке отображаются неотработанные взаимодействия,
для которых не установлен предмет.
Для просмотра отложенных взаимодействий
используется режим Отложенные. При установке этого режима в списке отображаются
все неотработанные взаимодействия, у которых заполнена информация в поле
Отработать после.
Для просмотра уже отработанных взаимодействий
предусмотрен режим Отработанные. При установке этого режима в списке
показываются те взаимодействия, у которых установлен флажок Отработано.
Для просмотра всех взаимодействий используется
режим Все. При установке этого режима в списке показываются все взаимодействия,
которые были введены текущим пользователем.
Просмотр списка по ответственному
При открытии журнала «Взаимодействие» в нем
отображаются только те взаимодействия, у которых в качестве ответственного
установлен текущий пользователь. Для просмотра списка взаимодействий по другому
ответственному необходимо выбрать его в поле Ответственный. Для просмотра
списка взаимодействий по всем ответственным, поле Ответственный необходимо
очистить.
Установка группировки списка
При работе с журналом «Взаимодействия»
предусмотрена возможность быстрой группировки данных по датам регистрации
взаимодействий.
При просмотре списка по всем ответственным имеется
возможность дополнительной группировки списка по ответственным.
В общем журнале «Взаимодействия» можно
группировать взаимодействия по предметам взаимодействий.
Для отмены установленной группировки
используется режим Без группировки.
Назначение ответственного
Предусмотрена возможность установки нового
ответственного для нескольких взаимодействий. Для этого в журнале
«Взаимодействия» отмечаются нужные записи и вызывается функция установки
ответственного (пиктограмма Установить ответственного). В появившемся
диалоговом окне из списка пользователей выбирается новый ответственный и
нажимается кнопка Выбрать. Новый ответственный будет автоматически установлен
для отмеченных позиций. Такую операцию удобно использовать при разборе новых
взаимодействий. При изменении ответственного очищается поле Отработать после.
Установка флага "отработано"
Предусмотрена возможность установки признака
Отработано для списка взаимодействий. Пользователь отмечает в списке нужные
взаимодействия (с помощью клавиши Ctrl) и нажимает на кнопку Установить флаг
Отработано. Для всех отмеченных взаимодействий будет установлен флаг
Отработано. Такой возможностью удобно воспользоваться при работе с текущими
взаимодействиями (режим К исполнению, отбор по текущему пользователю).
Определение предмета взаимодействия
Несколько произвольно отмеченных взаимодействий
можно отнести к одному предмету взаимодействий (установить предмет
взаимодействия). Для выполнения этого действия пользователь отмечает нужные
взаимодействия и нажимает на кнопку Установить предмет. В появившемся
диалоговом окне пользователь для указания предмета взаимодействия, сначала
выбирает тип предмета, а затем уже конкретный предмет взаимодействия. После
нажатия на кнопку Выбрать все для всех отмеченных записей будет указан новый предмет
взаимодействия. Данную возможность удобно использовать в режиме группировки по
предметам. Пользователь просматривает список взаимодействий по предметам и при
необходимости переопределяет предмет взаимодействия. Также этот режим удобно
применять при разборе новых взаимодействий (режим Новые, отбор по текущему
пользователю).
Откладывание отработки взаимодействий
Предусмотрена возможность отложить отработку
нескольких произвольно выбранных взаимодействий. Для выполнения этих действий
пользователь отмечает в списке нужные взаимодействия и нажимает на кнопку
Отложить обработку. В появившемся диалоговом окне пользователь указывает дату,
когда он собирается приступить к обработке отмеченных взаимодействий и нажимает
на кнопку Выбрать. У всех отмеченных взаимодействиях в поле Отработать после
устанавливается дата, равная установленной дате.
Загрузка входящей электронной почты
Для подготовки разбора входящей электронной
почты по ответственным и предметам в журнале «Взаимодействия» предусмотрена
возможность загрузки входящей электронной почты (кнопка Получить почту).
Полученные входящие письма автоматически регистрируются в журнале
«Взаимодействия» в виде документов Электронное письмо входящее. Далее
пользователь, занимающийся разбором электронной почты, может распределить
письма по предметам и ответственным, если эта информация не была определена при
загрузке входящих писем.
Рис.14. Общий вид журнала документов
«Взаимодействия»
Рис.14.1. Окно выбора создаваемого
взаимодействия
.3 Загрузка входящих электронных писем
Все сообщения, полученные клиентом по
электронной почте, отображаются в журнале «Взаимодействия».
Полученные по электронной почте входящие
сообщения фиксируются в информационной базе в виде документа Электронное письмо
входящее. Процесс получения почты может быть инициирован регламентным заданием
по определенному расписанию, в этом случае новый документ Электронное письмо
входящее появится в списке взаимодействий автоматически после выполнения
регламентного задания. Пользователь может инициировать процесс получения писем
вручную, нажав на кнопку Получить почту.
При получении писем сохраняется история
взаимодействий. То есть, если входящее письмо было получено в ответ на
исходящее письмо, то в качестве предмета письма будет проставлено отправленное
ранее исходящее письмо. Если письма клиенту были отправлены по конкретной
сделке, то при получении входящего письма эта сделка будет установлена в
качестве предмета письма. Таким образом при работе с электронной почтой
сохраняется вся история взаимодействий, точно также, как при ручном вводе
данных в журнале «Взаимодействия».
Рис. 15. Форма выбора Документа «Электронное
письмо входящее»
Рис. 15.1. Вид входящего электронного письма
.4 Формирование исходящих электронных писем
Создание электронного письма на основании
контакта
Исходящее электронное письмо может быть создано
из карточки контакта. При создании письма на основании контакта в список
получателей письма добавляются записи, соответствующие контактной информации
партнера с типом "e-mail". Если эта информация не определена,
добавляется запись с заполненными реквизитами Контакт и Представление.
Создание электронного письма на основании
предмета взаимодействия
При создании электронного письма на основании
предмета взаимодействий автоматически заполняется реквизит Предмет. В список
получателей письма добавляются записи, соответствующие контактной информации
партнеров и контактных лиц сделки с типом "e-mail" кроме конкурентов.
Создание электронного письма на основании
взаимодействия
При создании электронного письма на основании
телефонного звонка копируется реквизит Предмет, в список получателей письма добавляются
записи, соответствующие контактной информации контакта звонка с типом
"e-mail". Если эта информация не определена, добавляется запись с
заполненными реквизитами Контакт и Представление.
При создании электронного письма на основании
встречи копируется реквизит Предмет. Список получателей письма заполняется
контактной информацией участников встречи с типом "e-mail".
При создании исходящего электронного письма на
основании входящего письма копируются реквизиты Предмет, Кодировка, Учетная
запись. С некоторыми изменениями копируются текст и тема письма. Так же
устанавливается набор служебной информации (не видимой для пользователя)
письма.
Исходящее письмо может быть создано из входящего
нажатием кнопки:
· Ответить. В этом случае данные об
отправителе из входящего письма добавляются в список получателей в исходящем.
· Ответить всем. В этом случае в
список получателей добавляются данные об отправителе и всех получателях
входящего письма, кроме владельца учетной записи, с которой осуществляется
формирование исходящего.
· Переслать. В этом случае получатели
не заполняются.
Формирование электронного письма
Учетная запись, с которой будет отправлено
письмо, определяется автоматически только в случае создания исходящего письма
на основании входящего (подставляется учетная запись, на которую получено
входящее письмо) или если пользователю доступна только одна учетная запись. Во
всех остальных случаях пользователь выбирает учетную запись
"вручную". Получателей можно подобрать из адресной книги (кнопка
Подобрать контакты).
Учетная запись, с которой будет отправлено
письмо, определяется автоматически только в случае создания исходящего письма
на основании входящего (подставляется учетная запись, на которую получено
входящее письмо) или если пользователю доступна только одна учетная запись. Во
всех остальных случаях пользователь выбирает учетную запись
"вручную".
Отложенная обработка
Предоставляется возможность отложить отработку
письма. Для этого необходимо заполнить реквизит Отработать после, в результате
электронное письмо попадает в список К исполнению только после указанных
пользователем даты и времени.
Для отправки письма используется кнопка
Отправить.
В случае, если дальнейшая работа по письму не
нужна, необходимо установить флаг Отработано.
Рис.16. Форма выбора и создания документа
«Электронное письмо исходящее»
Рис. 16.1. Создание исходящего электронного
письма
Рис. 16.2. Форма выбора контактов из Адресной
книги и заполнения контактов из файла
.5 Регистрация входящих и исходящих телефонных
звонков
) Создание входящего звонка из общего
интерфейса
Поступивший телефонный звонок может быть
зарегистрирован из пункта меню «Директ-маркетинг». Также поступивший телефонный
звонок может быть введен из журнала «Взаимодействие». При создании нового
входящего звонка из настроек текущего пользователя автоматически подставляются
данные об авторе и ответственном, зарегистрировавшем звонок. Дата и время
регистрации звонка автоматически устанавливается равным текущей дате и текущему
времени.
Определение ответственного за работу по звонку
Если регистрация входящего звонка производится
одним сотрудником (сотрудником телефонной группы), а дальнейшая обработка
телефонного звонка производится другим сотрудником (менеджером, отвечающим за
работу с клиентами), то в поле Ответственный указывается тот сотрудник
(менеджер), который будет заниматься дальнейшей отработкой данного звонка.
Привязка звонка к контакту
При регистрации звонка указывается краткая
информация о клиенте: имя клиента (Абонент) и телефон клиента (Как связаться).
Нового клиента можно зарегистрировать в информационной базе, не выходя из формы
входящего звонка с помощью кнопки Создать контакт.
Если клиент уже зарегистрирован в информационной
базе и может сообщить информацию по которой его можно идентифицировать (имя,
телефон, e-mail и т.д.), то можно осуществить поиск клиента по указанной
информации. Для поиска клиента по его контактной информации используется механизм
полнотекстового поиска. Окно поиска открывается при нажатии на кнопку выбора,
рядом с полем Контакт.
Привязка звонка к предмету
Если в процессе разговора с клиентом выясняется,
что звонок контакта связан с уже зафиксированной в информационной системе темой
или взаимодействием, то пользователь может зафиксировать это в реквизите
Предмет.
Формирование звонка
В поле Описание вводится краткая информация о
сути звонка, может быть также зафиксирована вся полезная информация, которая
была предоставлена контактом в процессе разговора.
Обработка звонка
При регистрации нового звонка для него по
умолчанию устанавливается обычная степень важности. В зависимости от характера
звонка пользователь может повысить или понизить степень его важности. Менеджер
может отложить обработку звонка. Для этого менеджер в поле Отработать после
заполняет ту дату и время, когда он планирует вернуться к обработке данного
звонка. Данный звонок попадет в список К исполнению в журнале взаимодействий
только после указанных пользователем даты и времени в поле Отработать после.
Завершение работы по звонку
После завершения работы по звонку необходимо
установить в форме входящего звонка флаг Отработано. При обработке входящих
звонков можно установить такой режим работы, когда в списке будут показываться
только те звонки, которые требуют дальнейшей обработки, а уже обработанные
звонки показываться не будут.
) Создание исходящего звонка из общего
интерфейса
Новый исходящий звонок может быть создан из
пункта меню «Директ-маркетинг» или из журнала документов «Взаимодействия». В
карточку исходящего звонка в поле Описание вводится информация о сути звонка.
При необходимости в поле Описание фиксируются результаты отработки информации
по звонку. Информация о новом абоненте и его телефоне вводится в поля Абонент и
Как связаться. С помощью кнопки Создать контакт новый абонент может быть
зарегистрирован в информационной базе. Если абонент, которому был адресован
звонок, уже зарегистрирован в информационной базе (внесен в адресную книгу), то
информация о нем регистрируется в поле Контакт путем поиска и выбора абонента
из адресной книги.
Создание исходящего звонка на основании контакта
Исходящий телефонный звонок может быть
зарегистрирован для тех контактов, информация о которых уже зарегистрирована в
информационной базе. Предусмотрена возможность ввода исходящего звонка из
соответствующих карточек контактов. При вводе исходящего звонка из карточки
контакта в новом исходящем звонке автоматически записывается информация об
имени абонента (Абонент) и о его телефоне (Как связаться). Информация о
телефоне записывается в том случае, если для абонента (партнера, контактного
лица, физического лица) в его контактной информации указан только один телефон.
Создание исходящего звонка на основании предмета
взаимодействия
Исходящий звонок может быть создан из карточки
сделки или маркетингового мероприятия. При создании исходящего звонка на
основании сделки или маркетингового мероприятия автоматически проставляется
информация о предмете исходящего звонка: конкретной сделки или конкретного
маркетингового мероприятия.
Создание исходящего звонка на основании
взаимодействия
Исходящий звонок может быть создан на основании
ранее зарегистрированного взаимодействия: запланированного взаимодействия,
входящего телефонного звонка, встречи, входящего или исходящего электронного
письма. При вводе нового исходящего звонка на основании ранее
зарегистрированного взаимодействия автоматически заполняется информация о
предмете (сделка, маркетинговое мероприятие и т.д.), если предмет был указан в ранее
оформленном взаимодействии. Если предмет не был указан, то в качестве предмета
будет установлено то взаимодействие, на основании которого вводится исходящий
телефонный звонок. В новый исходящий звонок также переносится контактная
информация о клиенте (Абонент, Как связаться). Если клиент уже зарегистрирован
в информационной базе, то информация о клиенте заполняется в поле Контакт.
Формирование и обработка исходящего звонка
В карточку исходящего звонка в поле Описание
вводится информация о сути звонка. При необходимости в поле Описание
фиксируются результаты отработки информации по звонку.
Обработка звонка
Все исходящие звонки должны быть соответствующим
образом обработаны. Например, в результате разговора с клиентом по телефону,
необходимо выслать ему коммерческое предложение со списком тех товаров и цен, о
покупке которых договорились с клиентом. Результатом обработки данного звонка
будет ввод на основании исходящего звонка исходящего электронного письма с
приложенным к нему коммерческим предложением. После отработки исходящего звонка
менеджер устанавливает флаг Отработано.
Исходящие звонки, так же как и входящие звонки,
могут быть сгруппированы по степени их важности: обычная, низкая, высокая.
Исходящие звонки, имеющие низкую степень важности, могут обрабатываться позже,
с более низким приоритетом. Менеджер имеет возможность отложить такие звонки.
Для этого ему необходимо в поле Отработать после указать ту дату и время, когда
он может отработать данный звонок. В результате этих действий отложенный звонок
попадет в список К исполнению в журнале взаимодействий только после указанных
пользователем даты и времени.
Рис. 17. Форма выбора и создания документа
«Телефонный звонок»
Рис. 17.1. Создание телефонного звонка
.6 Планирование и регистрация встреч
Создание встречи из общего интерфейса
Планирование встречи производится из пункта меню
«Директ-маркетинг» (подпункт Встреча) или из журнала «Взаимодействия». При
планировании новой встречи регистрируется состав участников встречи (закладка
Участники). В качестве участников встречи могут быть любые лица, как
зарегистрированные, так и незарегистрированные в информационной базе (ИБ). Если
участник встречи не зарегистрирован в ИБ, то информация о нем вводится в виде
текстовой строки, если зарегистрирован, то информация о нем выбирается из
соответствующих справочников (Контрагент, Контактное лицо и т.д.). Также
определяется тема встречи (Описание), предмет встречи (сделка, маркетинговое
мероприятие и т.д.). Для встречи вводится информация о дате начала и окончания
встречи.
Создание встречи на основании контакта
Встреча может быть создана на основании
контакта: из карточки контрагента, контактного лица или из карточки физического
лица. При этом информация о контрагенте, контактном лице или физическом лице
заполняется на закладке Участники. Если для контрагента (контактного лица или
физического лица) в контактной информации указан только один телефон, то информация
о нем заполняется в поле Как связаться.
Создание встречи на основании взаимодействия
Встреча может быть введена на основании любого
ранее зарегистрированного взаимодействия: запланированное взаимодействие,
телефонный звонок (входящий и исходящий), электронное письмо (входящее и
исходящее), а также на основании ранее зарегистрированной встречи. При создании
встречи на основании ранее зарегистрированного взаимодействия копируется
информация о предмете и автоматически заполняется список участников в
соответствии с теми участниками (абонентами), которые были зарегистрированы в
ранее оформленном взаимодействии.
Обработка встречи
Все встречи должны быть соответствующим образом
обработаны. Например, в результате встречи с клиентом достигнута договоренность
о заключении сделки с клиентом. Результатом обработки данной встречи будет ввод
на основании встречи сделки с клиентом. После отработки встречи менеджер
устанавливает флаг Отработано.
Встречи, так же как и входящие и исходящие
звонки, могут быть сгруппированы по степени их важности: обычная, низкая,
высокая. Встречи, имеющие низкую степень важности, могут обрабатываться позже,
с более низким приоритетом. Менеджер имеет возможность отложить обработку таких
встреч. Для этого ему необходимо в поле Отработать после указать ту дату и
время, когда он может отработать информацию по данной встрече. В результате
этих действий отложенная встреча попадет в список К исполнению в журнале
взаимодействий только после указанных пользователем даты и времени.
Рис. 18. Форма выбора и создания документа
«Встреча»
Рис.18.1. Создание встречи
.7 Планирование взаимодействий
Планирование взаимодействия на основании
взаимодействия
Взаимодействие можно запланировать на основании
любого ранее совершенного взаимодействия с клиентом.
Отработка планируемого взаимодействия
При регистрации нового планируемого
взаимодействия для него по умолчанию устанавливается обычная степень важности.
В зависимости от характера планируемого взаимодействия пользователь может
повысить или понизить степень его важности. Степень важности может повлиять на
скорость обработки планируемого взаимодействия. Планируемые взаимодействия,
которые имеют низкую степень важности, менеджер может отложить. Для того чтобы
отложить планируемое взаимодействие, менеджер в поле Отработать после заполняет
ту дату и время, когда он планирует вернуться к обработке данного
взаимодействия. Данное планируемое взаимодействие попадет в список К исполнению
в журнале взаимодействий только после указанных пользователем даты и времени в
поле Отработать после.
После обработки планируемого взаимодействия
менеджер устанавливает флаг в поле Отработано.
Рис. 19. Форма выбора и создания документа
«Запланированное взаимодействие»
Рис. 19.1. Создание запланированного
взаимодействия
В данном разделе были рассмотрены основные шаги,
необходимые для работы с подсистемой «Директ-маркетинг».
4. Обоснование экономической эффективности
проекта
.1 Теоретические основы экономической
эффективности
Под понятием «оценка экономической эффективности
ИС» понимается процесс, включающий в себя понимание, определение и измерение
того, насколько полезным в экономическом плане является или явилось внедрение
ИС для предприятия. При этом экономическая полезность рассматривается обычно
как денежный эквивалент того, насколько изменились доходы/расходы предприятия в
результате инвестирования в ИС.
Под эффективностью в общем случае понимается
степень соответствия системы поставленным перед ней целям. Экономическая
эффективность - это мера соотношения затрат на разработку, внедрение,
эксплуатацию и модернизацию системы и прибыли от ее применения.
Оценка экономической эффективности ИС - сложная
и трудоемкая работа, требующая не только технических, но и экономических
навыков. Только сочетание этих двух составляющих может привести к достоверному
результату проводимого анализа.
Специалисты в области разработки, внедрения и
сопровождения ИС должны обладать навыками проведения предварительной экспертизы
проекта. Они должны уметь вести постоянный мониторинг системы на соответствие
внедряемых технологий стратегии развития предприятия. Процесс соизмерения
затрат и достигаемого за их счет эффекта должен быть именно «процессом», то
есть итерационной процедурой, проводимой на протяжении всего этапа разработки и
внедрения проекта, результат которой способен повлиять на дальнейшее
продолжение проекта.
Таким образом, исходя из всего выше сказанного,
можно сделать вывод, что процесс оценки экономической эффективности
информационных систем сложен и неоднозначен. Подходить следует индивидуально в
каждом конкретном случае.
4.2 Выбор и обоснование методики расчета
экономической эффективности проекта
Существует несколько методик оценки
экономической эффективности. Так, разработаны алгоритмы расчета эффективности
для ранее решавшихся и принципиально новых задач, есть методика, оценивающая
эффективность путем вычисления прироста прибыли за счет увеличения объема
производства, и другие.
Так как задача решалась в организации всегда, то
для обоснования экономической эффективности дипломного проекта выбирается
методика оценки для ранее решавшихся задач. В ее основе лежит сопоставление
показателей, полученных в дипломном проекте, с показателями варианта обработки
информации, выбранного в качестве базового. Годовой экономический эффект можно
также записать в виде формулы (1):
Э = Э1+ Э2, /1/
где Э1 - прямой экономический эффект, то есть
эффект от уменьшения стоимости и трудоемкости обработки информации;
Э2 - косвенный экономический эффект, являющийся
результатом опосредованного влияния обработки данных на процессы управления.
Э1 рассчитывается по формуле (2):
Э1= (С0+Ен*К0) - (С1+Ен*К1), /2/
где С0 , С1 - текущие (эксплуатационные) годовые
затраты при базовом и проектируемом вариантах обработки информации
соответственно;
К0 , К1 - единовременные капитальные затраты при
базовом и проектируемом вариантах обработки информации соответственно.
Экономическая эффективность оценивается
трудовыми и стоимостными показателями, которые позволяют измерить экономию от
внедрения предлагаемого проекта относительно базового варианта. Существуют
абсолютные и относительные трудовые и стоимостные показатели.
К трудовым показателям относятся следующие:
. Абсолютное снижение трудовых затрат (ΔТ)
(см. формулу (3)).
ΔТ=Т0-Т1 /3/
. Относительный коэффициент снижения трудовых
затрат (Кт1) (см. формулу (4)).
Кт1=ΔТ1/
Т0 /4/
. Индекс снижения трудовых затрат (Iт1) (см.
формулу (5)).
тj=Т0 /Т1 /5/
Показателями стоимостных затрат являются:
. Абсолютное снижение стоимостных затрат (ΔС1)
(см. формулу (6)) .
ΔС1=C0-C1 /6/
. Относительный коэффициент снижения стоимостных
затрат (Кс1) (см. формулу (7)).
Кс1=ΔС1/
С0 /7/
. Индекс снижения стоимостных затрат (Iс1) (см.
формулу (8)) .
Iсj=С0 /С1 /8/
Процесс создания электронных писем и/или
регистрации телефонных звонков и встреч будет занимать примерно одинаковое
количество времени при различных вариантах организации труда.
Накладные расходы рассчитываются в размере 65%
от заработной платы сотрудника. Часовая амортизация ЭВМ (Ам) рассчитывается по
формуле (9). Сумма месячной амортизации составляет 200 руб. В среднем в месяце
21 рабочий день. В день ЭВМ работает в течение 10 часов.
Ам=200/21/10=0.95 руб. /9/
.3 Расчет показателей экономической
эффективности проекта
При оценке показателей эффективности
сравниваются затраты на обработку информации при существующем (базовом)
варианте и проектируемом, то есть автоматизированном варианте.
Единовременные капитальные затраты определяются
по формуле (10):
Кj= Kjосв + Kjразр+ Kjзагр+ Kjприобр, /10/
где Kjосв - затраты на освоение системы;разр -
затраты на разработку системы;загр - затраты на загрузку системы;приобр -
затраты на приобретение необходимого обеспечения;разр рассчитывается по формуле
(11):
где Тjразр - затраты машинного времени на
разработку (в часах);
Цмч - цена машинного часа;
Кмульт - коэффициент мультипрограммирования;
Змес - месячная зарплата одного разработчика;-
количество разработчиков;разр - время разработки (в месяцах);нр - коэффициент
накладных расходов.
Значения остальных слагаемых, кроме затрат на
приобретение, рассчитываются аналогично. Затраты на приобретение определяются
покупной ценой необходимых средств.
Для данной системы значения требуемых переменных
таковы:нр=0.65
Кмульт=1=1 человек
Змес=3000 руб.
Цмч=0.95 руб.
Тjосв = 60 часов
Тjразр =50 часов
Тjзагр =0.5 часа
Время освоения составляет 2 дня, поэтому примем
для данной задачи значение tjосв, равное 0.1 месяца.разр =1 месяцзагр =0.006
месяца
Кjприобр складывается из стоимости
приобретаемого технического обеспечения (1/21 от стоимости оборудования, так
как примерно такую часть от общего объема работ по времени занимает данный
комплекс задач, а для принтера - 1/100), программного обеспечения.
Стоимость системного блока и монитора равна
12500, принтера 3500.
Стоимость программного обеспечения 8750 руб. Из
них на данную задачу приходится примерно 500 рублей.
Кjприобр =12500/21+500+3500/100=1098.74 руб.
Кjосв =60*0.95*1+800*1*0.1*(1+0.65)=57+132=189
руб.
Кjразр
=50*0.95*1+800*1*1*(1+0.65)=47.50+1320=1367.50 руб.
Кjзагр =0.5*0.95*1+800*1*0.006*(1+0.65)=0.48+7.92=8.4
руб.
Кj=2663.64 руб.
К0=2000 руб.
ΔКj=Кj-К0=663.64
руб.
Согласно формуле (2), прямой годовой
экономический эффект равен:
Э1=(1693.65+0.15*2000)-( 320.52+
0.15*2663.64)=1273.58 руб.
Косвенный годовой экономический эффект Э2 равен
5000 рублей в год.
Таким образом, согласно формуле (1), получаем
годовой экономический эффект:
Э=1273.58+5000=6273.58 руб.
Расчетный коэффициент эффективности определяется
по формуле (12):
Ер=ΔСj
/ ΔКj
/12/
Ер=2664.83/663.64=4.015
Срок окупаемости проекта Ток=1/Ер
Ток=1/4.015=0.249 года (3 месяца).
Расчеты показывают, что расчетный коэффициент
эффективности капитальных вложений больше нормативного, поэтому разработку
подсистемы следует считать целесообразной. Срок ее окупаемости составляет
примерно 3 месяца.
.2 Социальный эффект от внедрения проекта
При внедрении подсистемы «Директ-маркетинг»
будет наблюдаться положительный социальный эффект. Созданная подсистема имеет
простой и интуитивно понятный интерфейс. Внедрение подсистемы позволит ускорить
рассылку электронных писем сотрудниками компании, так как имеет возможность
импорта списка e-mail адресов. При грамотном подходе этот способ взаимодействия
с клиентами компании обязательно обеспечит высокую отдачу. Тем не менее,
подсистема «Директ-маркетинг» лишь инструмент. Эффективность рассылки зависит
от формы и содержания рассылаемых e-mail сообщений.
Заключение
Директ-маркетинг обладает многими
преимуществами. В отличие от массовых коммуникаций директ-маркетинг является
наиболее контролируемым инструментом. Используя его в своей практике, можно
полностью контролировать расходы на проведение любого этапа комплексной
кампании или при применении отдельных инструментов директ-маркетинга.
Хотелось бы отметить, что выбор инструмента для
отдела продаж и маркетинга является непростой задачей, и рассматривать эту
задачу нужно в комплексе с проведением ряда мероприятий по постановке
регулярного маркетинга в компании. При внедрении системы автоматизации
необходимо принять во внимание множество факторов, в числе которых и уровень
подготовки персонала, и его готовность к изменениям, и наличие понимания о
необходимости комплексного подхода к задаче на всех уровнях, включая
генерального директора или совет директоров. Только в этом случае можно создать
эффективную систему, включающую в себя как современные средства автоматизации,
так и передовые методики работы коммерческих отделов, одной из которых является
директ-маркетинг.
В рамках данного дипломного проекта была
разработана подсистемы для автоматизации директ-маркетинговых взаимодействий с
клиентами ООО «Дело Системы». Разработанная подсистема отвечает всем
требованиям, предъявляемым к ней, позволяет отправлять и получать электронную
почту, регистрировать входящие и исходящие звонки, планировать и регистрировать
встречи. Благодаря интуитивно понятному интерфейсу и наличию раздела по
эксплуатации подсистемы обучение работе с ней протекает в очень короткие сроки.
Таким образом, в ходе дипломного проекта были
решены все поставленные задачи и достигнута поставленная цель - разработана
подсистема «Директ-маркетинг» для программного продукта «1С: Предприятие 8.2»
конфигурации «Бухгалтерия предприятия 2.0»
директ маркетинг бухгалтерия
Список используемой литературы
1.
Сулейменова Б.М. Система продвижения товаров и услуг как один из инструментов
комплекса маркетинга. Маркетинг в России за рубежом. 2008.
.
Котлер Ф. Основы маркетинга. Краткий курс: Пер. с англ. - М.: Издательский дом
"Вильямс", 2007.
.
Бачило С.В., Есинова И.В., Мишина Л.А. Директ-маркетинг: учебно-практическое
пособие// Издательство: Дашков и К, 2008.
.
Романов А.А., Панько А.В. Маркетинговые коммуникации - М.: Эксмо, 2006.
5. Маклаков С.В. Моделирование бизнес-процессов
с BPwin 4.0 - М.: Диалог-МИФИ, 2002
6.
Габец А.П., Гончаров Д.И., Козырев Д.В., Кухлевский Д.С., Радченко М.Г.
Профессиональная разработка в системе 1С: Предприятие 8. - М.: 1С-Паблишинг,
2007.
.
Кашаев С.М. 1С: Предприятие 8.2. Программирование и визуальная разработка на
примерах// Издательство: БХВ-Петербург, 2011.
.
Радченко М.Г., Хрусталева Е.Ю. 1С: Предприятие 8.2. Практическое пособие
разработчика. Примеры и типовые приемы. - М.: 1С-Паблишинг, 2009.
.
Радченко М.Г. 1С: Предприятие 8.2. Коротко о главном. Новые возможности версии
8.2- М.: 1С-Паблишинг, 2009.
.
Методические материалы слушателя Сертифицированного курса фирмы «1С». Введение
в конфигурирование в системе «1С: Предприятие 8». Основные объекты. Версия 8.2.
- М.: 1С-Учебный центр №3, 2010.
.
Методические материалы слушателя Сертифицированного курса фирмы «1С».
Конфигурирование в системе «1С: Предприятие 8». Решение оперативных задач.
Версия 8.2. - М.: 1С-Учебный центр №3, 2011.
12.
Клуб профессионалов 1С - Все об 1С. www.1c.proclub.ru
<http://proclub.ru/>
.
Фирма 1С [Электронный ресурс]. www.1c.ru <http://www.1c.ru>
Приложения
Приложение 1. Программный код общих модулей
// Возвращает список доступных видов поиска
контактов //
Функция Получить Список Доступных Поисков (ППД
Включен, Параметры, Элементы Формы, Для Адресной Книги) Экспорт
Все Списки Поиска = Новый Структура;
Если Для Адресной Книги Тогда
Адрес = "";
Доменный Адрес =
"";
Варианты Поиска По Строке =
"";
Представление = "";
Иначе
Адрес = Параметры. Адрес;
Доменный Адрес = Получить
Доменный Адрес Для Поиска (Параметры. Адрес);
Варианты Поиска По Строке =
Получить ВариантыПоискаПоСтроке(Параметры.Представление, Параметры.Адрес);
Представление = Параметры.
Представление;
КонецЕсли;
ДобавитьВариантПоиска(ВсеСпискиПоиска,
ЭлементыФормы, "ПоEmail", НСтр("ru = 'По email'"), Адрес);
ДобавитьВариантПоиска(ВсеСпискиПоиска,
ЭлементыФормы, "ПоДомену", НСтр("ru = 'По доменному
имени'"), ДоменныйАдрес);
Если Не ДляАдреснойКниги Тогда
ДобавитьВариантПоиска(ВсеСпискиПоиска,
ЭлементыФормы, "ПоТелефону", НСтр("ru = 'По телефону'"),
Адрес);
КонецЕсли;
Если ППДВключен Тогда
ДобавитьВариантПоиска(Все
Списки Поиска, Элементы Формы, "ПоСтроке", НСтр("ru = 'По
строке'"), ВариантыПоискаПоСтроке);
КонецЕсли;
ДобавитьВариантПоиска(ВсеСпискиПоиска,
ЭлементыФормы, "НачинаетсяС", НСтр("ru = 'Начинается с'"),
Представление);
Возврат ВсеСпискиПоиска;
КонецФункции
// Добавляет вариант поиска в список доступных
поисков//
Процедура ДобавитьВариантПоиска(ВсеСпискиПоиска,
ЭлементыФормы, ИмяВарианта, Представление, Значение)
ЭлементыФормы.ВариантыПоиска.СписокВыбора.Добавить(ИмяВарианта,
Представление);
ВсеСпискиПоиска.Вставить(ИмяВарианта,
Значение);
КонецПроцедуры
// Устанавливает текущим контакт в форме
"Адресной книге" и "Выборе контактов".//
Процедура УстановитьТекущимКонтакт(Контакт,
Форма) Экспорт
Если ТипЗнч(Контакт) =
Тип("СправочникСсылка.Пользователи") Тогда
Форма.Элементы.Страницы.ТекущаяСтраница
= Форма.Элементы.СтраницаПользователей;
Форма.Элементы.СписокПользователей.ТекущаяСтрока
= Контакт;
Иначе
МассивОписанийКонтактов =
Взаимодействия КлиентСервер.ПолучитьМассивОписанияВозможныхКонтактов();
ИмяМетаданныхКонтакта =
Контакт.Метаданные().Имя;
Для каждого
ЭлементМассиваОписания Из МассивОписанийКонтактов Цикл
Если
ЭлементМассиваОписания.Имя = ИмяМетаданныхКонтакта Тогда
Форма.Элементы.Страницы.ТекущаяСтраница
= Форма.Элементы["Страница_" +
?(ЭлементМассиваОписания.ЕстьВладелец,ЭлементМассиваОписания.ИмяВладельца,ЭлементМассиваОписания.Имя)];
Форма.Элементы["Таблица_"
+ ЭлементМассиваОписания.Имя].ТекущаяСтрока = Контакт;
Если
ЭлементМассиваОписания.ЕстьВладелец Тогда
Форма.Элементы["Таблица_"
+ ЭлементМассиваОписания.ИмяВладельца].ТекущаяСтрока = Контакт.Владелец;
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбора(Форма["Список_"
+ ЭлементМассиваОписания.Имя]. Отбор,"Владелец",Контакт.Владелец,,,Истина);
КонецЕсли;
ИначеЕсли
ЭлементМассиваОписания.ИмяВладельца = ИмяМетаданныхКонтакта Тогда
Форма.Элементы.Страницы.ТекущаяСтраница
= Форма.Элементы["Страница_" + ЭлементМассиваОписания. ИмяВладельца];
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбора(Форма["Список_"
+ ЭлементМассиваОписания.Имя].Отбор,"Владелец",Контакт,,,Истина);
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
// Получает доменный адрес из адреса электронной
почты //
Функция ПолучитьДоменныйАдресДляПоиска(Адрес)
Стр = Адрес;
Поз = Найти(Стр, "@");
Возврат ?(Поз = 0, "",
Сред(Стр, Поз+1));
КонецФункции
// Формирует варианты поиска по строке //
Функция
ПолучитьВариантыПоискаПоСтроке(Представление, Адрес)
Если ПустаяСтрока(Представление) ИЛИ
ПустаяСтрока(Адрес) Тогда
Возврат Представление +
Адрес;
КонецЕсли;
стрВариантыПоиска = Новый
СписокЗначений;
стрВариантыПоиска.Добавить(Представление
+ " ИЛИ " + Адрес);
стрВариантыПоиска.Добавить(Представление
+ " И " + Адрес);
Возврат стрВариантыПоиска;
КонецФункции
//Устанавливает предмет взаимодействия //
Процедура УстановитьПредмет(Ссылка, Предмет)
Экспорт
Если ЗначениеЗаполнено(Ссылка) Тогда
Объект =
Ссылка.ПолучитьОбъект();
Объект.Заблокировать();
Объект.Предмет = Предмет;
Объект.Записать();
КонецЕсли;
КонецПроцедуры
// Заполняет таблицу значений "Найденные
контакты" общих форм "Адресная книга" и "Выбора
контактов"//
Процедура
ЗаполнитьНайденныеКонтакты(ТабКонтакты,НайденныеКонтакты) Экспорт
Для Каждого Стр Из ТабКонтакты Цикл
новСтр =
НайденныеКонтакты.Добавить();
новСтр.Ссылка =
Стр.Контакт;
новСтр.Представление =
Стр.Представление;
новСтр.НаименованиеКонтакта =
Стр.Наименование + ?(ПустаяСтрока(Стр.НаименованиеВладельца), "",
" (" + Стр.НаименованиеВладельца + ")");
новСтр.ИмяСправочника =
Стр.Контакт.Метаданные().Имя;
КонецЦикла;
КонецПроцедуры
// Получает представление и всю контактную
информацию контакта. //
Процедура
ПолучитьПредставлениеИВсюКонтактнуюИнформациюКонтакта(Контакт, Представление,
СтрокаКИ,ТипКонтакнойИнформации = Неопределено) Экспорт
Представление = "";
СтрокаКИ = "";
Если Не ЗначениеЗаполнено(Контакт)
Тогда
Возврат;
КонецЕсли;
ИмяТаблицы = Контакт.Метаданные().Имя;
ИмяПоляДляНаименованияВладельца =
ПолучитьИмяПоляДляНаименованияВладельца(ИмяТаблицы);
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Таблица.Наименование,
| " +
ИмяПоляДляНаименованияВладельца + " КАК НаименованиеВладельца,
| Таблица.КонтактнаяИнформация.(
| Тип,
| Представление
| )
|ИЗ
| Справочник." +
ИмяТаблицы + " КАК Таблица
|ГДЕ
| Таблица.Ссылка =
&Контакт" + ?(ТипКонтакнойИнформации =
Неопределено,""," И Таблица.КонтактнаяИнформация.Тип =
&ТипКонтактнойИнформации");
Запрос.УстановитьПараметр("Контакт",
Контакт);
Запрос.УстановитьПараметр("ТипКонтактнойИнформации",ТипКонтакнойИнформации);
Выборка = Запрос.Выполнить().Выбрать();
Если Не Выборка.Следующий() Тогда
Возврат;
КонецЕсли;
Представление = Выборка.Наименование;
Если Не
ПустаяСтрока(Выборка.НаименованиеВладельца) Тогда
Представление = Представление
+ " (" + Выборка.НаименованиеВладельца + ")";
КонецЕсли;
Для Каждого Стр Из
Выборка.КонтактнаяИнформация.Выгрузить() Цикл
Если Стр.Тип <>
Перечисления.ТипыКонтактнойИнформации.Другое Тогда
СтрокаКИ = СтрокаКИ
+ ?(ПустаяСтрока(СтрокаКИ), "", ", ") + Стр.Представление;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
// Выполняет поиск контактов по строке //
Функция ОсуществитьПоискКонтактовПоСтроке
(Форма,ДляАдреснойКниги = Ложь) Экспорт
Форма.НайденныеКонтакты.Очистить();
Если ПустаяСтрока(Форма.СтрокаПоиска)
Тогда
Возврат
"";
КонецЕсли;
Если
ПолнотекстовыйПоиск.ПолучитьРежим ПолнотекстовогоПоиска() =
РежимПолнотекстовогоПоиска.Запретить Тогда
Возврат
НСтр("ru = 'Использование индекса полнотекстового поиска данных
запрещено!'");
КонецЕсли;
масМетаданных =
ПолучитьМассивМетаданныхКонтакты();
СписокПоиска =
ПолнотекстовыйПоиск.СоздатьСписок(Форма.СтрокаПоиска, 101);
СписокПоиска.ОбластьПоиска
= масМетаданных;
СписокПоиска.ПерваяЧасть();
КоличествоНайденныхЭлементов
= СписокПоиска.Количество();
Если
КоличествоНайденныхЭлементов = 0 Тогда
Возврат
"";
КонецЕсли;
масСсылок = Новый Массив;
соотвОписание = Новый
Соответствие;
Для Сч = 0 По
Мин(КоличествоНайденныхЭлементов, 100)-1 Цикл
ЭлементСписка =
СписокПоиска.Получить(Сч);
масСсылок.Добавить(ЭлементСписка.Значение);
соотвОписание.Вставить(ЭлементСписка.Значение,
ЭлементСписка.Описание);
КонецЦикла;
Если ДляАдреснойКниги
Тогда
ТекстЗапроса =
ПолучитьТекстЗапросаПоискКонтактовПоСтрокеСEmail();
Иначе
ТекстЗапроса =
ПолучитьТекстЗапросаПоискКонтактовПоСтроке();
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст =
ТекстЗапроса;
Запрос.УстановитьПараметр("масСсылок",
масСсылок);
Выборка =
Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий()
Цикл
новСтр = Форма.НайденныеКонтакты.Добавить();
новСтр.Ссылка =
Выборка.Контакт;
новСтр.Представление
=
?(ДляАдреснойКниги,Выборка.Представление,соотвОписание.Получить(Выборка.Контакт));
новСтр.НаименованиеКонтакта
= Выборка.Наименование + ?(ПустаяСтрока(Выборка.НаименованиеВладельца),
"", " (" + Выборка.НаименованиеВладельца + ")");
КонецЦикла;
Возврат
?(КоличествоНайденныхЭлементов < 101, "", НСтр("ru =
'Уточните параметры поиска. В списке отображены не все найденные
контакты!'"));
КонецФункции
// Заполняет табличную часть участники у
документов Встреча и Запланированное взаимодействие.//
Процедура ЗаполнитьКонтактыДляВстречи(Контакты,
Участники) Экспорт
Если Не
КонтактыЗаполнены(Контакты) Тогда
Возврат;
КонецЕсли;
Для Каждого Стр Из
Контакты Цикл
новСтр = Участники.Добавить();
Если ТипЗнч(Стр) =
Тип("Структура") Тогда
новСтр.Контакт
= Стр.Контакт;
новСтр.ПредставлениеКонтакта
= Стр.Представление;
новСтр.КакСвязаться
= Стр.Адрес;
Иначе
новСтр.Контакт
= Стр;
КонецЕсли;
ДозаполнитьПоляКонтактов(новСтр.Контакт,
новСтр.ПредставлениеКонтакта, новСтр.КакСвязаться);
КонецЦикла;
КонецПроцедуры
// Заполняет значения прочих полей в строках
табличной части Участники документов взаимодействий. //
Процедура ДозаполнитьПоляКонтактов(Контакт,
Представление, Адрес, ТипКонтактнойИнформации = Неопределено) Экспорт
Если Не
ЗначениеЗаполнено(Контакт) Тогда
Возврат;
ИначеЕсли Не
ПустаяСтрока(Представление) И Не ПустаяСтрока(Адрес) Тогда
Возврат;
КонецЕсли;
// Заполним поле
представление
Если ПустаяСтрока(Представление)
Тогда
Представление =
?(ЗначениеЗаполнено(Контакт),ОбщегоНазначения.ПолучитьЗначениеРеквизита(Контакт,"Наименование"),"");
КонецЕсли;
// Для всех типов кроме
электронной почты
Если
ТипКонтактнойИнформации <> Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты
Тогда
Если
ПустаяСтрока(Адрес) Тогда
ПолучитьПредставлениеИВсюКонтактнуюИнформациюКонтакта(Контакт,
"", Адрес,ТипКонтактнойИнформации);
КонецЕсли;
Возврат;
КонецЕсли;
// Для адреса электронной
почты проверим, введен он или нет
Если Найти(Адрес,
"@") <> 0 Тогда
Возврат;
КонецЕсли;
Адреса =
ПолучитьНаименованиеИАдресаЭлектроннойПочтыКонтакта(Контакт);
Если Адреса <>
Неопределено И Адреса.Адреса.Количество() > 0 Тогда
Элемент =
Адреса.Адреса.Получить(0);
Адрес =
Элемент.Значение;
КонецЕсли;
КонецПроцедуры
//Формирует строку-представление списка
участников взаимодействия //
Процедура СформироватьСписокУчастников(Объект)
Экспорт
Объект.СписокУчастников =
"";
Для Каждого Участник Из
Объект.Участники Цикл
Объект.СписокУчастников
= Объект.СписокУчастников + ?(Объект.СписокУчастников =
"","","; ") + Участник.ПредставлениеКонтакта;
КонецЦикла;
КонецПроцедуры
Процедура ПолучитьПисьма(УчетнаяЗапись,
ЕстьОшибки, СтрОшибка, Получено)
//
-----------------------------------------------------------------
// Сформируем почтовый
профиль и подключимся к почтовому серверу
Профиль =
ЭлектроннаяПочта.СформироватьИнтернетПрофиль(УчетнаяЗапись);
Почта = Новый
ИнтернетПочта;
Попытка
Почта.Подключиться(Профиль);
Исключение
ЕстьОшибки = Истина;
СтрОшибка =
ПолучитьОписаниеОшибки(ИнформацияОбОшибке());
Возврат;
КонецПопытки;
//
-----------------------------------------------------------------
// Получим идентификаторы
сообщений на сервере
Идентификаторы = Почта.ПолучитьИдентификаторы();
Если
Идентификаторы.Количество() = 0 Тогда
// если на сервере
сообщений нет, то удалим все записи по учетной записи в регистре сведений
ИдентификаторыПолученныхЭлектронныхПисем
УдалитьИдентификаторыВсехРанееПолученныхПисем(УчетнаяЗапись);
Почта.Отключиться();
Возврат;
КонецЕсли;
//
-----------------------------------------------------------------
// Определим какие
сообщения нужно получать
ИдЗагружать =
ПолучитьИдентификаторыПисемДляЗагрузки(Идентификаторы, УчетнаяЗапись);
Получено = 0;
Если
ИдЗагружать.Количество() <> 0 Тогда
// Получим нужные
сообщения
Сообщения =
Почта.Выбрать(Ложь, ИдЗагружать);
// Запишем их
Для Каждого
Сообщение Из Сообщения Цикл
ЗаписатьВходящееЭлектронноеПисьмо(УчетнаяЗапись,
Сообщение, УчетнаяЗапись.ОтветственныйЗаОбработкуПисем);
КонецЦикла;
Получено =
Сообщения.Количество();
КонецЕсли;
//
-----------------------------------------------------------------
// Удалим ненужные
сообщения на сервере
ОставлятьКопии =
(УчетнаяЗапись.ОставлятьКопииСообщенийНаСервере <> 0);
ОставлятьДней =
УчетнаяЗапись.ОставлятьКопииСообщенийНаСервере;
Если Не ОставлятьКопии
Тогда
// удалять все
масУдалять =
Идентификаторы;
УдалятьВсе = Истина;
Иначе
масУдалять =
ПолучитьИдентификаторыПисемДляУдаленияНаСервере(Идентификаторы, УчетнаяЗапись,
ТекущаяДата() - ОставлятьДней*24*60*60);
УдалятьВсе = Ложь;
КонецЕсли;
Если
масУдалять.Количество() <> 0 Тогда
Почта.УдалитьСообщения(масУдалять);
КонецЕсли;
//
-----------------------------------------------------------------
// Удалим ненужные
идентификаторы в регистре сведений
Если УдалятьВсе Тогда
УдалитьИдентификаторыВсехРанееПолученныхПисем(УчетнаяЗапись);
Иначе
УдалитьИдентификаторыРанееПолученныхПисем(УчетнаяЗапись,
Идентификаторы, масУдалять);
КонецЕсли;
//
-----------------------------------------------------------------
// Отключимся от
почтового сервера
Почта.Отключиться();
КонецПроцедуры
Процедура
ЗаписатьВходящееЭлектронноеПисьмо(УчетнаяЗапись, Сообщение, ОтветственныйЗаОбработкуПисем)
НачатьТранзакцию();
// Создадим документ и
заполним его реквизиты на основе сообщения
Письмо =
Документы.ЭлектронноеПисьмоВходящее.СоздатьДокумент();
Письмо.УчетнаяЗапись =
УчетнаяЗапись;
ЗаполнитьДокументЭлектронноеПисьмоВходящее(Письмо,
Сообщение);
// Найдем основание
письма, проставим предмет и определим контакты
ЗаполнитьПредметИКонтакты(Письмо);
// Заполним
ответственного
Ответственный =
?(ЗначениеЗаполнено(Письмо.Предмет), Письмо.Предмет.Ответственный,
Неопределено);
Если Не ЗначениеЗаполнено(Ответственный)
Тогда
Ответственный =
ОтветственныйЗаОбработкуПисем;
КонецЕсли;
// Запишем письмо
Письмо.Записать();
МассивИменВложений =
Новый Массив;
//Запишем вложения
Для Каждого Вложение Из
Сообщение.Вложения Цикл
МассивИменВложений.Добавить(Вложение.ИмяФайла);
КонецЦикла;
СоответствиеВложенийИПодписей
=
ФайловыеФункцииКлиентСервер.ПолучитьСоответствиеФайловИПодписей(МассивИменВложений);
Для каждого
ЭлементСоответствия Из СоответствиеВложенийИПодписей Цикл
НайденноеВложение =
Неопределено;
МассивПодписей =
Новый Массив;
Для каждого Вложение
Из Сообщение.Вложения Цикл
Если
Вложение.ИмяФайла = ЭлементСоответствия.Ключ Тогда
НайденноеВложение
= Вложение;
Прервать;
КонецЕсли
КонецЦикла;
Если
НайденноеВложение <> Неопределено И
ЭлементСоответствия.Значение.Количество() > 0 Тогда
Для
каждого Вложение Из Сообщение.Вложения Цикл
Если
ЭлементСоответствия.Значение. Найти(Вложение.ИмяФайла) <> Неопределено
Тогда
МассивПодписей.Добавить(Вложение);
КонецЕсли;
КонецЦикла;
КонецЕсли;
Если
НайденноеВложение <> Неопределено Тогда
ЗаписатьВложениеЭлектронногоПисьма(Письмо.Ссылка,
НайденноеВложение,МассивПодписей);
КонецЕсли;
КонецЦикла;
// Запишем идентификатор
ЗаписатьИдентификаторПолученногоПисьма(УчетнаяЗапись,
Письмо.ИдентификаторНаСервере, Сообщение.ДатаПолучения);
ЗафиксироватьТранзакцию();
КонецПроцедуры
// Выполняет процедуру отправки и получения
электронных писем.//
Процедура ПолучениеИОтправкаЭлектронныхПисем()
Экспорт
// Получим список учетных
записей для которых включено автополучение
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| УчетныеЗаписиЭлектроннойПочты.Ссылка
|ИЗ
| Справочник.УчетныеЗаписиЭлектроннойПочты
КАК УчетныеЗаписиЭлектроннойПочты";
Выборка =
Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий()
Цикл
ЕстьОшибки = Ложь;
СтрОшибка =
"";
Получено = 0;
ПолучитьПисьма(Выборка.Ссылка,
ЕстьОшибки, СтрОшибка, Получено);
КонецЦикла;
Возврат;
КонецПроцедуры
Приложение 2. Программный код формы «Адресная
книга»
// Переносит текущий контакт из списка
"Контакты по предмету" в список "Получатели письма". //
&НаКлиенте
Процедура ДобавитьИзСпискаПредметовВыполнить()
ДобавитьПолучателяИзСпискаПоПредмету();
КонецПроцедуры
//Изменяет текущую группу получателей письма на
группу "Кому".
//&НаКлиенте
Процедура ИзменитьГруппуКомуВыполнить()
ИзменитьГруппу("Кому");
КонецПроцедуры
//Изменяет текущую группу получателей письма на
группу "Копии". //
&НаКлиенте
Процедура ИзменитьГруппуКопииВыполнить()
ИзменитьГруппу("Копии");
КонецПроцедуры
//Изменяет текущую группу получателей письма на
группу "Скрытые".//
&НаКлиенте
Процедура ИзменитьГруппуСкрытыеВыполнить()
ИзменитьГруппу("Скрытые");
КонецПроцедуры
//Инициирует процесс поиска контактов. //
&НаКлиенте
Процедура КомандаНайтиВыполнить()
Если ПустаяСтрока(СтрокаПоиска) Тогда
Предупреждение(НСтр("ru
= 'Не задана строка поиска!'"));
Возврат;
КонецЕсли;
Результат = "";
НайденныеКонтакты.Очистить();
Если ВариантыПоиска = "ПоEmail"
Тогда
НайтиПоEmail(Ложь);
ИначеЕсли ВариантыПоиска =
"ПоДомену" Тогда
НайтиПоEmail(Истина);
ИначеЕсли ВариантыПоиска =
"ПоСтроке" Тогда
Результат =
ОсуществитьПоискКонтактовПоСтроке();
ИначеЕсли ВариантыПоиска =
"НачинаетсяС" Тогда
НайтиПоНачалуНаименования();
КонецЕсли;
Если Не ПустаяСтрока(Результат) Тогда
Предупреждение(Результат);
КонецЕсли;
КонецПроцедуры
//Инициирует поиск контактов по адресу
электронной почты текущей строки списка "Получатели письма".
//&НаКлиенте
Процедура НайтиПоАдресуВыполнить()
Элементы.Страницы.ТекущаяСтраница =
Элементы.ПоискКонтактов;
НайденныеКонтакты.Очистить();
ВариантыПоиска = "ПоEmail";
текДанные =
Элементы.ПолучателиПисьма.ТекущиеДанные;
Если текДанные = Неопределено Тогда
Возврат;
КонецЕсли;
СтрокаПоиска = текДанные.Адрес;
Если Не ПустаяСтрока(СтрокаПоиска)
Тогда
НайтиПоEmail(Ложь);
КонецЕсли;
КонецПроцедуры
//Инициирует поиск контактов по представлению
текущей строки списка "Получатели письма". //
&НаКлиенте
Процедура НайтиПоПредставлениюВыполнить()
Элементы.Страницы.ТекущаяСтраница =
Элементы.ПоискКонтактов;
НайденныеКонтакты.Очистить();
ВариантыПоиска = "ПоСтроке";
текДанные =
Элементы.ПолучателиПисьма.ТекущиеДанные;
Если текДанные = Неопределено Тогда
Возврат;
КонецЕсли;
СтрокаПоиска = текДанные.Представление;
Если Не ПустаяСтрока(СтрокаПоиска)
Тогда
Результат =
ОсуществитьПоискКонтактовПоСтроке();
Если Не
ПустаяСтрока(Результат) Тогда
Предупреждение(Результат);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
//Осуществляет поиск всех адресов электронной
почты контакта из списка "Получатели письма" и//предлагает
пользователю сделать выбор, если у контакта более одного адреса электронной
почты.
&НаКлиенте
Процедура УстановитьАдресКонтактаВыполнить()
текДанные = Элементы.ПолучателиПисьма.ТекущиеДанные;
Если текДанные = Неопределено ИЛИ Не
ЗначениеЗаполнено(текДанные.Контакт) Тогда
Возврат;
КонецЕсли;
Результат = Взаимодействия.
ПолучитьАдресаЭлектроннойПочтыКонтакта(текДанные.Контакт);
Если Результат.Количество() = 0 Тогда
Возврат;
КонецЕсли;
Если Результат.Количество() = 1 Тогда
Адрес = Результат[0].АдресЭП;
Представление =
Результат[0].Представление;
Иначе
спсВыбора = Новый
СписокЗначений;
Номер = 0;
Для Каждого Элемент Из
Результат Цикл
спсВыбора.Добавить(Номер,
Элемент.ВидНаименование + ": " + Элемент.АдресЭП);
Номер = Номер + 1;
КонецЦикла;
выбрЭлемент =
спсВыбора.ВыбратьЭлемент();
Если выбрЭлемент =
Неопределено Тогда
Возврат;
КонецЕсли;
Индекс =
выбрЭлемент.Значение;
Адрес = Результат[Индекс].АдресЭП;
Представление =
Результат[Индекс].Представление;
КонецЕсли;
Поз = Найти(Представление,
"<");
Представление = ?(Поз = 0,
"", СокрЛП(Лев(Представление, Поз-1)));
текДанные.Адрес = Адрес;
Если Не ПустаяСтрока(Представление)
Тогда
текДанные.Представление =
Представление;
КонецЕсли;
КонецПроцедуры
// Осуществляет поиск контактов по доменному
имени или по адресу электронной почты. //
&НаСервере
Функция НайтиПоEmail(ПоДомену)
Возврат
Взаимодействия.НайтиПоEmail(СтрокаПоиска,ПоДомену,ЭтаФорма);
КонецФункции
// Осуществляет поиск контактов по строке //
&НаСервере
Функция ОсуществитьПоискКонтактовПоСтроке()
Возврат Взаимодействия.
ОсуществитьПоискКонтактовПоСтроке(ЭтаФорма,Истина);
КонецФункции
// Осуществляет поиск контактов по началу
наименования //
&НаСервере
Функция НайтиПоНачалуНаименования()
Возврат
Взаимодействия.ПолучитьВсеКонтактыПоНачалу Наименования
САдресамиЭлектроннойПочты(СтрокаПоиска,ЭтаФорма);
КонецФункции
// Выбирает файл почтовик
&НаКлиенте
Процедура ВыбратьФайл(Команда)
Режим = РежимДиалогаВыбораФайла.Открытие;
ДиалогОткрытияФайла = Новый
ДиалогВыбораФайла(Режим);
ДиалогОткрытияФайла.ПолноеИмяФайла =
"";
Фильтр = "Файл(*.xml)|*.xml";
ДиалогОткрытияФайла.Фильтр = Фильтр;
ДиалогОткрытияФайла.МножественныйВыбор = Ложь;
ДиалогОткрытияФайла.Заголовок = "Выберите
файл для отправки";
Если ДиалогОткрытияФайла.Выбрать() Тогда
Элементы.ОтправитьФайлИмя.Заголовок =
ДиалогОткрытияФайла.ПолноеИмяФайла;
КонецЕсли;
КонецПроцедуры
// Заполняет адреса из файла почтовика
&НаКлиенте
Процедура ЗаполнитьАдреса(Команда)
ПолучателиПисьма.Очистить();
ФайлСАдресами = Новый ЧтениеXML;
Попытка
ФайлСАдресами.ОткрытьФайл(Элементы.ОтправитьФайлИмя.Заголовок);
Пока
ФайлСАдресами.Прочитать() Цикл
Если
ФайлСАдресами.ТипУзла=ТипУзлаXML.НачалоЭлемента Тогда
Сообщить(Строка(ФайлСАдресами.ЛокальноеИмя)+"
тип: "+Строка(ФайлСАдресами.ТипУзла));
Если
ФайлСАдресами.имя = "Mail" Тогда
Пока
ФайлСАдресами.ПрочитатьАтрибут() Цикл
Сообщить("Атрибут:
"+Строка(ФайлСАдресами.Значение));
Если
ФайлСАдресами.Имя = "Adress" Тогда
Адрес
= ФайлСАдресами.Значение;
КонецЕсли;
Если
ФайлСАдресами.Имя = "Company" Тогда
Представление
= ФайлСАдресами.Значение;
КонецЕсли;
Если
ФайлСАдресами.Имя = "Mail Name" Тогда
Контакт
= ФайлСАдресами.Значение;
КонецЕсли;
КонецЦикла;
Строка =
ПолучателиПисьма.Добавить();
Строка.Адрес
= Адрес;
Строка.Представление
= Представление;
Строка.Контакт
= Контакт;
Настройки
= Истина
КонецЕсли;
КонецЕсли;
КонецЦикла;
ФайлСАдресами.Закрыть();
КонецПроцедуры
Приложение 3. Программный код формы журнала
документов «Взаимодействия»
&НаСервереБезКонтекста
//установить флаг "отработано" в
выбранных взаимодействиях - серверная часть //
Процедура УстановитьФлагОтработано(Знач
Взаимодействия)
ТипГруппировка =
Тип("СтрокаГруппировкиДинамическогоСписка");
Для Каждого Взаимодействие Из
Взаимодействия Цикл
Если
ЗначениеЗаполнено(Взаимодействие)
И
ТипЗнч(Взаимодействие) <> ТипГруппировка Тогда
Объект =
Взаимодействие.ПолучитьОбъект();
Объект.Отработано =
Истина;
Объект.Записать();
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаСервереБезКонтекста
//установить ответственного в выбранных
взаимодействиях - серверная часть //
Процедура УстановитьОтветственного(Знач
Взаимодействия, Знач Ответственный)
ТипГруппировка =
Тип("СтрокаГруппировкиДинамическогоСписка");
Для Каждого Взаимодействие Из
Взаимодействия Цикл
Если
ЗначениеЗаполнено(Взаимодействие)
И
ТипЗнч(Взаимодействие) <> ТипГруппировка
И Взаимодействие.Ответственный
<> Ответственный Тогда
Объект =
Взаимодействие.ПолучитьОбъект();
Объект.ОтработатьПосле
= '0001.01.01';
Объект.Ответственный
= Ответственный;
Объект.Записать();
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаСервереБезКонтекста
//установить предмет в выбранных взаимодействиях
- серверная часть //
Процедура УстановитьПредмет(Знач
МассивВзаимодействия, Знач Предмет)
Для Каждого Взаимодействие Из
МассивВзаимодействия Цикл
Если
ЗначениеЗаполнено(Взаимодействие)
И ТипЗнч(Взаимодействие)
<> Тип("СтрокаГруппировкиДинамическогоСписка")
И
Взаимодействие.Предмет <> Предмет Тогда
Взаимодействия.УстановитьПредмет
(Взаимодействие, Предмет);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаСервереБезКонтекста
//устанавливает реквизит "отработать
после" в выбранных взаимодействиях - серверная часть //
Процедура ОтложитьОбработку(Знач Взаимодействия,
Знач ДатаОтработки)
Для Каждого Взаимодействие Из
Взаимодействия Цикл
Если
ЗначениеЗаполнено(Взаимодействие)
И ТипЗнч(Взаимодействие)
<> Тип("СтрокаГруппировкиДинамическогоСписка")
И
Взаимодействие.ОтработатьПосле <> ДатаОтработки Тогда
Объект =
Взаимодействие.ПолучитьОбъект();
Объект.ОтработатьПосле
= ДатаОтработки;
Объект.Записать();
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Функция ВыборКорректен()
Для Каждого Элемент Из
Элементы.Список.ВыделенныеСтроки Цикл
Если ТипЗнч(Элемент) <>
ТипГруппировка Тогда
Возврат Истина;
КонецЕсли;
КонецЦикла;
Возврат Ложь;
КонецФункции
&НаКлиенте
//получить входящую электронную почту
Процедура ПолучитьПочтуВыполнить()
УправлениеЭлектроннойПочтойКлиент.ЗагрузитьПочтуПользователя(Элементы.Список);
КонецПроцедуры
&НаКлиенте
//установить флаг "отработано" в
выбранных взаимодействиях - клиентская часть
Процедура ОтработаноВыполнить()
Если ВыборКорректен() Тогда
УстановитьФлагОтработано(Элементы.Список.ВыделенныеСтроки);
Элементы.Список.Обновить();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
//установить ответственного в выбранных
взаимодействиях - клиентская часть
Процедура ОтветственныйВыполнить()
Если ВыборКорректен() Тогда
Ответственный =
ОткрытьФормуМодально("Справочник.Пользователи.Форма.ФормаСписка",
Новый Структура("РежимВыбора",Истина));
Если Ответственный <>
Неопределено Тогда
Установить
Ответственного(Элементы.Список.ВыделенныеСтроки, Ответственный);
Элементы.Список.Обновить();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
//установить предмет в выбранных взаимодействиях
- клиентская часть
Процедура ПредметВыполнить()
Если ВыборКорректен() Тогда
Предмет =
ОткрытьФормуМодально
("ЖурналДокументов.Взаимодействия.Форма.ФормаВыборПредмета");
Если Предмет <>
Неопределено Тогда
УстановитьПредмет
(Элементы.Список.ВыделенныеСтроки, Предмет);
Элементы.Список.Обновить();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
//устанавливает реквизит "отработать
после" в выбранных взаимодействиях - клиентская часть
Процедура ОтложитьОбработкуВыполнить()
Если ВыборКорректен() Тогда
ДатаОтработки =
ТекущаяДата();
Если
ВвестиДату(ДатаОтработки, "Отработать после") Тогда
ОтложитьОбработку(Элементы.Список.ВыделенныеСтроки,
ДатаОтработки);
Элементы.Список.Обновить();
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Приложение 4. Программный код формы документа
«Электронное письмо входящее»
&НаСервере
Процедура ПриСозданииНаСервере(Отказ,
СтандартнаяОбработка)
// Пропускаем инициализацию, чтобы
гарантировать получение формы при передаче параметра "АвтоТест".
Если
Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
// Запретим создание новых
Если Не
ЗначениеЗаполнено(Объект.Ссылка) Тогда
Отказ = Истина;
Возврат;
КонецЕсли;
// Установим текст и вид текста
Если Объект.ТипТекста =
Перечисления.ТипыТекстовЭлектронныхПисем.HTML Тогда
ТекстПисьма =
Объект.ТекстHTML;
ОбработатьТекстHTML();
Элементы.ТекстПисьма.Вид =
ВидПоляФормы.ПолеHTMLДокумента;
Элементы.ТекстПисьма.ТолькоПросмотр
= Ложь;
ТекстПисьма = Объект.Текст;
Элементы.ТекстПисьма.Вид =
ВидПоляФормы.ПолеТекстовогоДокумента;
КонецЕсли;
// Сформируем представление отправителя
ОтправительПредставление =
УправлениеЭлектроннойПочтой.ПолучитьПредставлениеАдресата(Объект.ОтправительПредставление,
Объект.ОтправительАдрес, Объект.ОтправительКонтакт);
// Сформируем представление Кому и
Копии
ПолучателиПредставление = УправлениеЭлектроннойПочтой.ПолучитьПредставлениеСпискаАдресатов(Объект.ПолучателиПисьма);
ПолучателиКопийПредставление =
УправлениеЭлектроннойПочтой.ПолучитьПредставлениеСпискаАдресатов(Объект.ПолучателиКопий);
ПолучателиОтветаПредставление =
УправлениеЭлектроннойПочтой.ПолучитьПредставлениеСпискаАдресатов(Объект.ПолучателиОтвета);
// Заполним вложения
Если ЗначениеЗаполнено(Объект.Ссылка)
Тогда
табВложения =
УправлениеЭлектроннойПочтой.ПолучитьВложенияЭлектронногоПисьма(Объект.Ссылка);
Если табВложения.Количество()
> 0 Тогда
ЗначениеВРеквизитФормы(табВложения,
"Вложения");
Иначе
Элементы.ОткрытьВложение.Видимость
= Ложь;
Элементы.СохранитьВложение.Видимость
= Ложь;
КонецЕсли;
КонецЕсли;
// Заполним список выбора для поля
ОтработатьПосле
Взаимодействия.ЗаполнитьСписокВыбораДляОтработатьПосле(Элементы.ОтработатьПосле.СписокВыбора);
Если Объект.Отработано Тогда
Элементы.ОтработатьПосле.Доступность
= Ложь;
КонецЕсли;
ДополнительнаяИнформацияОПисьме =
НСтр("ru = 'Создано:'") + " " + Объект.Дата + НСтр("ru
= '
|Получено:'") + " " +
Объект.ДатаПолучения + НСтр("ru = '
|Важность:'") + " " +
Объект.Важность + НСтр("ru = '
|Кодировка:'") + " " +
Объект.Кодировка;
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия,
Параметр, Источник)
Если ИмяСобытия = "Контакт
создан" И Параметр.Основание = Объект.Ссылка Тогда
Элементы.Участники.ТекущиеДанные.Контакт
= Параметр.Ссылка;
Элементы.СоздатьКонтакт.Доступность
= Ложь;
Модифицированность = Истина;
Если
ПустаяСтрока(Элементы.Участники.ТекущиеДанные.Представление) Тогда
Элементы.Участники.ТекущиеДанные.Представление
= Параметр.Наименование;
КонецЕсли;
ИначеЕсли ИмяСобытия = "Создан
предмет взаимодействия" И Параметр.Основание = Объект.Ссылка Тогда
Прочитать();
ОтобразитьИзменениеДанных(Объект.Предмет,
ВидИзмененияДанных.Изменение);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ,
ТекущийОбъект, РежимЗаписи, РежимПроведения)
Взаимодействия.ПередЗаписьюВзаимодействияИзФормы(ТекущийОбъект);
КонецПроцедуры
&НаКлиенте
Процедура УточнитьКонтактыВыполнить()
РедактироватьПолучателей();
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьВложениеВыполнить()
ОткрытьВложение();
КонецПроцедуры
&НаКлиенте
Процедура СохранитьВложениеВыполнить()
ТекущиеДанные = Элементы.Вложения.ТекущиеДанные;
Если ТекущиеДанные <>
Неопределено Тогда
ДанныеФайла =
ПрисоединенныеФайлы.ПолучитьДанныеФайла(ТекущиеДанные.Ссылка,УникальныйИдентификатор);
ПрисоединенныеФайлыКлиент.СохранитьФайлКак(ДанныеФайла);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ДополнительноВыполнить()
Текст = Новый ТекстовыйДокумент;
Текст.ДобавитьСтроку(ДополнительнаяИнформацияОПисьме);
Текст.ДобавитьСтроку("");
Текст.ДобавитьСтроку("");
Текст.ДобавитьСтроку("-------------------------------------------------");
Текст.ДобавитьСтроку(Объект.ВнутреннийЗаголовок);
Текст.Показать();
КонецПроцедуры
&НаКлиенте
Процедура СвязанныеВзаимодействияВыполнить()
ОткрытьФормуМодально("ЖурналДокументов.Взаимодействия.ФормаСписка",
Новый
Структура("ОбъектОтбора", Объект.Предмет));
КонецПроцедуры
&НаКлиенте
Процедура ИзменитьКодировку(Команда)
СписокКодировок =
УправлениеЭлектроннойПочтой.ПолучитьСписокКодировок();
ВыбраннаяКодировка =
СписокКодировок.ВыбратьЭлемент("ВыберитеКодировку",СписокКодировок.НайтиПоЗначению(НРег(Объект.Кодировка)));
Если ВыбраннаяКодировка <>
Неопределено Тогда
ПреобразоватьКодировкуПисьма(ВыбраннаяКодировка.Значение);
КонецЕсли;
КонецПроцедуры
Приложение 5. Программный код формы документа «Электронное
письмо исходящее»
&НаСервере
Процедура ПриСозданииНаСервере(Отказ,
СтандартнаяОбработка)
// Пропускаем инициализацию, чтобы
гарантировать получение формы при передаче параметра "АвтоТест".
Если
Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
Если Объект.Ссылка.Пустая() Тогда
Если
Параметры.Свойство("Вложения") Тогда
Для каждого Вложение
Из Параметры.Вложения Цикл
новСтр =
Вложения.Добавить();
новСтр.Расположение
= 2;
новСтр.ИмяФайлаНаКомпьютере
= Вложение.Значение;
ИмяФайла =
"";
Расширение
= "";
ВзаимодействияКлиентСервер.
ПолучитьКаталогИИмяФайла(Вложение.Значение, "", ИмяФайла);
новСтр.ИмяФайла
= Вложение.Представление;
Расширение
= ВзаимодействияКлиентСервер.ПолучитьРасширениеФайла(ИмяФайла);
новСтр.ИндексКартинки
= ФайловыеФункцииКлиентСервер.ПолучитьИндексПиктограммыФайла(Расширение);
КонецЦикла;
КонецЕсли;
Если
Параметры.Свойство("Тема") Тогда
Объект.Тема =
Параметры.Тема;
КонецЕсли;
Если
Параметры.Свойство("Тело") Тогда
Объект.Текст =
Параметры.Тело;
КонецЕсли;
Если
Параметры.Свойство("УчетнаяЗапись") Тогда
Объект.УчетнаяЗапись
= Параметры.УчетнаяЗапись;
РеквизитыОтправителя
=
ОбщегоНазначения.ПолучитьЗначенияРеквизитов(Параметры.УчетнаяЗапись,"Ссылка,ИмяПользователя,АдресЭлектроннойПочты");
Объект.ОтправительПредставление
=
УправлениеЭлектроннойПочтой.ПолучитьПредставлениеАдресата(РеквизитыОтправителя.ИмяПользователя,РеквизитыОтправителя.АдресЭлектроннойПочты,"");
КонецЕсли;
КонецЕсли;
// Заполним список кодировок
СписокКодировок =
УправлениеЭлектроннойПочтой.ПолучитьСписокКодировок();
Для Каждого Элемент Из СписокКодировок
Цикл
Элементы.Кодировка.СписокВыбора.Добавить(Элемент.Значение);
КонецЦикла;
Если Объект.СтатусПисьма <>
Перечисления.СтатусыИсходящегоЭлектронногоПисьма.Черновик Тогда
Элементы.Отправить.Доступность
= Ложь;
Элементы.ОтправительПредставление.ТолькоПросмотр
= Истина;
Элементы.ГруппаДоступныТолькоДляЧерновика.ТолькоПросмотр
= Истина;
Элементы.СписокПолучателейПисьма.РедактированиеТекста
= Ложь;
Элементы.СписокПолучателейКопий.РедактированиеТекста
= Ложь;
Элементы.СписокПолучателейСкрытыхКопий.РедактированиеТекста
= Ложь;
Элементы.ГруппаДоступныТолькоДляЧерновика.ТолькоПросмотр
= Истина;
Элементы.ДобавитьВложение.Доступность
= Ложь
Иначе
// Заполним список выбора
учетных записей
УправлениеЭлектроннойПочтой.ПолучитьДоступныеУчетныеЗаписиДляОтправки(Элементы.ОтправительПредставление.СписокВыбора);
КонецЕсли;
Для Каждого Стр Из
Объект.ПолучателиПисьма Цикл
Если
ЗначениеЗаполнено(Стр.Контакт) Тогда
СоответствияАдресовИКонтактов.Добавить(Стр.Контакт,
Стр.Адрес);
КонецЕсли;
КонецЦикла;
// Заполним вложения
табВложения =
УправлениеЭлектроннойПочтой.ПолучитьВложенияЭлектронногоПисьма(Объект.Ссылка);
Для Каждого Стр Из табВложения Цикл
новСтр = Вложения.Добавить();
новСтр.Ссылка = Стр.Ссылка;
новСтр.ИмяФайла =
Стр.ИмяФайла;
новСтр.ИндексКартинки =
Стр.ИндексКартинки;
новСтр.Размер = Стр.Размер;
новСтр.Расположение = 0;
КонецЦикла;
Взаимодействия.ЗаполнитьСписокВыбораДляОтработатьПосле(Элементы.ОтработатьПосле.СписокВыбора);
// Если письмо отправлено, переименуем
команду "ПодобратьКонтакты"
Если Объект.СтатусПисьма <>
Перечисления.СтатусыИсходящегоЭлектронногоПисьма.Черновик Тогда
Элементы.ПодобратьКонтакты.Видимость
= Ложь;
Иначе
Элементы.УточнитьКонтакты.Видимость
= Ложь;
КонецЕсли;
//подготовить оповещения взаимодействий
Взаимодействия.ПодготовитьОповещения(ЭтаФорма,Параметры);
КонецПроцедуры
&НаКлиенте
Процедура КнопкаДополнительноВыполнить()
Текст = Новый ТекстовыйДокумент;
Текст.ДобавитьСтроку("Создано:
" + Объект.Дата);
Текст.ДобавитьСтроку("Отправлено:
" + Объект.ДатаОтправления);
Текст.ДобавитьСтроку("");
Текст.ДобавитьСтроку("");
Текст.ДобавитьСтроку("-------------------------------------------------");
Текст.ДобавитьСтроку("Идентификатор
сообщения: " + Объект.ИдентификаторСообщения);
Текст.ДобавитьСтроку("Идентификатор
основания: " + Объект.ИдентификаторОснования);
Текст.ДобавитьСтроку("Идентификаторы
оснований: " +
ПолучитьПредставлениеИдентификаторовОснований(Объект.ИдентификаторыОснований));
Текст.Показать();
КонецПроцедуры
&НаКлиенте
Процедура
ОтработатьПослеОбработкаВыбора(Элемент, ВыбранноеЗначение,
СтандартнаяОбработка)
ВзаимодействияКлиент.ОбработатьВыборВПолеОтработатьПосле(
Объект.ОтработатьПосле,
ВыбранноеЗначение, СтандартнаяОбработка, Модифицированность);
КонецПроцедуры
&НаКлиенте
Процедура
ПредставлениеОтправителяОбработкаВыбора(Элемент, ВыбранноеЗначение,
СтандартнаяОбработка)
Объект.УчетнаяЗапись =
ВыбранноеЗначение;
ЭлементСписка =
Элемент.СписокВыбора.НайтиПоЗначению(ВыбранноеЗначение);
Если ЭлементСписка <>
Неопределено Тогда
СтандартнаяОбработка = Ложь;
Объект.ОтправительПредставление
= ЭлементСписка.Представление;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ВложенияВыбор(Элемент,
ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
ОткрытьВложениеВыполнить();
КонецПроцедуры
&НаКлиенте
Процедура
СписокПолучателейПисьмаПриИзменении(Элемент)
ПреобразоватьИменаПолучателей(Объект.СписокПолучателейПисьма,
"ПолучателиПисьма");
КонецПроцедуры
&НаКлиенте
Процедура
СписокПолучателейКопийПриИзменении(Элемент)
ПреобразоватьИменаПолучателей(Объект.СписокПолучателейКопий,
"ПолучателиКопий");
КонецПроцедуры
&НаКлиенте
Процедура СписокПолучателейСкрытыхКопийПриИзменении(Элемент)
ПреобразоватьИменаПолучателей(Объект.СписокПолучателейСкрытыхКопий,
"ПолучателиСкрытыхКопий");
КонецПроцедуры
&НаКлиенте
Процедура ПодобратьКонтактыВыполнить()
РедактироватьСписокПолучателей(Истина);
КонецПроцедуры
&НаКлиенте
Процедура УточнитьКонтактыВыполнить()
РедактироватьСписокПолучателей(Ложь);
КонецПроцедуры
&НаКлиенте
Процедура
ВложенияПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа)
Отказ = Истина;
ДобавитьВложениеВыполнить();
КонецПроцедуры
&НаКлиенте
Процедура ДобавитьВложениеВыполнить()
#Если Не ВебКлиент Тогда
Диалог = Новый
ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
Диалог.МножественныйВыбор =
Истина;
Если Не Диалог.Выбрать()
Тогда
Возврат;
КонецЕсли;
Для Каждого ВыбранныйФайл Из
Диалог.ВыбранныеФайлы Цикл
новСтр =
Вложения.Добавить();
новСтр.Расположение
= 2;
новСтр.ИмяФайлаНаКомпьютере
= ВыбранныйФайл;
ИмяФайла =
"";
Расширение =
"";
ВзаимодействияКлиентСервер.ПолучитьКаталогИИмяФайла(ВыбранныйФайл,
"", ИмяФайла);
новСтр.ИмяФайла =
ИмяФайла;
Расширение =
ВзаимодействияКлиентСервер.ПолучитьРасширениеФайла(ИмяФайла);
новСтр.ИндексКартинки
= ФайловыеФункции КлиентСервер.ПолучитьИндексПиктограммыФайла(Расширение);
КонецЦикла;
#Иначе
Адрес = "";
ВыбранныйФайл = "";
Если Не ПоместитьФайл(Адрес,
"", ВыбранныйФайл, Истина, УникальныйИдентификатор) Тогда
Возврат;
КонецЕсли;
новСтр = Вложения.Добавить();
новСтр.Расположение = 4;
новСтр.ИмяФайлаНаКомпьютере =
Адрес;
новСтр.ИмяФайла =
ВыбранныйФайл;
Расширение =
ВзаимодействияКлиентСервер. ПолучитьРасширениеФайла(ВыбранныйФайл);
новСтр.ИндексКартинки =
ФайловыеФункцииКлиентСервер.ПолучитьИндексПиктограммыФайла(Расширение);
ОбновитьОтображениеДанных();
#КонецЕсли
КонецПроцедуры
&НаКлиенте
Процедура УдалитьВложениеВыполнить()
ДобавитьВложениеВСписокУдаленных();
текДанные =
Элементы.Вложения.ТекущиеДанные;
Если текДанные <> Неопределено
Тогда
Индекс =
Вложения.Индекс(текДанные);
Вложения.Удалить(Индекс); ОбновитьОтображениеДанных();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ОткрытьВложениеВыполнить()
текДанные =
Элементы.Вложения.ТекущиеДанные;
Если текДанные = Неопределено Тогда
Возврат;
КонецЕсли;
Если (текДанные.Расположение = 0) ИЛИ
(текДанные.Расположение = 1) Тогда
УправлениеЭлектроннойПочтойКлиент.ОткрытьВложение(текДанные.Ссылка,УникальныйИдентификатор);
ИначеЕсли текДанные.Расположение = 2
Тогда
#Если Не ВебКлиент Тогда
ЗапуститьПриложение(""""
+ текДанные.ИмяФайлаНаКомпьютере + """");
#КонецЕсли
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ВыполнитьОтправкуПисьма()
ПараметрыПисьма = Новый Структура;
ДобавитьВПараметрАдресатов(ПараметрыПисьма,
"Кому", "ПолучателиПисьма");
ДобавитьВПараметрАдресатов(ПараметрыПисьма,
"Копии", "ПолучателиКопий");
ДобавитьВПараметрАдресатов(ПараметрыПисьма,
"СкрытыеКопии", "ПолучателиСкрытыхКопий");
ПараметрыПисьма.Вставить("Тема",
Объект.Тема);
ПараметрыПисьма.Вставить("Тело",
Объект.Текст);
ПараметрыПисьма.Вставить("Кодировка",
Объект.Кодировка);
ПараметрыПисьма.Вставить("Важность",
УправлениеЭлектроннойПочтой.ПолучитьВажность(Объект.Важность));
Если Не
ПустаяСтрока(Объект.ИдентификаторыОснований) Тогда
ПараметрыПисьма.Вставить("ИдентификаторыОснований",
Объект.ИдентификаторыОснований);
КонецЕсли;
соотвВложения = Новый Соответствие;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Файлы.Наименование КАК
ПолноеНаименование,
| Файлы.Расширение КАК
Расширение,
| Файлы.Ссылка КАК Ссылка,
| Файлы.ЭлектронныеЦифровыеПодписи.(
| НомерСтроки,
| Подпись
| )
|ИЗ
| Справочник.ЭлектронноеПисьмоИсходящееПрисоединенныеФайлы
КАК Файлы
|ГДЕ
| Файлы.ВладелецФайла =
&ВладелецФайла";
Запрос.УстановитьПараметр("ВладелецФайла",
Объект.Ссылка);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
ИмяФайла =
Выборка.ПолноеНаименование + ?(Выборка.Расширение = "", "",
"." + Выборка.Расширение);
соотвВложения.Вставить(ИмяФайла,
Присоединенные Файлы.ПолучитьДвоичныеДанныеФайла(Выборка.Ссылка));
Для каждого ЭЦП Из
Выборка.ЭлектронныеЦифровыеПодписи.Выгрузить() Цикл
соотвВложения.Вставить(Выборка.ПолноеНаименование
+ "-DS("+ ЭЦП.НомерСтроки +
").p7s",ЭЦП.Подпись.Получить());
КонецЦикла;
КонецЦикла;
ПараметрыПисьма.Вставить("Вложения",
соотвВложения);
Возврат ЭлектроннаяПочта.ОтправитьПочтовоеСообщение(Объект.УчетнаяЗапись,
ПараметрыПисьма);
КонецФункции
Приложение 6. Программный код формы документа
«Телефонный звонок»
&НаКлиенте
Процедура СоздатьКонтактВыполнить()
ВзаимодействияКлиент.СоздатьКонтакт(
Объект.АбонентПредставление,
Объект.АбонентКак Связаться, Объект.Ссылка,
СписокИнтерактивноСоздаваемыхКонтактов
);
КонецПроцедуры
&НаКлиенте
Процедура СвязанныеВзаимодействияВыполнить()
ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("Предмет",
Объект.Предмет);
ОткрытьФорму("ЖурналДокументов.Взаимодействия.ФормаСписка",
ПараметрыОтбора, ЭтаФорма, , Окно);
КонецПроцедуры
&НаКлиенте
Процедура КонтактНачалоВыбора(Элемент,
ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Если ВзаимодействияКлиент.ВыбратьКонтакт(Объект.Предмет,
Объект.АбонентКакСвязаться, Объект.АбонентПредставление, Объект.АбонентКонтакт,
Ложь, Ложь, Истина) Тогда
Модифицированность = Истина;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура
ПредставлениеКонтактаПриИзменении(Элемент)
ПроверитьДоступностьСозданияКонтакта();
КонецПроцедуры
&НаКлиенте
Процедура КонтактПриИзменении(Элемент)
ПроверитьДоступностьСозданияКонтакта();
КонецПроцедуры
&НаКлиенте
Процедура
ОтработатьПослеОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
ВзаимодействияКлиент.ОбработатьВыборВПолеОтработатьПосле(Объект.ОтработатьПосле,
ВыбранноеЗначение, СтандартнаяОбработка, Модифицированность);
КонецПроцедуры
&НаКлиенте
Элементы.СоздатьКонтакт.Доступность =
(Не ЗначениеЗаполнено(Объект.АбонентКонтакт)) И (Не
ПустаяСтрока(Объект.АбонентПредставление));
КонецПроцедуры
Приложение 7. Программный код формы документа
«Встреча»
&НаКлиенте
Процедура ПроверитьДоступностьСозданияКонтакта()
текДанные = Элементы.Участники.ТекущиеДанные;
Элементы.СоздатьКонтакт.Доступность =
((текДанные <> Неопределено) И (НЕ
ЗначениеЗаполнено(текДанные.Контакт)));
КонецПроцедуры
&НаКлиенте
Функция ВыделитьВремя(Дата)
Возврат Час(Дата) * 3600 + Минута(Дата)
* 60;
КонецФункции
&НаКлиенте
Процедура КонтактНачалоВыбора(Элемент,
ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
текДанные =
Элементы.Участники.ТекущиеДанные;
Если
ВзаимодействияКлиент.ВыбратьКонтакт(Объект.Предмет, текДанные.КакСвязаться,
текДанные.ПредставлениеКонтакта, текДанные.Контакт, Ложь, Ложь, Истина) Тогда
Модифицированность = Истина;
ПроверитьДоступностьСозданияКонтакта();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура УчастникиПриАктивизацииСтроки(Элемент)
ПроверитьДоступностьСозданияКонтакта();
КонецПроцедуры
&НаКлиенте
Процедура
ПредставлениеКонтактаПриИзменении(Элемент)
ПроверитьДоступностьСозданияКонтакта();
КонецПроцедуры
&НаКлиенте
Процедура КонтактПриИзменении(Элемент)
ПроверитьДоступностьСозданияКонтакта();
КонецПроцедуры
&НаКлиенте
Процедура
ОтработатьПослеОбработкаВыбора(Элемент, ВыбранноеЗначение,
СтандартнаяОбработка)
ВзаимодействияКлиент.ОбработатьВыборВПолеОтработатьПосле(Объект.ОтработатьПосле,
ВыбранноеЗначение, СтандартнаяОбработка, Модифицированность);
КонецПроцедуры
&НаКлиенте
Процедура
ВремяНачалаНачалоВыбораИзСписка(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ВыбранноеВремя =
ВзаимодействияКлиент.ВыбратьВремя(ЭтаФорма, Элемент, ВремяНачала, 1800);
Если ВыбранноеВремя = Неопределено
Тогда
Возврат;
КонецЕсли;
ВремяНачала = ВыбранноеВремя;
ВремяНачалаПриИзменении(Элемент);
КонецПроцедуры
&НаКлиенте
Процедура
ВремяОкончанияНачалоВыбораИзСписка(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ВыбранноеВремя =
ВзаимодействияКлиент.ВыбратьВремя(ЭтаФорма, Элемент, ВремяОкончания, 1800);
Если ВыбранноеВремя = Неопределено
Тогда
Возврат;
КонецЕсли;
ВремяОкончания = ВыбранноеВремя;
ВремяОкончанияПриИзменении(Элемент);
КонецПроцедуры
&НаКлиенте
Процедура ВремяНачалаПриИзменении(Элемент)
Объект.ДатаНачала =
НачалоДня(Объект.ДатаНачала) + ВыделитьВремя(ВремяНачала);
Объект.ДатаОкончания =
Объект.ДатаНачала + Продолжительность;
ВремяОкончания = Объект.ДатаОкончания;
КонецПроцедуры
&НаКлиенте
Процедура ВремяОкончанияПриИзменении(Элемент)
Если НачалоДня(Объект.ДатаОкончания) +
ВыделитьВремя(ВремяОкончания) < Объект.ДатаНачала Тогда
Сообщить(НСтр("ru='Время
окончания не может быть меньше времени начала.'"));
ВремяОкончания = ВремяНачала
+ 1800;
Возврат;
КонецЕсли;
Объект.ДатаОкончания =
НачалоДня(Объект.ДатаОкончания) + ВыделитьВремя(ВремяОкончания);
Продолжительность =
Объект.ДатаОкончания - Объект.ДатаНачала;
КонецПроцедуры
&НаКлиенте
Процедура ДатаНачалаПриИзменении(Элемент)
Объект.ДатаНачала =
НачалоДня(ДатаНачала) + ВыделитьВремя(ВремяНачала);
Объект.ДатаОкончания =
Объект.ДатаНачала + Продолжительность;
ДатаОкончания = Объект.ДатаОкончания;
КонецПроцедуры
&НаКлиенте
Процедура ДатаОкончанияПриИзменении(Элемент)
Если НачалоДня(ДатаОкончания) +
ВыделитьВремя(ВремяОкончания) < Объект.ДатаНачала Тогда
Сообщить(НСтр("ru='Дата
окончания не может быть меньше даты начала.'"));
ДатаОкончания =
Объект.ДатаНачала;
Возврат;
КонецЕсли;
Объект.ДатаОкончания =
НачалоДня(ДатаОкончания) + ВыделитьВремя(ВремяОкончания);
Продолжительность =
Объект.ДатаОкончания - Объект.ДатаНачала;
КонецПроцедуры
Приложение 8. Программный код формы документа
«Запланированное взаимодействие»
&НаКлиенте
Процедура СоздатьКонтактВыполнить()
текДанные =
Элементы.Участники.ТекущиеДанные;
Если текДанные <> Неопределено
Тогда
ВзаимодействияКлиент.СоздатьКонтакт(
текДанные.ПредставлениеКонтакта,
текДанные.КакСвязаться, Объект.Ссылка,СписокИнтерактивноСоздаваемыхКонтактов);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СвязанныеВзаимодействияВыполнить()
ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("Предмет",
Объект.Предмет);
ОткрытьФорму("ЖурналДокументов.Взаимодействия.ФормаСписка",
ПараметрыОтбора, ЭтаФорма, , Окно);
КонецПроцедуры
&НаКлиенте
Процедура КонтактНачалоВыбора(Элемент, ДанныеВыбора,
СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
текДанные =
Элементы.Участники.ТекущиеДанные;
Если
ВзаимодействияКлиент.ВыбратьКонтакт(Объект.Предмет, текДанные.КакСвязаться,
текДанные.ПредставлениеКонтакта, текДанные.Контакт, Ложь, Ложь, Истина) Тогда
Модифицированность = Истина;
ПроверитьДоступностьСозданияКонтакта();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура УчастникиПриАктивизацииСтроки(Элемент)
ПроверитьДоступностьСозданияКонтакта();
КонецПроцедуры
&НаКлиенте
Процедура ПредставлениеКонтактаПриИзменении(Элемент)
ПроверитьДоступностьСозданияКонтакта();
КонецПроцедуры
&НаКлиенте
Процедура КонтактПриИзменении(Элемент)
ПроверитьДоступностьСозданияКонтакта();
КонецПроцедуры
&НаКлиенте
Процедура ОтработатьПослеОбработкаВыбора(Элемент,
ВыбранноеЗначение, СтандартнаяОбработка)
ВзаимодействияКлиент.ОбработатьВыборВПолеОтработатьПосле(Объект.ОтработатьПосле,
ВыбранноеЗначение, СтандартнаяОбработка, Модифицированность);
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьДоступностьСозданияКонтакта()
текДанные =
Элементы.Участники.ТекущиеДанные;
Элементы.СоздатьКонтакт.Доступность =
((текДанные <> Неопределено) И (НЕ
ЗначениеЗаполнено(текДанные.Контакт)));
КонецПроцедуры