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

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
82
Возврат Результат;
КонецЕсли;
СтруктураПараметров.Вставить("ФильтрСписокСчетов", ФильтрСписокСчетов);
АналитикаРасчетов = Новый Массив();
АналитикаРасчетов.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Контра
генты);
АналитикаРасчетов.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Догово
ры);
СтруктураПараметров.Вставить("АналитикаРасчетов", АналитикаРасчетов);
СтруктураПараметров.Вставить("ДоговорКонтрагента",
?(НЕ ЗначениеЗаполнено(АктСверки.ДоговорКонтрагента), Неопределено,
АктСверки.ДоговорКонтрагента));
СтруктураПараметров.Вставить("ВыводитьПолныеНазванияДокументов",
АктСверки.ВыводитьПолныеНазванияДокументов);
СтруктураПараметров.Вставить("ВалютаДокумента", АктСверки.ВалютаДокумента);
СтруктураПараметров.Вставить("РазбитьПоДоговорам", АктСверки.РазбитьПоДоговорам);
СтруктураПараметров.Вставить("ВалютаРегламентированногоУчета",
ВалютаРегламентированногоУчета);
Если ЭтоАдресВременногоХранилища(АдресХранилищаСОшибками) Тогда
УдалитьИзВременногоХранилища(АдресХранилищаСОшибками);
АдресХранилищаСОшибками = "";
КонецЕсли;
АдресХранилищаСОшибками = ПоместитьВоВременноеХранилище(Неопределено,
УникальныйИдентификатор);
СтруктураПараметров.Вставить("АдресХранилищаСОшибками",
АдресХранилищаСОшибками);
НаименованиеЗадания = "ЗаполнитьПоДаннымОрганизации";
КоличествоПопыток = 0;
83
// Если количество попыток больше 10, а задание всё ещё не выполнено, то выходим
Пока НЕ Результат.ЗаданиеВыполнено И КоличествоПопыток < 11 Цикл
Результат = ДлительныеОперации.ЗапуститьВыполнениеВФоне(
УникальныйИдентификатор,
"Документы.АктСверкиВзаиморасчетов.ПодготовитьДанныеДляЗаполнения",
СтруктураПараметров,
НаименованиеЗадания);
КоличествоПопыток = КоличествоПопыток + 1;
КонецЦикла;
Если КоличествоПопыток > 10 Тогда
Сообщить("Не удалось сформировать акт сверки по организации " +
СтруктураПараметров.Организация + " с контрагентом " +
СтруктураПараметров.Контрагент +
?(СтруктураПараметров.ДоговорКонтрагента <> Неопределено, " по договору " +
СтруктураПараметров.ДоговорКонтрагента, "") + "
|Попробуйте запустить заново обработку с данным отбором или сформируйте
акт сверки вручную.");
КонецЕсли;
АдресХранилища = Результат.АдресХранилища;
Если Результат.ЗаданиеВыполнено Тогда
Результат = ЗагрузитьПодготовленныеДанные(АдресХранилища, АктСверки);
КонецЕсли;
Возврат Результат;
КонецФункции
&НаСервере
Функция ЗагрузитьПодготовленныеДанные(АдресХранилища, АктСверки)
СтруктураДанных = ПолучитьИзВременногоХранилища(АдресХранилища);
84
РезультатВыполнения = Новый Структура();
РезультатВыполнения.Вставить("ЗаданиеВыполнено", Истина);
РезультатВыполнения.Вставить("Успешно", Ложь);
Если ТипЗнч(СтруктураДанных) <> Тип("Структура") Тогда
Возврат РезультатВыполнения;
КонецЕсли;
РезультатВыполнения.Успешно = СтруктураДанных.Успешно;
Если СтруктураДанных.Успешно Тогда
АктСверки.ОстатокНаНачало = СтруктураДанных.ОстатокНаНачало;
АктСверки.ПоДаннымОрганизации.Загрузить(СтруктураДанных.ПоДаннымОрганизации);
Если СтруктураДанных.Свойство("ПоДаннымКонтрагента") Тогда
АктСверки.ПоДаннымКонтрагента.Загрузить(СтруктураДанных.ПоДаннымКонтрагента);
КонецЕсли;
КонецЕсли;
Возврат РезультатВыполнения;
КонецФункции
#КонецОбласти
#Область ФормированиеАктовСверки
&НаКлиенте
Процедура СформироватьАктыСверки(Команда)
// Проверка заполнения данных
СоответствиеОшибок = Новый Соответствие;
85
Если НЕ ЗначениеЗаполнено(Объект.ДатаНачала) Тогда
СоответствиеОшибок.Вставить("Объект.ДатаНачала", 'Поле "Дата начала" не
заполнено');
КонецЕсли;
Если НЕ ЗначениеЗаполнено(Объект.ДатаОкончания) Тогда
СоответствиеОшибок.Вставить("Объект.ДатаОкончания", 'Поле "Дата окончания" не
заполнено');
КонецЕсли;
Если НЕ ЗначениеЗаполнено(Объект.Организация) Тогда
СоответствиеОшибок.Вставить("Объект.Организация", 'Поле "Организация" не
заполнено');
КонецЕсли;
Если НЕ ЗначениеЗаполнено(Объект.СписокКонтрагентов) Тогда
СоответствиеОшибок.Вставить("Объект.СписокКонтрагентов", 'Поле "Контрагент" не
заполнено');
КонецЕсли;
Если СоответствиеОшибок.Количество() > 0 Тогда
Для каждого ЭлементСоответствия Из СоответствиеОшибок Цикл
СообщитьОбОшибке(ЭлементСоответствия.Значение,
ЭлементСоответствия.Ключ);
КонецЦикла;
Возврат;
КонецЕсли;
// Начало формирования документов
СформироватьАктыСверкиНаСервере();
Объект.АктыСверки.Сортировать("Организация Возр, Контрагент Возр");
Если Объект.АктыСверки.Количество() > 0 Тогда
86
Оповещение = Новый ОписаниеОповещения("СформироватьАктыСверкиЗавершение",
ЭтотОбъект);
ТекстВопроса = "Провести рассылку актов?";
ПоказатьВопрос(Оповещение, ТекстВопроса, РежимДиалогаВопрос.ДаНет);
Иначе
ПоказатьПредупреждение(,"Не было сформировано ни одного акта сверки!
|Попробуйте изменить параметры формирования.");
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура СформироватьАктыСверкиНаСервере()
Объект.АктыСверки.Очистить();
Если Объект.ПоДоговорам ИЛИ Объект.ПоВидамДоговоров Тогда
ДоговорыКонтрагентов = ПолучитьСписокДоговоров();
Для Каждого СтрокаДоговор Из ДоговорыКонтрагентов Цикл
ЗаполнитьАктСверки(СтрокаДоговор.Организация, СтрокаДоговор.Контрагент,
СтрокаДоговор.Договор);
КонецЦикла;
Иначе
Для Каждого ЭлементСпискаОрганизация Из Объект.Организация Цикл
Для Каждого ЭлементСписка Из Объект.СписокКонтрагентов Цикл
ЗаполнитьАктСверки(ЭлементСпискаОрганизация.Значение,
ЭлементСписка.Значение);
КонецЦикла;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьАктСверки(Организация, Контрагент, Договор = Неопределено)
Источник: https://baza.diplomsite.ru/previewfile/581