mirror of
https://github.com/KevinMidboe/linguist.git
synced 2025-10-29 09:40:21 +00:00
266 lines
16 KiB
Plaintext
266 lines
16 KiB
Plaintext
&НаСервереБезКонтекста
|
||
Функция ПолучитьКонтактноеЛицоПоЭлектроннойПочте(ЭлектроннаяПочта)
|
||
Запрос = Новый Запрос;
|
||
Запрос.Текст = "ВЫБРАТЬ КонтактноеЛицо ИЗ Справочник.Контрагенты ГДЕ ЭлектроннаяПочта = &ЭлектроннаяПочта";
|
||
Запрос.Параметры.Вставить("ЭлектроннаяПочта", СокрЛП(ЭлектроннаяПочта));
|
||
Выборка = Запрос.Выполнить().Выбрать();
|
||
КонтактноеЛицо = "";
|
||
Если Выборка.Следующий() Тогда
|
||
КонтактноеЛицо = Выборка.КонтактноеЛицо;
|
||
КонецЕсли;
|
||
Возврат КонтактноеЛицо;
|
||
КонецФункции
|
||
|
||
&НаСервереБезКонтекста
|
||
Функция ПолучитьКонтактноеЛицоПоПолучателю(Получатель)
|
||
Запрос = Новый Запрос;
|
||
Запрос.Текст = "ВЫБРАТЬ КонтактноеЛицо ИЗ Справочник.Контрагенты ГДЕ Ссылка = &Получатель";
|
||
Запрос.Параметры.Вставить("Получатель", Получатель);
|
||
Выборка = Запрос.Выполнить().Выбрать();
|
||
КонтактноеЛицо = "";
|
||
Если Выборка.Следующий() Тогда
|
||
КонтактноеЛицо = Выборка.КонтактноеЛицо;
|
||
КонецЕсли;
|
||
Возврат КонтактноеЛицо;
|
||
КонецФункции
|
||
|
||
&НаСервереБезКонтекста
|
||
Процедура ДобавитьПолучателей(Получатель, Получатели)
|
||
Запрос = Новый Запрос;
|
||
Запрос.Текст = "ВЫБРАТЬ ЭлектроннаяПочта ИЗ Справочник.Контрагенты ГДЕ Ссылка ";
|
||
Если ТипЗнч(Получатели) = Тип("Массив") Тогда
|
||
Запрос.Текст = Запрос.Текст + "В (&Получатели)";
|
||
Иначе
|
||
Запрос.Текст = Запрос.Текст + "= &Получатели";
|
||
КонецЕсли;
|
||
Запрос.Параметры.Вставить("Получатели", Получатели);
|
||
Выборка = Запрос.Выполнить().Выбрать();
|
||
Пока Выборка.Следующий() Цикл
|
||
Если Получатель <> "" Тогда
|
||
Получатель = Получатель + "; ";
|
||
КонецЕсли;
|
||
Получатель = Получатель + Выборка.ЭлектроннаяПочта;
|
||
КонецЦикла;
|
||
КонецПроцедуры
|
||
|
||
&НаСервере
|
||
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
|
||
Если Параметры.Ключ.Пустая() Тогда
|
||
Заголовок = "Исходящее письмо (Создание)";
|
||
Объект.Дата = ТекущаяДата();
|
||
ПоШаблону = Параметры.Свойство("ПоШаблону");
|
||
ВходящееПисьмо = Параметры.ВходящееПисьмо;
|
||
Если ПоШаблону = Истина Тогда
|
||
Элементы.ЗаполнитьПоШаблону.Видимость = Истина;
|
||
РаботаСПочтой.ЗаполнитьПисьмоПоШаблону(Объект, Содержимое);
|
||
ИначеЕсли Не ВходящееПисьмо.Пустая() Тогда
|
||
РаботаСПочтой.ЗаполнитьОтветНаПисьмо(ВходящееПисьмо, Объект, Содержимое);
|
||
КонецЕсли;
|
||
Адресаты = Параметры.Адресаты;
|
||
Если Адресаты <> Неопределено Тогда
|
||
Запрос = Новый Запрос;
|
||
Запрос.Текст = "ВЫБРАТЬ
|
||
| Контрагенты.ЭлектроннаяПочта
|
||
|ИЗ
|
||
| Справочник.Контрагенты КАК Контрагенты
|
||
|ГДЕ
|
||
| Контрагенты.Ссылка В(&Адресаты)
|
||
| И Контрагенты.ЭлектроннаяПочта <> """"";
|
||
Запрос.УстановитьПараметр("Адресаты", Адресаты);
|
||
Получатель = "";
|
||
Выборка = Запрос.Выполнить().Выбрать();
|
||
Пока Выборка.Следующий() Цикл
|
||
Если Получатель <> "" Тогда
|
||
Получатель = Получатель + "; ";
|
||
КонецЕсли;
|
||
Получатель = Получатель + Выборка.ЭлектроннаяПочта;
|
||
КонецЦикла;
|
||
Объект.Получатель = Получатель;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
КонецПроцедуры
|
||
|
||
&НаСервере
|
||
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
|
||
Содержимое = ТекущийОбъект.Содержимое.Получить();
|
||
Заголовок = ТекущийОбъект.Наименование + " (Исходящее письмо)";
|
||
Если РаботаСПочтой.ПисьмоОтправлено(ТекущийОбъект.Ссылка) Тогда
|
||
Заголовок = Заголовок + " - Отправлено";
|
||
КонецЕсли;
|
||
КонецПроцедуры
|
||
|
||
&НаСервере
|
||
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
|
||
ТекущийОбъект.Содержимое = Новый ХранилищеЗначения(Содержимое, Новый СжатиеДанных());
|
||
ТекущийОбъект.Текст = Содержимое.ПолучитьТекст();
|
||
КонецПроцедуры
|
||
|
||
&НаСервере
|
||
Функция ОтправитьПисьмо(Ошибка)
|
||
Если Не Записать() Тогда
|
||
Ошибка = "ОшибкаЗаписи";
|
||
Возврат Ложь;
|
||
КонецЕсли;
|
||
Если Не РаботаСПочтой.ОтправитьПисьмо(Объект.Ссылка) Тогда
|
||
Ошибка = "ОшибкаОтправки";
|
||
Возврат Ложь;
|
||
КонецЕсли;
|
||
Заголовок = Заголовок + " - Отправлено";
|
||
Возврат Истина;
|
||
КонецФункции
|
||
|
||
&НаКлиенте
|
||
Функция ОтправитьПисьмоКлиент()
|
||
Ошибка = "";
|
||
Если Не ОтправитьПисьмо(Ошибка) Тогда
|
||
Если Ошибка = "ОшибкаОтправки" Тогда
|
||
Кнопки = Новый СписокЗначений;
|
||
Кнопки.Добавить(1, "Настроить почту");
|
||
Кнопки.Добавить(2, "Закрыть");
|
||
|
||
Оп = Новый ОписаниеОповещения(
|
||
"ОтправитьПисьмоКлиентВопросЗавершение",
|
||
ЭтотОбъект);
|
||
ПоказатьВопрос(Оп,
|
||
"Не указаны настройки интернет почты!",
|
||
Кнопки, , 1);
|
||
КонецЕсли;
|
||
Возврат Ложь;
|
||
КонецЕсли;
|
||
|
||
НавигационнаяСсылка = ПолучитьНавигационнуюСсылку(Объект.Ссылка);
|
||
ПоказатьОповещениеПользователя("Письмо отправлено", НавигационнаяСсылка, Объект.Наименование);
|
||
ОповеститьОбИзменении(Объект.Ссылка);
|
||
Возврат Истина;
|
||
КонецФункции
|
||
|
||
&НаКлиенте
|
||
Процедура ОтправитьПисьмоКлиентВопросЗавершение(Результат, Параметры) Экспорт
|
||
Если Результат = 1 Тогда
|
||
ОткрытьФорму("ОбщаяФорма.НастройкаПочты");
|
||
КонецЕсли;
|
||
КонецПроцедуры
|
||
|
||
&НаКлиенте
|
||
Процедура Отправить(Команда)
|
||
ОтправитьПисьмоКлиент();
|
||
КонецПроцедуры
|
||
|
||
&НаКлиенте
|
||
Процедура ОтправитьИЗакрыть(Команда)
|
||
Если Не ОтправитьПисьмоКлиент() Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
Закрыть();
|
||
КонецПроцедуры
|
||
|
||
&НаКлиенте
|
||
Процедура ВставитьСтрокуВТекущуюПозицию(Поле, Документ, Строка)
|
||
Перем Начало, Конец;
|
||
Поле.ПолучитьГраницыВыделения(Начало, Конец);
|
||
Позиция = Документ.ПолучитьПозициюПоЗакладке(Начало);
|
||
Документ.Удалить(Начало, Конец);
|
||
Начало = Документ.ПолучитьЗакладкуПоПозиции(Позиция);
|
||
Документ.Вставить(Начало, Строка);
|
||
Позиция = Позиция + СтрДлина(Строка);
|
||
Закладка = Документ.ПолучитьЗакладкуПоПозиции(Позиция);
|
||
Поле.УстановитьГраницыВыделения(Закладка, Закладка);
|
||
КонецПроцедуры
|
||
|
||
&НаКлиенте
|
||
Процедура ВставитьКонтактноеЛицо(Команда)
|
||
Если Объект.Контрагент.Пустая() Тогда
|
||
Сообщить("Выберите контрагента");
|
||
Иначе
|
||
КонтактноеЛицо = ПолучитьКонтактноеЛицоПоПолучателю(Объект.Контрагент);
|
||
ВставитьСтрокуВТекущуюПозицию(Элементы.Содержимое, Содержимое, КонтактноеЛицо + " ");
|
||
КонецЕсли;
|
||
КонецПроцедуры
|
||
|
||
&НаСервере
|
||
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи)
|
||
Заголовок = ТекущийОбъект.Наименование + " (Исходящее письмо)";
|
||
КонецПроцедуры
|
||
|
||
&НаКлиенте
|
||
Процедура КонтрагентПриИзменении(Элемент)
|
||
ДобавитьПолучателей(Объект.Получатель, Объект.Контрагент);
|
||
КонецПроцедуры
|
||
|
||
&НаКлиенте
|
||
Процедура ВыделитьВажное(Команда)
|
||
Перем Начало, Конец;
|
||
ВсеВажное = Истина;
|
||
Элементы.Содержимое.ПолучитьГраницыВыделения(Начало, Конец);
|
||
Если Начало = Конец Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
|
||
НаборТекстовыхЭлементов = Новый Массив();
|
||
Для Каждого ТекстовыйЭлемент Из Содержимое.СформироватьЭлементы(Начало, Конец) Цикл
|
||
Если Тип(ТекстовыйЭлемент) = Тип("ТекстФорматированногоДокумента") Тогда
|
||
НаборТекстовыхЭлементов.Добавить(ТекстовыйЭлемент);
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
|
||
Для Каждого ТекстовыйЭлемент Из НаборТекстовыхЭлементов Цикл
|
||
Если ТекстовыйЭлемент.Шрифт.Жирный <> Истина И
|
||
ТекстовыйЭлемент.ЦветТекста <> Новый Цвет(255, 0, 0) Тогда
|
||
ВсеВажное = Ложь;
|
||
Прервать;
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
|
||
Для Каждого ТекстовыйЭлемент Из НаборТекстовыхЭлементов Цикл
|
||
ТекстовыйЭлемент.Шрифт = Новый Шрифт(ТекстовыйЭлемент.Шрифт, , , Не ВсеВажное);
|
||
ТекстовыйЭлемент.ЦветТекста = Новый Цвет(?(ВсеВажное, 0, 255), 0, 0);
|
||
КонецЦикла;
|
||
КонецПроцедуры
|
||
|
||
&НаКлиенте
|
||
Процедура ЗаполнитьПоШаблону(Команда)
|
||
Если Объект.Контрагент.Пустая() Тогда
|
||
Сообщить("Выберите контрагента");
|
||
Иначе
|
||
НайтиИЗаменить("[Контрагент]", Объект.Контрагент);
|
||
НайтиИЗаменить("[КонтактноеЛицо]", ПолучитьКонтактноеЛицоПоПолучателю(Объект.Контрагент));
|
||
КонецЕсли;
|
||
НайтиИЗаменить("[ДатаПисьма]", Объект.Дата);
|
||
КонецПроцедуры
|
||
|
||
&НаКлиенте
|
||
Процедура НайтиИЗаменить(СтрокаДляПоиска, СтрокаДляЗамены)
|
||
Перем ВставленныйТекст, ШрифтОформления, ЦветТекстаОформления, ЦветФонаОформления, НавигационнаяСсылкаОформления;
|
||
РезультатПоиска = Содержимое.НайтиТекст(СтрокаДляПоиска);
|
||
Пока ((РезультатПоиска <> Неопределено) И (РезультатПоиска.ЗакладкаНачала <> Неопределено) И (РезультатПоиска.ЗакладкаКонца <> Неопределено)) Цикл
|
||
ПозицияНачалаСледующегоЦиклаПоиска = Содержимое.ПолучитьПозициюПоЗакладке(РезультатПоиска.ЗакладкаНачала) + СтрДлина(СтрокаДляЗамены);
|
||
МассивЭлементовДляОформления = Содержимое.ПолучитьЭлементы(РезультатПоиска.ЗакладкаНачала, РезультатПоиска.ЗакладкаКонца);
|
||
Для Каждого ЭлементДляОформления Из МассивЭлементовДляОформления Цикл
|
||
Если Тип(ЭлементДляОформления) = Тип("ТекстФорматированногоДокумента") Тогда
|
||
ШрифтОформления = ЭлементДляОформления.Шрифт;
|
||
ЦветТекстаОформления = ЭлементДляОформления.ЦветТекста;
|
||
ЦветФонаОформления = ЭлементДляОформления.ЦветФона;
|
||
НавигационнаяСсылкаОформления = ЭлементДляОформления.НавигационнаяССылка;
|
||
Прервать;
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
Содержимое.Удалить(РезультатПоиска.ЗакладкаНачала, РезультатПоиска.ЗакладкаКонца);
|
||
ВставленныйТекст = Содержимое.Вставить(РезультатПоиска.ЗакладкаНачала, СтрокаДляЗамены);
|
||
Если ВставленныйТекст <> Неопределено И ШрифтОформления <> Неопределено Тогда
|
||
ВставленныйТекст.Шрифт = ШрифтОформления;
|
||
КонецЕсли;
|
||
Если ВставленныйТекст <> Неопределено И ЦветТекстаОформления <> Неопределено Тогда
|
||
ВставленныйТекст.ЦветТекста = ЦветТекстаОформления;
|
||
КонецЕсли;
|
||
Если ВставленныйТекст <> Неопределено И ЦветФонаОформления <> Неопределено Тогда
|
||
ВставленныйТекст.ЦветФона = ЦветФонаОформления;
|
||
КонецЕсли;
|
||
Если ВставленныйТекст <> Неопределено И НавигационнаяСсылкаОформления <> Неопределено Тогда
|
||
ВставленныйТекст.НавигационнаяССылка = НавигационнаяСсылкаОформления;
|
||
КонецЕсли;
|
||
|
||
РезультатПоиска = Содержимое.НайтиТекст(СтрокаДляПоиска, Содержимое.ПолучитьЗакладкуПоПозиции(ПозицияНачалаСледующегоЦиклаПоиска));
|
||
КонецЦикла;
|
||
КонецПроцедуры
|
||
|