Дипломная работа: Автоматизация расчетов с поставщиками и подрядчиками в ООО «Городской супермаркет»

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
92
// если нет вообще доступных учетных записей - отказываемся от отправки, выдаем ошибку
Если ТаблицаУчетныхЗаписей.Количество() = 0 Тогда
Сообщить("Нет доступных учетных записей! Отправка невозможна!");
Возврат 0;
КонецЕсли;
УчетнаяЗапись = ТаблицаУчетныхЗаписей[0].Ссылка; // берем первую найденную доступную
учетную запись
ИменаМакетов = Новый Массив;
Для каждого ЭлементСписка Из Объект.СписокПечатныхФорм Цикл
ИменаМакетов.Добавить(ЭлементСписка.Значение);
КонецЦикла;
ПараметрыПечати = Новый Структура("ФормироватьСтандартноеОписаниеПисьма", Ложь);
ФорматыСохранения = Новый Массив;
Для каждого ЭлементСписка Из Объект.СписокФорматовСохранения Цикл
ФорматыСохранения.Добавить(ЭлементСписка.Значение);
КонецЦикла;
ДополнительныеПараметры = Новый Структура("УпаковатьВАрхив,ФорматыСохранения",
Ложь, ФорматыСохранения);
// Заполняем параметры письма
ПараметрыПисьма = Новый Структура();
ПараметрыПисьма.Вставить("Копии", Новый Массив);
ПараметрыПисьма.Вставить("СлепыеКопии", Новый Массив);
ПараметрыПисьма.Вставить("Важность", ВажностьИнтернетПочтовогоСообщения.Обычная);
МассивПолучателей = Новый Массив;
ПолучателиСообщения = Новый Массив;
ПараметрыПисьма.Вставить("Кому", МассивПолучателей);
93
ПараметрыПисьма.Вставить("ПолучателиСообщения", ПолучателиСообщения);
ПараметрыПисьма.Вставить("Тема", "");
ПараметрыПисьма.Вставить("Тело", "");
ПараметрыПисьма.Вставить("Вложения", Новый Соответствие);
ПараметрыПисьма.Вставить("ОбрабатыватьТексты", Истина);
ПараметрыПисьма.Вставить("УведомитьОДоставке", Ложь);
ПараметрыПисьма.Вставить("УведомитьОПрочтении", Ложь);
ПараметрыПисьма.Вставить("ТипТекста",
Перечисления.ТипыТекстовЭлектронныхПисем.HTML);
Для каждого СтрокаТЧ Из Объект.АктыСверки Цикл
Если НЕ СтрокаТЧ.Пометка Тогда
Продолжить;
КонецЕсли;
МассивАдресов = СтрРазделить(СтрокаТЧ.ЭлектроннаяПочта, ";");
Для каждого Адрес Из МассивАдресов Цикл
НаименованиеКонтрагента = СтрокаТЧ.Контрагент.НаименованиеПолное;
МассивПолучателей.Очистить();
МассивПолучателей.Добавить(Новый Структура("Адрес,Представление",
Адрес, НаименованиеКонтрагента));
ПараметрыПисьма.Кому = МассивПолучателей;
ПолучателиСообщения.Очистить();
ПолучателиСообщения.Добавить(Новый
Структура("ИсточникКонтактнойИнформации,Адрес,Представление",
СтрокаТЧ.Контрагент, Адрес, НаименованиеКонтрагента));
ПараметрыПисьма.ПолучателиСообщения = ПолучателиСообщения;
ПараметрыПисьма.Тема = "Акт сверки за период " + Объект.Период + " от " +
СтрокаТЧ.АктСверки.Организация +
94
?(ЗначениеЗаполнено(СтрокаТЧ.Договор), " по договору " + СтрокаТЧ.Договор,
"");
Подпись = ПолучитьПодпись();
// Формирование текста письма
Если Объект.СписокПечатныхФорм.Количество() > 1 Тогда
// Если выбраны две печатные формы, то в текст письма выводим текст
для акта сверки с печатью
ТекстПисьма = Объект.ТекстПисьмаАктаСПечатью;
Иначе
Если Объект.СписокПечатныхФорм[0].Значение = "АктСверки" Тогда
ТекстПисьма = Объект.ТекстПисьмаАктаБезПечати;
Иначе
ТекстПисьма = Объект.ТекстПисьмаАктаСПечатью;
КонецЕсли;
КонецЕсли;
ПараметрыПисьма.Тело = ТекстПисьма + "
|" + Подпись;
// Формирование вложений
ПечатныеФормы = Новый Массив;
МассивОбъектов = Новый Массив;
МассивОбъектов.Добавить(СтрокаТЧ.АктСверки);
Для каждого ИмяМакета Из ИменаМакетов Цикл
ПечатныеФормыОбъекта =
УправлениеПечатью.СформироватьПечатныеФормыДляБыстройПечати("Документ.АктСверкиВзаимо
расчетов",
"АктСверки",
МассивОбъектов,
ПараметрыПечати);
Если ПечатныеФормыОбъекта <> Неопределено Тогда
95
Если ИмяМакета = "АктСверкиСПечатьюИПодписью" Тогда
ИндексТабличногоДокумента = 0;
Для каждого ТабличныйДокумент Из
ПечатныеФормыОбъекта.ТабличныеДокументы Цикл
УправлениеПечатьюБП.ДобавитьФаксимилеВФоне(ТабличныйДокумент.Значение,
ПечатныеФормыОбъекта.ОбъектыПечати[ИндексТабличногоДокумента].Значение);
КонецЦикла;
КонецЕсли;
ПечатныеФормы.Добавить(ПечатныеФормыОбъекта);
КонецЕсли;
КонецЦикла;
ПараметрыПисьмаДляВложений = Неопределено;
ПараметрыПисьмаДляВложений =
ОтправкаПочтовыхСообщений.ПараметрыЭлектронногоПисьма(ПечатныеФормы,
"Документ.АктСверкиВзаиморасчетов",
ДополнительныеПараметры);
ПараметрыПисьма.Вложения = ПараметрыПисьмаДляВложений.Вложения;
Попытка
РаботаСПочтовымиСообщениями.ОтправитьПочтовоеСообщение(УчетнаяЗапись,
ПараметрыПисьма);
КоличествоПисем = КоличествоПисем + 1;
Исключение
Сообщить(ОписаниеОшибки() + "
|Контрагенту " + НаименованиеКонтрагента + " на адрес " + Адрес + "
не было отправлено письмо!");
КонецПопытки;
КонецЦикла;
КонецЦикла;
Возврат КоличествоПисем;
96
КонецФункции
&НаСервереБезКонтекста
Функция ПолучитьПодпись()
Подпись =
БухгалтерскийУчетПереопределяемый.ПолучитьЗначениеПоУмолчанию("Подпись");
Если НЕ ЗначениеЗаполнено(Подпись) Тогда
Возврат "";
КонецЕсли;
ЧтениеHTML = Новый ЧтениеHTML;
ЧтениеHTML.УстановитьСтроку(Подпись);
ПостроительDOM = Новый ПостроительDOM;
ДокументDOM = ПостроительDOM.Прочитать(ЧтениеHTML);
ЭлементыР = ДокументDOM.ПолучитьЭлементыПоИмени("p");
Если ЭлементыР.Количество() > 0 Тогда
Возврат ЭлементыР[0].ТекстовоеСодержимое;
Иначе
Возврат "";
КонецЕсли;
КонецФункции
&НаКлиенте
Процедура ПроверитьНаличиеЭлектроннойПочты()
Для каждого СтрокаТЧ Из Объект.АктыСверки Цикл
Если СтрокаТЧ.Пометка И НЕ ЗначениеЗаполнено(СтрокаТЧ.ЭлектроннаяПочта) Тогда
СтрокаТЧ.Пометка = Ложь;
Источник: https://baza.diplomsite.ru/previewfile/581