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

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
87
АктСверки = Документы.АктСверкиВзаиморасчетов.СоздатьДокумент();
// Заполняем шапку
АктСверки.Дата = ТекущаяДатаСеанса();
АктСверки.Организация = Организация;
АктСверки.ДатаНачала = Объект.Период.ДатаНачала;
АктСверки.ДатаОкончания = Объект.Период.ДатаОкончания;
АктСверки.Комментарий = "Создан автоматически обработкой по формированию актов
сверки";
АктСверки.Контрагент = Контрагент;
АктСверки.ВалютаДокумента = Объект.Валюта;
Если Договор <> Неопределено Тогда
АктСверки.ДоговорКонтрагента = Договор;
АктСверки.ВалютаДокумента = Договор.ВалютаВзаиморасчетов;
КонецЕсли;
АктСверки.Заполнить(Неопределено);
// Заполняем ТЧ
Результат = ЗаполнитьПоДаннымБухгалтерскогоУчета(Истина, АктСверки);
АктСверки.ПредставительОрганизации =
ПолучитьПредставителяОрганизации(АктСверки.Организация);
Если Объект.ФормироватьПустыеАкты Тогда
// Прододим документ не зависимо от того, есть в нем данные или нет
ВыполнитьПроведениеДокумента(АктСверки);
Иначе
Если АктСверки.ПоДаннымКонтрагента.Количество() > 0 ИЛИ
АктСверки.ПоДаннымОрганизации.Количество() > 0 Тогда
// Если никаких взаиморасчетов по организации с контрагентом нет,
отказываемся от записи
ВыполнитьПроведениеДокумента(АктСверки);
88
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ВыполнитьПроведениеДокумента(АктСверки)
Попытка
АктСверки.Записать(РежимЗаписиДокумента.Проведение);
СтрокаТЧ = Объект.АктыСверки.Добавить();
СтрокаТЧ.АктСверки = АктСверки.Ссылка;
ЗаполнитьСтрокуТЧ(СтрокаТЧ.НомерСтроки);
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
КонецПроцедуры
&НаКлиенте
Процедура СформироватьАктыСверкиЗавершение(Результат, ДополнительныеПараметры) Экспорт
Если Результат = КодВозвратаДиалога.Да Тогда
ОтправитьАктыСверкиПоПочте(Неопределено);
КонецЕсли;
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПолучитьПредставителяОрганизации(Организация)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
89
| ОтветственныеЛицаОрганизацийСрезПоследних.ФизическоеЛицо КАК
ФизическоеЛицо
|ИЗ
| РегистрСведений.ОтветственныеЛицаОрганизаций.СрезПоследних(
| ,
| СтруктурнаяЕдиница = &Организация
| И ОтветственноеЛицо =
ЗНАЧЕНИЕ(Перечисление.ОтветственныеЛицаОрганизаций.Руководитель)) КАК
ОтветственныеЛицаОрганизацийСрезПоследних";
Запрос.УстановитьПараметр("Организация", Организация);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Если ВыборкаДетальныеЗаписи.Следующий() Тогда
Возврат ВыборкаДетальныеЗаписи.ФизическоеЛицо;
Иначе
Возврат Справочники.ФизическиеЛица.ПустаяСсылка();
КонецЕсли;
КонецФункции
#КонецОбласти
#Область ОтправкаПисем
&НаКлиенте
Процедура ОтправитьАктыСверкиПоПочте(Команда)
// Проверка заполнения данных
СоответствиеОшибок = Новый Соответствие;
Если НЕ ЗначениеЗаполнено(Объект.АдресОтправкиПротоколаРассылки) Тогда
90
СоответствиеОшибок.Вставить("Объект.АдресОтправкиПротоколаРассылки", 'Поле
"Адрес отправки протокола рассылки" не заполнено');
КонецЕсли;
Если НЕ ЗначениеЗаполнено(Объект.ТекстПисьма) Тогда
СоответствиеОшибок.Вставить("Объект.Текст письма", 'Поле "Текст письма" не
заполнено');
КонецЕсли;
Если Объект.АктыСверки.Количество() = 0 Тогда
СоответствиеОшибок.Вставить("Объект.АктыСверки", "Перед отправкой необходимо
заполнить таблицу актов сверки!");
КонецЕсли;
Если СоответствиеОшибок.Количество() > 0 Тогда
Для каждого ЭлементСоответствия Из СоответствиеОшибок Цикл
СообщитьОбОшибке(ЭлементСоответствия.Значение,
ЭлементСоответствия.Ключ);
КонецЦикла;
Возврат;
КонецЕсли;
ПроверитьНаличиеЭлектроннойПочты();
Если НЕ ПроверитьНаличиеВыбранныхЭлементов() Тогда
Сообщить("Ошибка в e-mail");
Возврат;
КонецЕсли;
ОписаниеОповещения = Новый
ОписаниеОповещения("ОтправитьПечатныеФормыПоПочтеНастройкаУчетнойЗаписиПредложена",
ЭтотОбъект);
Если
ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.РаботаСПочтовымиСоо
бщениями") Тогда
МодульРаботаСПочтовымиСообщениямиКлиент =
ОбщегоНазначенияКлиент.ОбщийМодуль("РаботаСПочтовымиСообщениямиКлиент");
91
МодульРаботаСПочтовымиСообщениямиКлиент.ПроверитьНаличиеУчетнойЗаписиДляОтправ
киПочты(ОписаниеОповещения);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура
ОтправитьПечатныеФормыПоПочтеНастройкаУчетнойЗаписиПредложена(УчетнаяЗаписьНастроена,
ДополнительныеПараметры) Экспорт
Если УчетнаяЗаписьНастроена <> Истина Тогда
Возврат;
КонецЕсли;
КоличествоПисем = ОтправитьПочтуНаСервере();
Сообщить("Рассылка актов завершена. Проверьте протокол рассылки, который дожен прийти
на указанный почтовый ящик);
КонецПроцедуры
&НаСервере
Функция ОтправитьПочтуНаСервере()
КоличествоПисем = 0;
ТаблицаУчетныхЗаписей =
РаботаСПочтовымиСообщениями.ДоступныеУчетныеЗаписи(Истина, , Ложь); // получим учетную
запись для текущего пользователя
Если ТаблицаУчетныхЗаписей.Количество() = 0 Тогда // если для текущего пользователя нет
учетной записи, попробуем получить системную
ТаблицаУчетныхЗаписей =
РаботаСПочтовымиСообщениями.ДоступныеУчетныеЗаписи(Истина, , Истина);
КонецЕсли;
Источник: https://baza.diplomsite.ru/previewfile/581