807 lines
58 KiB
Plaintext
807 lines
58 KiB
Plaintext
///////////////////////////////////////////////////////////////////////////////////////////////////////
|
||
// Copyright (c) 2024, ООО 1С-Софт
|
||
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
|
||
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
|
||
// Текст лицензии доступен по ссылке:
|
||
// https://creativecommons.org/licenses/by/4.0/legalcode
|
||
///////////////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
||
#Область ПрограммныйИнтерфейс
|
||
|
||
// Открывает форму нового документа "Сообщение SMS" с переданными параметрами.
|
||
//
|
||
// Параметры:
|
||
// ПараметрыФормы - см. ВзаимодействияКлиент.ПараметрыФормыОтправкиSMS.
|
||
// УдалитьТекст - Строка - не используется.
|
||
// УдалитьПредмет - ЛюбаяСсылка - не используется.
|
||
// УдалитьОтправлятьВТранслите - Булево - не используется.
|
||
//
|
||
Процедура ОткрытьФормуОтправкиSMS(Знач ПараметрыФормы = Неопределено,
|
||
Знач УдалитьТекст = "", Знач УдалитьПредмет = Неопределено, Знач УдалитьОтправлятьВТранслите = Ложь) Экспорт
|
||
|
||
Если ТипЗнч(ПараметрыФормы) <> Тип("Структура") Тогда
|
||
Параметры = ПараметрыФормыОтправкиSMS();
|
||
Параметры.Адресаты = ПараметрыФормы;
|
||
Параметры.Текст = УдалитьТекст;
|
||
Параметры.Предмет = УдалитьПредмет;
|
||
Параметры.ОтправлятьВТранслите = УдалитьОтправлятьВТранслите;
|
||
ПараметрыФормы = Параметры;
|
||
КонецЕсли;
|
||
ОткрытьФорму("Документ.СообщениеSMS.ФормаОбъекта", ПараметрыФормы);
|
||
|
||
КонецПроцедуры
|
||
|
||
// Возвращает параметры для передачи в ВзаимодействияКлиент.ОткрытьФормуОтправкиSMS.
|
||
//
|
||
// Возвращаемое значение:
|
||
// Структура:
|
||
// * Адресаты - Строка
|
||
// - СписокЗначений
|
||
// - Массив - список получателей письма.
|
||
// * Текст - Строка - текст письма.
|
||
// * Предмет - ЛюбаяСсылка - предмет письма.
|
||
// * ОтправлятьВТранслите - Булево - признак того, что сообщение при отправке должно быть преобразовано в латинские
|
||
// символы.
|
||
//
|
||
Функция ПараметрыФормыОтправкиSMS() Экспорт
|
||
|
||
Результат = Новый Структура;
|
||
Результат.Вставить("Адресаты", Неопределено);
|
||
Результат.Вставить("Текст", "");
|
||
Результат.Вставить("Предмет", Неопределено);
|
||
Результат.Вставить("ОтправлятьВТранслите", Ложь);
|
||
Возврат Результат;
|
||
|
||
КонецФункции
|
||
|
||
// Обработчик для события формы ПослеЗаписиНаСервере. Вызывается для контакта.
|
||
//
|
||
// Параметры:
|
||
// Форма - ФормаКлиентскогоПриложения - форма, для которой обрабатывается событие.
|
||
// Объект - ДанныеФормыКоллекция - данные объекта хранимые в форме.
|
||
// ПараметрыЗаписи - Структура - структура, в которую добавляются параметры, которые потом будут
|
||
// посланы с оповещением.
|
||
// ИмяОбъектаОтправителяСообщения - Строка - имя объекта метаданных, для формы которого обрабатывается событие.
|
||
// ПосылатьОповещение - Булево - признак необходимости отправки оповещения из этой процедуры.
|
||
//
|
||
Процедура КонтактПослеЗаписи(Форма,Объект,ПараметрыЗаписи,ИмяОбъектаОтправителяСообщения,ПосылатьОповещение = Истина) Экспорт
|
||
|
||
Если Форма.НеобходимоОповещение Тогда
|
||
|
||
Если ЗначениеЗаполнено(Форма.ОбъектОснование) Тогда
|
||
ПараметрыЗаписи.Вставить("Ссылка",Объект.Ссылка);
|
||
ПараметрыЗаписи.Вставить("Наименование",Объект.Наименование);
|
||
ПараметрыЗаписи.Вставить("Основание",Форма.ОбъектОснование);
|
||
ПараметрыЗаписи.Вставить("ТипОповещения","ЗаписьКонтакта");
|
||
КонецЕсли;
|
||
|
||
Если ПосылатьОповещение Тогда
|
||
Оповестить("Запись_" + ИмяОбъектаОтправителяСообщения,ПараметрыЗаписи,Объект.Ссылка);
|
||
Форма.НеобходимоОповещение = Ложь
|
||
КонецЕсли;
|
||
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
// Обработчик для события формы ПослеЗаписиНаСервере. Вызывается для взаимодействия или предмета взаимодействия.
|
||
//
|
||
// Параметры:
|
||
// Форма - ФормаКлиентскогоПриложения - форма, для которой обрабатывается событие.
|
||
// Объект - ОпределяемыйТип.ПредметВзаимодействия - данные объекта хранимые в форме.
|
||
// ПараметрыЗаписи - Структура - структура, в которую добавляются параметры, которые потом будут
|
||
// посланы с оповещением.
|
||
// ИмяОбъектаОтправителяСообщения - Строка - имя объекта метаданных, для формы которого обрабатывается событие.
|
||
// ПосылатьОповещение - Булево - признак необходимости отправки оповещения из этой процедуры.
|
||
//
|
||
Процедура ВзаимодействиеПредметПослеЗаписи(Форма,Объект,ПараметрыЗаписи,ИмяОбъектаОтправителяСообщения = "",ПосылатьОповещение = Истина) Экспорт
|
||
|
||
Если ЗначениеЗаполнено(Форма.ВзаимодействиеОснование) Тогда
|
||
ПараметрыЗаписи.Вставить("Основание",Форма.ВзаимодействиеОснование);
|
||
Иначе
|
||
ПараметрыЗаписи.Вставить("Основание",Неопределено);
|
||
КонецЕсли;
|
||
|
||
Если ВзаимодействияКлиентСервер.ЯвляетсяВзаимодействием(Объект.Ссылка) Тогда
|
||
ПараметрыЗаписи.Вставить("Предмет",Форма.Предмет);
|
||
ПараметрыЗаписи.Вставить("ТипОповещения","ЗаписьВзаимодействия");
|
||
ИначеЕсли ВзаимодействияКлиентСервер.ЯвляетсяПредметом(Объект.Ссылка) Тогда
|
||
ПараметрыЗаписи.Вставить("Предмет",Объект.Ссылка);
|
||
ПараметрыЗаписи.Вставить("ТипОповещения","ЗаписьПредмета");
|
||
КонецЕсли;
|
||
|
||
Если ПосылатьОповещение Тогда
|
||
Оповестить("Запись_" + ИмяОбъектаОтправителяСообщения,ПараметрыЗаписи,Объект.Ссылка);
|
||
Форма.НеобходимоОповещение = Ложь;
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
// Обработчик для события формы ПроверкаПеретаскивания. Вызывается для списка предметов при перетаскивании в него взаимодействий.
|
||
//
|
||
// Параметры:
|
||
// Элемент - ТаблицаФормы - таблица, для которой обрабатывается событие.
|
||
// ПараметрыПеретаскивания - ПараметрыПеретаскивания - содержит перетаскиваемое значение, тип действия и возможные
|
||
// действия при перетаскивании.
|
||
// СтандартнаяОбработка - Булево - признак стандартной обработки события.
|
||
// СтрокаТаблицы - ДанныеФормыЭлементКоллекции - строка таблицы, над которой находится курсор.
|
||
// Поле - Поле - элемент управляемой формы, с которым связана данная колонка таблицы.
|
||
//
|
||
Процедура СписокПредметПроверкаПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, СтрокаТаблицы, Поле) Экспорт
|
||
|
||
Если (СтрокаТаблицы = Неопределено) ИЛИ (ПараметрыПеретаскивания.Значение = Неопределено) Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
|
||
СтандартнаяОбработка = Ложь;
|
||
|
||
Если ТипЗнч(ПараметрыПеретаскивания.Значение) = Тип("Массив") Тогда
|
||
|
||
Для каждого ЭлементМассива Из ПараметрыПеретаскивания.Значение Цикл
|
||
Если ВзаимодействияКлиентСервер.ЯвляетсяВзаимодействием(ЭлементМассива) Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
КонецЕсли;
|
||
|
||
ПараметрыПеретаскивания.Действие = ДействиеПеретаскивания.Отмена;
|
||
|
||
КонецПроцедуры
|
||
|
||
// Обработчик для события формы Перетаскивание. Вызывается для списка предметов при перетаскивании в него взаимодействий.
|
||
//
|
||
// Параметры:
|
||
// Элемент - ТаблицаФормы - таблица, для которой обрабатывается событие.
|
||
// ПараметрыПеретаскивания - ПараметрыПеретаскивания - содержит перетаскиваемое значение, тип действия и возможные
|
||
// действия при перетаскивании.
|
||
// СтандартнаяОбработка - Булево - признак стандартной обработки события.
|
||
// СтрокаТаблицы - ДанныеФормыЭлементКоллекции - строка таблицы, над которой находится курсор.
|
||
// Поле - Поле - элемент управляемой формы, с которым связана данная колонка таблицы.
|
||
//
|
||
Процедура СписокПредметПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, СтрокаТаблицы, Поле) Экспорт
|
||
|
||
СтандартнаяОбработка = Ложь;
|
||
|
||
Если ТипЗнч(ПараметрыПеретаскивания.Значение) = Тип("Массив") Тогда
|
||
|
||
ВзаимодействияВызовСервера.УстановитьПредметДляМассиваВзаимодействий(ПараметрыПеретаскивания.Значение,
|
||
СтрокаТаблицы, Истина);
|
||
|
||
КонецЕсли;
|
||
|
||
Оповестить("ИзменениеПредметаВзаимодействий");
|
||
|
||
КонецПроцедуры
|
||
|
||
// Сохраняет письмо на компьютер.
|
||
//
|
||
// Параметры:
|
||
// Письмо - ДокументСсылка.ЭлектронноеПисьмоВходящее
|
||
// - ДокументСсылка.ЭлектронноеПисьмоИсходящее - письмо, которое будет сохранено.
|
||
// УникальныйИдентификатор - УникальныйИдентификатор - уникальный идентификатор формы, из которой была вызвана команда сохранения.
|
||
//
|
||
Процедура СохранитьПисьмоНаДиск(Письмо, УникальныйИдентификатор) Экспорт
|
||
|
||
ДанныеФайла = ВзаимодействияВызовСервера.ДанныеПисьмаДляСохраненияКакФайл(Письмо, УникальныйИдентификатор);
|
||
|
||
Если ДанныеФайла = Неопределено Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
|
||
РаботаСФайламиКлиент.СохранитьФайлКак(ДанныеФайла);
|
||
|
||
КонецПроцедуры
|
||
|
||
#КонецОбласти
|
||
|
||
#Область СлужебныйПрограммныйИнтерфейс
|
||
|
||
// Открывает форму нового документа "Электронное письмо исходящее"
|
||
// с переданными в процедуру параметрами.
|
||
//
|
||
// Параметры:
|
||
// ПараметрыПисьма - см. РаботаСПочтовымиСообщениямиКлиент.ПараметрыОтправкиПисьма.
|
||
// ОписаниеОповещенияОЗакрытии - ОписаниеОповещения - описание оповещения о закрытии формы письма.
|
||
//
|
||
Процедура ОткрытьФормуОтправкиПисьма(Знач ПараметрыПисьма = Неопределено, Знач ОписаниеОповещенияОЗакрытии = Неопределено) Экспорт
|
||
|
||
ОткрытьФорму("Документ.ЭлектронноеПисьмоИсходящее.ФормаОбъекта", ПараметрыПисьма, , , , , ОписаниеОповещенияОЗакрытии);
|
||
|
||
КонецПроцедуры
|
||
|
||
#КонецОбласти
|
||
|
||
#Область СлужебныеПроцедурыИФункции
|
||
|
||
// Параметры:
|
||
// ИмяФормыОбъекта - Строка - имя формы элемента создаваемого объекта.
|
||
// Основание - ОпределяемыйТип.КонтактВзаимодействия
|
||
// - ОпределяемыйТип.ПредметВзаимодействия - объект-основание.
|
||
// Источник - ФормаКлиентскогоПриложения - форма объекта-основания, содержит:
|
||
// * Элементы - ВсеЭлементыФормы - содержит:
|
||
// ** Участники - ТаблицаФормы - данные о участниках взаимодействия.
|
||
//
|
||
Процедура СоздатьВзаимодействиеИлиПредмет(ИмяФормыОбъекта, Основание, Источник) Экспорт
|
||
|
||
ПараметрыОткрытияФормы = Новый Структура("Основание", Основание);
|
||
Если (ТипЗнч(Основание) = Тип("ДокументСсылка.Встреча")
|
||
ИЛИ ТипЗнч(Основание) = Тип("ДокументСсылка.ЗапланированноеВзаимодействие"))
|
||
И Источник.Элементы.Найти("Участники") <> Неопределено
|
||
И Источник.Элементы.Участники.ТекущиеДанные <> Неопределено Тогда
|
||
|
||
ДанныеУчастникаИсточник = Источник.Элементы.Участники.ТекущиеДанные;
|
||
ПараметрыОткрытияФормы.Вставить("ДанныеУчастника", ДанныеУчастника(ДанныеУчастникаИсточник));
|
||
|
||
ИначеЕсли (ТипЗнч(Основание) = Тип("ДокументСсылка.СообщениеSMS")
|
||
И Источник.Элементы.Найти("Адресаты") <> Неопределено
|
||
И Источник.Элементы.Адресаты.ТекущиеДанные <> Неопределено) Тогда
|
||
|
||
ДанныеУчастникаИсточник = Источник.Элементы.Адресаты.ТекущиеДанные;
|
||
ПараметрыОткрытияФормы.Вставить("ДанныеУчастника", ДанныеУчастника(ДанныеУчастникаИсточник));
|
||
|
||
КонецЕсли;
|
||
|
||
ОткрытьФорму(ИмяФормыОбъекта, ПараметрыОткрытияФормы, Источник);
|
||
|
||
КонецПроцедуры
|
||
|
||
Функция ДанныеУчастника(Источник)
|
||
Возврат Новый Структура("Контакт,КакСвязаться,Представление",
|
||
Источник.Контакт,
|
||
Источник.КакСвязаться,
|
||
Источник.ПредставлениеКонтакта);
|
||
КонецФункции
|
||
|
||
// Открывает форму объекта-контакта заполненную по описанию участника взаимодействия.
|
||
//
|
||
// Параметры:
|
||
// Описание - Строка - текстовое описание контакта.
|
||
// Адрес - Строка - контактная информация.
|
||
// Основание - ДокументОбъект - документ взаимодействия, из которого создается контакт.
|
||
// ТипыКонтактов - СписокЗначений - список возможных типов контактов.
|
||
//
|
||
Процедура СоздатьКонтакт(Описание, Адрес, Основание, ТипыКонтактов) Экспорт
|
||
|
||
Если ТипыКонтактов.Количество() = 0 Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
|
||
ДополнительныеПараметры = Новый Структура;
|
||
ДополнительныеПараметры.Вставить("Описание", Описание);
|
||
ДополнительныеПараметры.Вставить("Адрес", Адрес);
|
||
ДополнительныеПараметры.Вставить("Основание", Основание);
|
||
ОбработчикОповещения = Новый ОписаниеОповещения("ВыборТипаКонтактаПриЗавершении", ЭтотОбъект, ДополнительныеПараметры);
|
||
ТипыКонтактов.ПоказатьВыборЭлемента(ОбработчикОповещения, НСтр("ru = 'Выбор типа контакта'"));
|
||
|
||
КонецПроцедуры
|
||
|
||
// Обработчик оповещения выбора типа контакта при создании контакта из документов взаимодействий.
|
||
//
|
||
// Параметры:
|
||
// РезультатВыбора - ЭлементСпискаЗначений - в значение элемента содержится строковое представление типа контакта,
|
||
// ДополнительныеПараметры - Структура - содержит поля "Описание", "Адрес" и "Основание".
|
||
//
|
||
Процедура ВыборТипаКонтактаПриЗавершении(РезультатВыбора, ДополнительныеПараметры) Экспорт
|
||
|
||
Если РезультатВыбора = Неопределено Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
|
||
ПараметрФормы = Новый Структура("Основание", ДополнительныеПараметры);
|
||
Контакты = ВзаимодействияКлиентСервер.ОписанияКонтактов();
|
||
ИмяФормыНовогоКонтакта = "";
|
||
Для каждого Контакт Из Контакты Цикл
|
||
Если Контакт.Имя = РезультатВыбора.Значение Тогда
|
||
ИмяФормыНовогоКонтакта = Контакт.ИмяФормыНовогоКонтакта;
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
|
||
Если ПустаяСтрока(ИмяФормыНовогоКонтакта) Тогда
|
||
// АПК:222-выкл Для обратной совместимости.
|
||
Если ВзаимодействияКлиентПереопределяемый.СоздатьКонтактНестандартнаяФорма(РезультатВыбора.Значение, ПараметрФормы) Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
// АПК:222-вкл
|
||
ИмяФормыНовогоКонтакта = "Справочник." + РезультатВыбора.Значение + ".ФормаОбъекта";
|
||
КонецЕсли;
|
||
|
||
ОткрытьФорму(ИмяФормыНовогоКонтакта, ПараметрФормы);
|
||
|
||
КонецПроцедуры
|
||
|
||
// Обработчик для события формы ОбработкаОповещения. Вызывается для взаимодействия.
|
||
//
|
||
// Параметры:
|
||
// Форма - ФормаКлиентскогоПриложения - содержит:
|
||
// * Объект - ДокументОбъект.ТелефонныйЗвонок
|
||
// - ДокументОбъект.ЗапланированноеВзаимодействие
|
||
// - ДокументОбъект.СообщениеSMS
|
||
// - ДокументОбъект.Встреча
|
||
// - ДокументОбъект.ЭлектронноеПисьмоВходящее
|
||
// - ДокументОбъект.ЭлектронноеПисьмоИсходящее - объект, который содержит форма.
|
||
// * Элементы - ВсеЭлементыФормы - содержит:
|
||
// ** Участники - ТаблицаФормы - информация о контактах взаимодействия.
|
||
// ** СоздатьКонтакт - КнопкаФормы - элемент, выполняющий команду создания взаимодействия.
|
||
// ИмяСобытия - Строка - имя события.
|
||
// Параметр - Структура:
|
||
// * ТипОповещения - Строка - информация о типе оповещения.
|
||
// * Основание - ОпределяемыйТип.КонтактВзаимодействия
|
||
//
|
||
// Источник - Произвольный - источник события.
|
||
//
|
||
Процедура ОтработатьОповещение(Форма,ИмяСобытия, Параметр, Источник) Экспорт
|
||
|
||
Если ТипЗнч(Параметр) = Тип("Структура") И Параметр.Свойство("ТипОповещения") Тогда
|
||
Если (Параметр.ТипОповещения = "ЗаписьВзаимодействия" ИЛИ Параметр.ТипОповещения = "ЗаписьПредмета")
|
||
И Параметр.Основание = Форма.Объект.Ссылка Тогда
|
||
|
||
Если (Форма.Предмет = Неопределено ИЛИ ВзаимодействияКлиентСервер.ЯвляетсяВзаимодействием(Форма.Предмет))
|
||
И Форма.Предмет <> Параметр.Предмет Тогда
|
||
Форма.Предмет = Параметр.Предмет;
|
||
Форма.ОтобразитьИзменениеДанных(Форма.Предмет, ВидИзмененияДанных.Изменение);
|
||
КонецЕсли;
|
||
|
||
ИначеЕсли Параметр.ТипОповещения = "ЗаписьКонтакта" И Параметр.Основание = Форма.Объект.Ссылка Тогда
|
||
|
||
Если ТипЗнч(Форма.Объект.Ссылка)=Тип("ДокументСсылка.ТелефонныйЗвонок") Тогда
|
||
Форма.Объект.АбонентКонтакт = Параметр.Ссылка;
|
||
Если ПустаяСтрока(Форма.Объект.АбонентПредставление) Тогда
|
||
Форма.Объект.АбонентПредставление = Параметр.Наименование;
|
||
КонецЕсли;
|
||
ИначеЕсли ТипЗнч(Форма.Объект.Ссылка)=Тип("ДокументСсылка.Встреча")
|
||
ИЛИ ТипЗнч(Форма.Объект.Ссылка)=Тип("ДокументСсылка.ЗапланированноеВзаимодействие")Тогда
|
||
Форма.Элементы.Участники.ТекущиеДанные.Контакт = Параметр.Ссылка;
|
||
Если ПустаяСтрока(Форма.Элементы.Участники.ТекущиеДанные.ПредставлениеКонтакта) Тогда
|
||
Форма.Элементы.Участники.ТекущиеДанные.ПредставлениеКонтакта = Параметр.Наименование;
|
||
КонецЕсли;
|
||
ИначеЕсли ТипЗнч(Форма.Объект.Ссылка)=Тип("ДокументСсылка.СообщениеSMS") Тогда
|
||
Форма.Элементы.Адресаты.ТекущиеДанные.Контакт = Параметр.Ссылка;
|
||
Если ПустаяСтрока(Форма.Элементы.Адресаты.ТекущиеДанные.ПредставлениеКонтакта) Тогда
|
||
Форма.Элементы.Адресаты.ТекущиеДанные.ПредставлениеКонтакта = Параметр.Наименование;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
Форма.Элементы.СоздатьКонтакт.Доступность = Ложь;
|
||
Форма.Модифицированность = Истина;
|
||
|
||
КонецЕсли;
|
||
|
||
ИначеЕсли ИмяСобытия = "ВыбранКонтакт" Тогда
|
||
|
||
Если Форма.ИмяФормы = "Документ.ЭлектронноеПисьмоИсходящее.Форма.ФормаДокумента"
|
||
ИЛИ Форма.ИмяФормы = "Документ.ЭлектронноеПисьмоВходящее.Форма.ФормаДокумента" Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
|
||
Если Форма.УникальныйИдентификатор <> Параметр.ИдентификаторФормы Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
|
||
БылИзмененКонтакт = (Параметр.Контакт <> Параметр.ВыбранныйКонтакт) И ЗначениеЗаполнено(Параметр.Контакт);
|
||
Контакт = Параметр.ВыбранныйКонтакт;
|
||
Если Параметр.ТолькоEmail Тогда
|
||
ТипКонтактнойИнформации = ПредопределенноеЗначение("Перечисление.ТипыКонтактнойИнформации.АдресЭлектроннойПочты");
|
||
ИначеЕсли Параметр.ТолькоТелефон Тогда
|
||
ТипКонтактнойИнформации = ПредопределенноеЗначение("Перечисление.ТипыКонтактнойИнформации.Телефон");
|
||
Иначе
|
||
ТипКонтактнойИнформации = Неопределено;
|
||
КонецЕсли;
|
||
|
||
Если БылИзмененКонтакт Тогда
|
||
|
||
Если НЕ Параметр.ДляФормыУточненияКонтактов Тогда
|
||
ВзаимодействияВызовСервера.ПредставлениеИВсяКонтактнаяИнформациюКонтакта(
|
||
Контакт, Параметр.Представление, Параметр.Адрес, ТипКонтактнойИнформации);
|
||
КонецЕсли;
|
||
|
||
Адрес = Параметр.Адрес;
|
||
Представление = Параметр.Представление;
|
||
|
||
ИначеЕсли Параметр.ЗаменятьПустыеАдресИПредставление И (ПустаяСтрока(Параметр.Адрес) ИЛИ ПустаяСтрока(Параметр.Представление)) Тогда
|
||
|
||
нПредставление = "";
|
||
нАдрес = "";
|
||
ВзаимодействияВызовСервера.ПредставлениеИВсяКонтактнаяИнформациюКонтакта(
|
||
Контакт, нПредставление, нАдрес, ТипКонтактнойИнформации);
|
||
|
||
Представление = ?(ПустаяСтрока(Параметр.Представление), нПредставление, Параметр.Представление);
|
||
Адрес = ?(ПустаяСтрока(Параметр.Адрес), нАдрес, Параметр.Адрес);
|
||
|
||
Иначе
|
||
|
||
Адрес = Параметр.Адрес;
|
||
Представление = Параметр.Представление;
|
||
|
||
КонецЕсли;
|
||
|
||
Если Форма.ИмяФормы = "ОбщаяФорма.АдреснаяКнига" Тогда
|
||
|
||
ТекущиеДанные = Форма.Элементы.ПолучателиПисьма.ТекущиеДанные;
|
||
Если ТекущиеДанные = Неопределено Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
|
||
ТекущиеДанные.Контакт = Контакт;
|
||
ТекущиеДанные.Адрес = Адрес;
|
||
ТекущиеДанные.Представление = Представление;
|
||
|
||
Форма.Модифицированность = Истина;
|
||
|
||
ИначеЕсли ТипЗнч(Форма.Объект.Ссылка)=Тип("ДокументСсылка.СообщениеSMS") Тогда
|
||
ТекущиеДанные = Форма.Элементы.Адресаты.ТекущиеДанные;
|
||
Если ТекущиеДанные = Неопределено Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
|
||
Форма.ИзменилисьКонтакты = Истина;
|
||
|
||
ТекущиеДанные.Контакт = Контакт;
|
||
ТекущиеДанные.КакСвязаться = Адрес;
|
||
ТекущиеДанные.ПредставлениеКонтакта = Представление;
|
||
|
||
ВзаимодействияКлиентСервер.ПроверитьЗаполнениеКонтактов(Форма.Объект,Форма,"СообщениеSMS");
|
||
|
||
ИначеЕсли ТипЗнч(Форма.Объект.Ссылка)=Тип("ДокументСсылка.ЗапланированноеВзаимодействие") Тогда
|
||
ТекущиеДанные = Форма.Элементы.Участники.ТекущиеДанные;
|
||
Если ТекущиеДанные = Неопределено Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
|
||
Форма.ИзменилисьКонтакты = Истина;
|
||
|
||
ТекущиеДанные.Контакт = Контакт;
|
||
ТекущиеДанные.КакСвязаться = Адрес;
|
||
ТекущиеДанные.ПредставлениеКонтакта = Представление;
|
||
|
||
ВзаимодействияКлиентСервер.ПроверитьЗаполнениеКонтактов(Форма.Объект, Форма, "ЗапланированноеВзаимодействие");
|
||
Форма.Модифицированность = Истина;
|
||
|
||
ИначеЕсли ТипЗнч(Форма.Объект.Ссылка)=Тип("ДокументСсылка.Встреча") Тогда
|
||
ТекущиеДанные = Форма.Элементы.Участники.ТекущиеДанные;
|
||
Если ТекущиеДанные = Неопределено Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
|
||
Форма.ИзменилисьКонтакты = Истина;
|
||
|
||
ТекущиеДанные.Контакт = Контакт;
|
||
ТекущиеДанные.КакСвязаться = Адрес;
|
||
ТекущиеДанные.ПредставлениеКонтакта = Представление;
|
||
|
||
ВзаимодействияКлиентСервер.ПроверитьЗаполнениеКонтактов(Форма.Объект, Форма, "Встреча");
|
||
Форма.Модифицированность = Истина;
|
||
|
||
ИначеЕсли ТипЗнч(Форма.Объект.Ссылка)=Тип("ДокументСсылка.ТелефонныйЗвонок") Тогда
|
||
|
||
Форма.ИзменилисьКонтакты = Истина;
|
||
|
||
Форма.Объект.АбонентКонтакт = Контакт;
|
||
Форма.Объект.АбонентКакСвязаться = Адрес;
|
||
Форма.Объект.АбонентПредставление = Представление;
|
||
|
||
ВзаимодействияКлиентСервер.ПроверитьЗаполнениеКонтактов(Форма.Объект, Форма, "ТелефонныйЗвонок");
|
||
Форма.Модифицированность = Истина;
|
||
|
||
КонецЕсли;
|
||
|
||
ИначеЕсли ИмяСобытия = "ЗаписьВзаимодействия"
|
||
И Параметр = Форма.Объект.Ссылка Тогда
|
||
|
||
Форма.Прочитать();
|
||
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
// Параметры:
|
||
// ТипОбъекта - Строка - тип создаваемого объекта.
|
||
// ПараметрыСоздания - Структура - параметры создаваемого документа.
|
||
// Форма - ФормаКлиентскогоПриложения.
|
||
//
|
||
Процедура СоздатьНовоеВзаимодействие(ТипОбъекта, ПараметрыСоздания = Неопределено, Форма = Неопределено) Экспорт
|
||
|
||
ОткрытьФорму("Документ." + ТипОбъекта + ".ФормаОбъекта", ПараметрыСоздания, Форма);
|
||
|
||
КонецПроцедуры
|
||
|
||
////////////////////////////////////////////////////////////////////////////////
|
||
// Общие обработчики событий документов взаимодействий
|
||
|
||
// Открывает форму выбора контакта и обрабатывает результат выбора.
|
||
//
|
||
// Параметры:
|
||
// Предмет - ОпределяемыйТип.ПредметВзаимодействия - предмет взаимодействия.
|
||
// Адрес - Строка - адрес контакта.
|
||
// Представление - Строка - представление контакта.
|
||
// Контакт - ОпределяемыйТип.КонтактВзаимодействия - контакт.
|
||
// Параметры - см. ВзаимодействияКлиент.ПараметрыВыбораКонтакта.
|
||
//
|
||
Процедура ВыбратьКонтакт(Предмет, Адрес, Представление, Контакт, Параметры) Экспорт
|
||
|
||
ПараметрыОткрытия = Новый Структура;
|
||
ПараметрыОткрытия.Вставить("Предмет", Предмет);
|
||
ПараметрыОткрытия.Вставить("Адрес", Адрес);
|
||
ПараметрыОткрытия.Вставить("Представление", Представление);
|
||
ПараметрыОткрытия.Вставить("Контакт", Контакт);
|
||
ПараметрыОткрытия.Вставить("ТолькоEmail", Параметры.ТолькоEmail);
|
||
ПараметрыОткрытия.Вставить("ТолькоТелефон", Параметры.ТолькоТелефон);
|
||
ПараметрыОткрытия.Вставить("ЗаменятьПустыеАдресИПредставление", Параметры.ЗаменятьПустыеАдресИПредставление);
|
||
ПараметрыОткрытия.Вставить("ДляФормыУточненияКонтактов", Параметры.ДляФормыУточненияКонтактов);
|
||
ПараметрыОткрытия.Вставить("ИдентификаторФормы", Параметры.ИдентификаторФормы);
|
||
|
||
ОткрытьФорму("ОбщаяФорма.ВыборКонтакта", ПараметрыОткрытия);
|
||
|
||
КонецПроцедуры
|
||
|
||
// Возвращаемое значение:
|
||
// Структура:
|
||
// * ТолькоEmail - Булево
|
||
// * ТолькоТелефон - Булево
|
||
// * ЗаменятьПустыеАдресИПредставление - Булево
|
||
// * ДляФормыУточненияКонтактов - Булево
|
||
//
|
||
Функция ПараметрыВыбораКонтакта(ИдентификаторФормы) Экспорт
|
||
|
||
Результат = Новый Структура;
|
||
Результат.Вставить("ТолькоEmail", Ложь);
|
||
Результат.Вставить("ТолькоТелефон", Ложь);
|
||
Результат.Вставить("ЗаменятьПустыеАдресИПредставление", Истина);
|
||
Результат.Вставить("ДляФормыУточненияКонтактов", Ложь);
|
||
Результат.Вставить("ИдентификаторФормы", ИдентификаторФормы);
|
||
Возврат Результат;
|
||
|
||
КонецФункции
|
||
|
||
// Параметры:
|
||
// ЗначениеПоля - Дата - значение поля "Отработать после".
|
||
// ВыбранноеЗначение - Дата
|
||
// - Число - либо выбранная дата, либо числовой инкремент от текущей даты.
|
||
// СтандартнаяОбработка - Булево - признак стандартной обработки обработчика события формы.
|
||
// Модифицированность - Булево - признак модифицированности формы.
|
||
//
|
||
Процедура ОбработатьВыборВПолеРассмотретьПосле(ЗначениеПоля, ВыбранноеЗначение, СтандартнаяОбработка, Модифицированность) Экспорт
|
||
|
||
СтандартнаяОбработка = Ложь;
|
||
Модифицированность = Истина;
|
||
|
||
Если ТипЗнч(ВыбранноеЗначение) = Тип("Число") Тогда
|
||
ЗначениеПоля = ОбщегоНазначенияКлиент.ДатаСеанса() + ВыбранноеЗначение;
|
||
Иначе
|
||
ЗначениеПоля = ВыбранноеЗначение;
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
// Устанавливает отбор по владельцу в динамическом списке подчиненного справочника, при активизации строки
|
||
// динамического списка справочника родителя.
|
||
//
|
||
// Параметры:
|
||
// Элемент - ТаблицаФормы - таблица в которой произошло событие, содержит:
|
||
// * ТекущиеДанные - СтрокаТаблицыЗначений:
|
||
// ** Ссылка - ОпределяемыйТип.КонтактВзаимодействия - контакт.
|
||
// Форма - ФормаКлиентскогоПриложения - форма, на которой находятся элементы.
|
||
//
|
||
Процедура КонтактВладелецПриАктивизацииСтроки(Элемент,Форма) Экспорт
|
||
|
||
ИмяТаблицыБезПрефикса = Прав(Элемент.Имя,СтрДлина(Элемент.Имя) - СтрДлина(ВзаимодействияКлиентСервер.ПрефиксТаблица()));
|
||
ЗначениеОтбора = ?(Элемент.ТекущиеДанные = Неопределено, Неопределено, Элемент.ТекущиеДанные.Ссылка);
|
||
|
||
МассивОписанияКонтактов = ВзаимодействияКлиентСервер.ОписанияКонтактов();
|
||
Для каждого ЭлементМассиваОписания Из МассивОписанияКонтактов Цикл
|
||
Если ЭлементМассиваОписания.ИмяВладельца = ИмяТаблицыБезПрефикса Тогда
|
||
КоллекцияОтборов = Форма["Список_" + ЭлементМассиваОписания.Имя].КомпоновщикНастроек.ФиксированныеНастройки.Отбор; // ОтборКомпоновкиДанных
|
||
КоллекцияОтборов.Элементы[0].ПравоеЗначение = ЗначениеОтбора;
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ВопросПриИзмененииФорматаСообщенияНаОбычныйТекст(Форма, ДополнительныеПараметры = Неопределено) Экспорт
|
||
|
||
ОбработчикОповещенияОЗакрытии = Новый ОписаниеОповещения("ВопросПриИзмененииФорматаПриЗакрытии", Форма, ДополнительныеПараметры);
|
||
ТекстСообщения = НСтр("ru = 'При преобразовании этого сообщения в обычный текст будут утеряны все элементы оформления, картинки и прочие вставленные элементы. Продолжить?'");
|
||
ПоказатьВопрос(ОбработчикОповещенияОЗакрытии, ТекстСообщения, РежимДиалогаВопрос.ДаНет, , КодВозвратаДиалога.Нет, НСтр("ru = 'Изменение формата письма'"));
|
||
|
||
КонецПроцедуры
|
||
|
||
// Параметры:
|
||
// Элемент - ТаблицаФормы - список в который происходит добавление, содержит:
|
||
// * ТекущиеДанные - СтрокаТаблицыЗначений:
|
||
// ** Ссылка - ДокументСсылка.ТелефонныйЗвонок
|
||
// - ДокументСсылка.ЗапланированноеВзаимодействие
|
||
// - ДокументСсылка.СообщениеSMS
|
||
// - ДокументСсылка.Встреча
|
||
// - ДокументСсылка.ЭлектронноеПисьмоВходящее
|
||
// - ДокументСсылка.ЭлектронноеПисьмоИсходящее - ссылка взаимодействие.
|
||
// Отказ - Булево - признак отказа от добавления.
|
||
// Копирование - Булево - признак копирования.
|
||
// ТолькоПочта - Булево - признак того что используются только почтовый клиент.
|
||
// ДокументыДоступныеДляСоздания - СписокЗначений - список доступных для создания документов.
|
||
// ПараметрыСоздания - Структура - параметры создания нового документа.
|
||
//
|
||
Процедура СписокПередНачаломДобавления(Элемент, Отказ, Копирование,ТолькоПочта,ДокументыДоступныеДляСоздания,ПараметрыСоздания = Неопределено) Экспорт
|
||
|
||
Если Копирование Тогда
|
||
|
||
ТекущиеДанные = Элемент.ТекущиеДанные;
|
||
Если ТекущиеДанные = Неопределено Тогда
|
||
Отказ = Истина;
|
||
Возврат;
|
||
КонецЕсли;
|
||
|
||
Если ТипЗнч(ТекущиеДанные.Ссылка) = Тип("ДокументСсылка.ЭлектронноеПисьмоВходящее")
|
||
Или ТипЗнч(ТекущиеДанные.Ссылка) = Тип("ДокументСсылка.ЭлектронноеПисьмоИсходящее") Тогда
|
||
Отказ = Истина;
|
||
Если Не ТолькоПочта Тогда
|
||
ПоказатьПредупреждение(, НСтр("ru = 'Копирование электронных писем запрещено'"));
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
// Параметры:
|
||
// Элемент - ПолеФормы - для которой обрабатывается событие.
|
||
// ДанныеСобытия - ФиксированнаяСтруктура - данные содержит параметры события.
|
||
// СтандартнаяОбработка - Булево - признак стандартной обработки события.
|
||
//
|
||
Процедура ПолеHTMLПриНажатии(Элемент, ДанныеСобытия, СтандартнаяОбработка) Экспорт
|
||
|
||
Если ДанныеСобытия.Href <> Неопределено Тогда
|
||
СтандартнаяОбработка = ЛОЖЬ;
|
||
|
||
ФайловаяСистемаКлиент.ОткрытьНавигационнуюСсылку(ДанныеСобытия.Href);
|
||
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
// Выполняет проверку правильности заполнения реквизитов ДатаКогдаОтправить и ДатаАктуальностиОтправки в форме
|
||
// документа.
|
||
//
|
||
// Параметры:
|
||
// Объект - ДокументОбъект - документ, в котором выполняется проверка.
|
||
// Отказ - Булево - устанавливает в истина, если реквизиты заполнены неправильно.
|
||
//
|
||
Процедура ПроверкаЗаполненностиРеквизитовОтложеннойОтправки(Объект, Отказ) Экспорт
|
||
|
||
Если Объект.ДатаКогдаОтправить > Объект.ДатаАктуальностиОтправки И (Не Объект.ДатаАктуальностиОтправки = Дата(1,1,1)) Тогда
|
||
|
||
Отказ = Истина;
|
||
ТекстСообщения= НСтр("ru = 'Дата актуальности отправки меньше чем дата отправки.'");
|
||
ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстСообщения,, "Объект.ДатаАктуальностиОтправки");
|
||
|
||
КонецЕсли;
|
||
|
||
Если НЕ Объект.ДатаАктуальностиОтправки = Дата(1,1,1)
|
||
И Объект.ДатаАктуальностиОтправки < ОбщегоНазначенияКлиент.ДатаСеанса() Тогда
|
||
|
||
Отказ = Истина;
|
||
ТекстСообщения= НСтр("ru = 'Указанная дата актуальности меньше текущей даты, такое сообщение никогда не будет отправлено'");
|
||
ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстСообщения,, "Объект.ДатаАктуальностиОтправки");
|
||
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ПредметНачалоВыбора(Форма, Элемент, ДанныеВыбора, СтандартнаяОбработка) Экспорт
|
||
|
||
СтандартнаяОбработка = Ложь;
|
||
|
||
ОткрытьФорму("ЖурналДокументов.Взаимодействия.Форма.ВыборТипаПредмета", ,Форма);
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ФормаОбработкаВыбора(Форма, ВыбранноеЗначение, ИсточникВыбора, КонтекстВыбора) Экспорт
|
||
|
||
Если ВРег(ИсточникВыбора.ИмяФормы) = ВРег("ЖурналДокументов.Взаимодействия.Форма.ВыборТипаПредмета") Тогда
|
||
|
||
ПараметрыФормы = Новый Структура;
|
||
ПараметрыФормы.Вставить("РежимВыбора", Истина);
|
||
|
||
КонтекстВыбора = "ВыборПредмета";
|
||
|
||
ОткрытьФорму(ВыбранноеЗначение + ".ФормаВыбора", ПараметрыФормы, Форма);
|
||
|
||
ИначеЕсли КонтекстВыбора = "ВыборПредмета" Тогда
|
||
|
||
Если ВзаимодействияКлиентСервер.ЯвляетсяПредметом(ВыбранноеЗначение)
|
||
Или ВзаимодействияКлиентСервер.ЯвляетсяВзаимодействием(ВыбранноеЗначение) Тогда
|
||
|
||
Форма.Предмет = ВыбранноеЗначение;
|
||
Форма.Модифицированность = Истина;
|
||
|
||
КонецЕсли;
|
||
|
||
КонтекстВыбора = Неопределено;
|
||
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
// Параметры:
|
||
// Письмо - ДокументСсылка.ЭлектронноеПисьмоВходящее
|
||
// - ДокументСсылка.ЭлектронноеПисьмоИсходящее
|
||
// - СправочникСсылка.ЭлектронноеПисьмоВходящееПрисоединенныеФайлы
|
||
// - СправочникСсылка.ЭлектронноеПисьмоИсходящееПрисоединенныеФайлы
|
||
// ПараметрыОткрытия - см. ПараметрыПисьмаВложения
|
||
// Форма - ФормаКлиентскогоПриложения
|
||
//
|
||
Процедура ОткрытьВложениеПисьмо(Письмо, ПараметрыОткрытия, Форма) Экспорт
|
||
|
||
ОчиститьСообщения();
|
||
ПараметрыФормы = Новый Структура;
|
||
ПараметрыФормы.Вставить("Письмо", Письмо);
|
||
ПараметрыФормы.Вставить("НеВызыватьКомандуПечати", ПараметрыОткрытия.НеВызыватьКомандуПечати);
|
||
ПараметрыФормы.Вставить("ИмяПользователяУчетнойЗаписи", ПараметрыОткрытия.ИмяПользователяУчетнойЗаписи);
|
||
ПараметрыФормы.Вставить("ОтображатьВложенияПисьма", ПараметрыОткрытия.ОтображатьВложенияПисьма);
|
||
ПараметрыФормы.Вставить("ДатаПисьмаОснования", ПараметрыОткрытия.ДатаПисьмаОснования);
|
||
ПараметрыФормы.Вставить("ПисьмоОснование", ПараметрыОткрытия.ПисьмоОснование);
|
||
ПараметрыФормы.Вставить("ТемаПисьмаОснования", ПараметрыОткрытия.ТемаПисьмаОснования);
|
||
|
||
ОткрытьФорму("ЖурналДокументов.Взаимодействия.Форма.ПечатьЭлектронногоПисьма", ПараметрыФормы, Форма);
|
||
|
||
КонецПроцедуры
|
||
|
||
// Возвращаемое значение:
|
||
// Структура:
|
||
// * ДатаПисьмаОснования - Дата - дата письма-основания.
|
||
// * ИмяПользователяУчетнойЗаписи - Строка - имя пользователя почты, которая приняла письмо-основание.
|
||
// * НеВызыватьКомандуПечати - Булево - признак того, что при открытии формы печати не нужно вызывать команду
|
||
// печати ОС.
|
||
// * ПисьмоОснование - Неопределено
|
||
// - Строка
|
||
// - ДокументСсылка.ЭлектронноеПисьмоВходящее
|
||
// - ДокументСсылка.ЭлектронноеПисьмоИсходящее - ссылка на письмо-основание или
|
||
// представление письма.
|
||
// * ТемаПисьмаОснования - Строка - тема письма-основания.
|
||
//
|
||
Функция ПараметрыПисьмаВложения() Экспорт
|
||
|
||
ПараметрыОткрытия = Новый Структура;
|
||
ПараметрыОткрытия.Вставить("ДатаПисьмаОснования", Дата(1, 1, 1));
|
||
ПараметрыОткрытия.Вставить("ИмяПользователяУчетнойЗаписи", "");
|
||
ПараметрыОткрытия.Вставить("НеВызыватьКомандуПечати", Истина);
|
||
ПараметрыОткрытия.Вставить("ОтображатьВложенияПисьма", Истина);
|
||
ПараметрыОткрытия.Вставить("ПисьмоОснование", Неопределено);
|
||
ПараметрыОткрытия.Вставить("ТемаПисьмаОснования", "");
|
||
|
||
Возврат ПараметрыОткрытия;
|
||
|
||
КонецФункции
|
||
|
||
Процедура ОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка) Экспорт
|
||
|
||
Если НавигационнаяСсылкаФорматированнойСтроки = "ВключитьПолучениеИОтправкуПисем" Тогда
|
||
СтандартнаяОбработка = Ложь;
|
||
ВзаимодействияВызовСервера.ВключитьОтправкуИПолучениеПисем();
|
||
Элемент.Родитель.Видимость = Ложь;
|
||
ИначеЕсли НавигационнаяСсылкаФорматированнойСтроки = "ПерейтиКНастройкеРегламентныхЗаданий" Тогда
|
||
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.РегламентныеЗадания") Тогда
|
||
МодульРегламентныеЗаданияКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("РегламентныеЗаданияКлиент");
|
||
МодульРегламентныеЗаданияКлиент.ПерейтиКНастройкеРегламентныхЗаданий();
|
||
СтандартнаяОбработка = Ложь;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
////////////////////////////////////////////////////////////////////////////////
|
||
// Определение типа ссылки
|
||
|
||
// Параметры:
|
||
// ОбъектСсылка - ЛюбаяСсылка - для которой, необходимо выполнить проверку.
|
||
//
|
||
// Возвращаемое значение:
|
||
// Булево - Истина, если переданная ссылка является документом взаимодействием.
|
||
//
|
||
Функция ЯвляетсяЭлектроннымПисьмом(ОбъектСсылка) Экспорт
|
||
|
||
Возврат ТипЗнч(ОбъектСсылка) = Тип("ДокументСсылка.ЭлектронноеПисьмоВходящее")
|
||
ИЛИ ТипЗнч(ОбъектСсылка) = Тип("ДокументСсылка.ЭлектронноеПисьмоИсходящее");
|
||
|
||
КонецФункции
|
||
|
||
#КонецОбласти
|