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

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
97
Сообщить("Акт сверки не может быть отправлен контрагенту " +
СтрокаТЧ.Контрагент + ", т.к. для него не указан адрес электронной почты!");
КонецЕсли;
КонецЦикла;
КонецПроцедуры
#КонецОбласти
#Область СогласованиеАктовСверки
&НаКлиенте
Процедура СогласоватьСверку(Команда)
Если НЕ ПроверитьНаличиеВыбранныхЭлементов() Тогда
Сообщить("Перед согласованием необходимо указать акты сверки!");
Возврат;
КонецЕсли;
КоличествоДокументов = СогласоватьСверкуНаСервере();
Сообщить("Количество успешно согласованных актов сверки - " + КоличествоДокументов);
КонецПроцедуры
&НаСервере
Функция СогласоватьСверкуНаСервере()
КоличествоДокументов = 0;
Для каждого СтрокаТЧ Из Объект.АктыСверки Цикл
Если СтрокаТЧ.Пометка И НЕ СтрокаТЧ.АктСверки.СверкаСогласована Тогда
АктСверки = СтрокаТЧ.АктСверки.ПолучитьОбъект();
АктСверки.СверкаСогласована = Истина;
Попытка
98
АктСверки.Записать(РежимЗаписиДокумента.Проведение);
КоличествоДокументов = КоличествоДокументов + 1;
СтрокаТЧ.Согласован = Истина;
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
КонецЕсли;
КонецЦикла;
Возврат КоличествоДокументов;
КонецФункции
#КонецОбласти
#Область ЗаполнениеАктовСверкиПоОтбору
&НаКлиенте
Процедура ЗаполнитьАктыСверкиПоОтбору(Команда)
// Проверка заполнения данных
СоответствиеОшибок = Новый Соответствие;
Если НЕ ЗначениеЗаполнено(Объект.Период) Тогда
СоответствиеОшибок.Вставить("Объект.Период", "Перед заполнением актов сверки
необходимо указать период!");
КонецЕсли;
Если НЕ ЗначениеЗаполнено(Объект.Организация) Тогда
СоответствиеОшибок.Вставить("Объект.Организация", "Перед заполнением актов
сверки необходимо указать организации!");
КонецЕсли;
Если НЕ ЗначениеЗаполнено(Объект.СписокКонтрагентов) Тогда
99
СоответствиеОшибок.Вставить("Объект.СписокКонтрагентов", "Перед заполнением
актов сверки необходимо указать контрагентов!");
КонецЕсли;
Если НЕ ЗначениеЗаполнено(Объект.Валюта) Тогда
СоответствиеОшибок.Вставить("Объект.Валюта", "Перед заполнением актов сверки
необходимо указать валюту сверки!");
КонецЕсли;
Если Объект.ПоСчетам И НЕ ЗначениеЗаполнено(Объект.СписокСчетов) Тогда
СоответствиеОшибок.Вставить("Объект.СписокСчетов", "Перед заполнением актов
сверки необходимо выбрать счет!");
КонецЕсли;
Если СоответствиеОшибок.Количество() > 0 Тогда
Для каждого ЭлементСоответствия Из СоответствиеОшибок Цикл
СообщитьОбОшибке(ЭлементСоответствия.Значение,
ЭлементСоответствия.Ключ);
КонецЦикла;
Возврат;
КонецЕсли;
ЗаполнитьАктыСверкиПоОтборуНаСервере();
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьАктыСверкиПоОтборуНаСервере()
Объект.АктыСверки.Очистить();
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| АктСверкиВзаиморасчетов.Ссылка
100
|ИЗ
| Документ.АктСверкиВзаиморасчетов КАК АктСверкиВзаиморасчетов
|ГДЕ
| НЕ АктСверкиВзаиморасчетов.ПометкаУдаления
| И АктСверкиВзаиморасчетов.Организация В(&Организация)
| И АктСверкиВзаиморасчетов.Контрагент В(&Контрагент)
| И АктСверкиВзаиморасчетов.ДатаНачала = &ДатаНачала
| И АктСверкиВзаиморасчетов.ДатаОкончания = &ДатаОкончания";
Если Объект.ТолькоНеСогласованные Тогда
Запрос.Текст = Запрос.Текст + "
| И НЕ АктСверкиВзаиморасчетов.СверкаСогласована";
КонецЕсли;
Если Объект.ТолькоСогласованные Тогда
Запрос.Текст = Запрос.Текст + "
| И АктСверкиВзаиморасчетов.СверкаСогласована";
КонецЕсли;
Если ЗначениеЗаполнено(Объект.Валюта) Тогда
Запрос.Текст = Запрос.Текст + "
| И АктСверкиВзаиморасчетов.ВалютаДокумента = &Валюта";
КонецЕсли;
Если Объект.ПоСчетам И Объект.СписокСчетов.Количество() Тогда
Запрос.Текст = Запрос.Текст + "
| И АктСверкиВзаиморасчетов.СписокСчетов.Счет В (&СписокСчетов)";
КонецЕсли;
// Отбор по договорам
ОтобратьАктыСверкиПоДоговорам(Объект.ПоДоговорам, Объект.СписокДоговоров, Запрос);
// Отбор по видам договоров
ОтобратьАктыСверкиПоДоговорам(Объект.ПоВидамДоговоров,
Объект.СписокВидовДоговоров, Запрос);
101
Запрос.Текст = Запрос.Текст + "
|УПОРЯДОЧИТЬ ПО
| АктСверкиВзаиморасчетов.Организация,
| АктСверкиВзаиморасчетов.Контрагент";
Запрос.УстановитьПараметр("ДатаНачала", Объект.Период.ДатаНачала);
Запрос.УстановитьПараметр("ДатаОкончания", НачалоДня(Объект.Период.ДатаОкончания));
Запрос.УстановитьПараметр("Контрагент", Объект.СписокКонтрагентов);
Запрос.УстановитьПараметр("Организация", Объект.Организация);
Запрос.УстановитьПараметр("Валюта", Объект.Валюта);
Запрос.УстановитьПараметр("СписокСчетов", Объект.СписокСчетов);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
СтрокаТЧ = Объект.АктыСверки.Добавить();
СтрокаТЧ.АктСверки = ВыборкаДетальныеЗаписи.Ссылка;
ЗаполнитьСтрокуТЧ(СтрокаТЧ.НомерСтроки);
КонецЦикла;
Если НЕ ВыборкаДетальныеЗаписи.Количество() Тогда
Сообщить("По выбранным параметрам отбора акты сверки не найдены. Попробуйте
изменить отбор.");
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ПолучитьСписокДоговоров()
// Проверяем, заполнены ли списки для выбранных отборов по договорам и видам договоров
Если НЕ (Объект.ПоДоговорам И Объект.СписокДоговоров.Количество()) И
102
НЕ (Объект.ПоВидамДоговоров И Объект.СписокВидовДоговоров.Количество()) Тогда
Возврат Новый ТаблицаЗначений;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ДоговорыКонтрагентов.Организация КАК Организация,
| ДоговорыКонтрагентов.Владелец КАК Контрагент,
| ДоговорыКонтрагентов.Ссылка КАК Договор
|ИЗ
| Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
|ГДЕ
| НЕ ДоговорыКонтрагентов.ПометкаУдаления
| И НЕ ДоговорыКонтрагентов.ЭтоГруппа
| И ДоговорыКонтрагентов.Организация В(&Организация)
| И ДоговорыКонтрагентов.Владелец В(&Владелец)";
// Фильтруем список по договорам или видам договоров
Если Объект.ПоДоговорам Тогда
Запрос.Текст = Запрос.Текст + "
| И ДоговорыКонтрагентов.Ссылка В(&МассивДоговоров)";
Запрос.УстановитьПараметр("МассивДоговоров", Объект.СписокДоговоров);
ИначеЕсли Объект.ПоВидамДоговоров Тогда
Запрос.Текст = Запрос.Текст + "
| И ДоговорыКонтрагентов.ВидДоговора В(&МассивДоговоров)";
Запрос.УстановитьПараметр("МассивДоговоров", Объект.СписокВидовДоговоров);
КонецЕсли;
Запрос.Текст = Запрос.Текст + "
|
|УПОРЯДОЧИТЬ ПО
| Организация,
| ДоговорыКонтрагентов.Владелец";
103
Запрос.УстановитьПараметр("Владелец", Объект.СписокКонтрагентов);
Запрос.УстановитьПараметр("Организация", Объект.Организация);
Возврат Запрос.Выполнить().Выгрузить();
КонецФункции
&НаКлиенте
Процедура ПоВидамСчетовПриИзменении(Элемент)
Элементы.СписокВидовСчетов.Видимость = Объект.ПоСчетам;
КонецПроцедуры
&НаКлиенте
Процедура СписокВидовСчетовПриИзменении(Элемент)
// Обрабатываем поле СписокСчетов - удаляем пустые строки и повторяющиеся счета
МассивСчетов = Новый Массив;
Для Каждого Счет Из Объект.СписокСчетов Цикл
Если МассивСчетов.Найти(Счет.Значение) = Неопределено И НЕ
Счет.Значение.Пустая() Тогда
МассивСчетов.Добавить(Счет.Значение);
КонецЕсли;
КонецЦикла;
Объект.СписокСчетов.ЗагрузитьЗначения(МассивСчетов);
Если НЕ ЗначениеЗаполнено(Объект.СписокСчетов) Тогда
Текст = "Счета не выбраны! Необходимо выбрать хотя бы один счет или снять отбор по
счетам.";
СообщитьОбОшибке(Текст, Объект.СписокСчетов);
КонецЕсли;
104
КонецПроцедуры
&НаСервере
Процедура ОтобратьАктыСверкиПоДоговорам(ОбъектДоговор, ОбъектСписокДоговоров, Запрос)
Если ОбъектДоговор Тогда
ДоговорыКонтрагентов = ПолучитьСписокДоговоров();
// Проверяем, сформирован ли отбор по договорам/видам договоров
Если ДоговорыКонтрагентов.Количество() Тогда
Договор = ДоговорыКонтрагентов.ВыгрузитьКолонку("Договор");
// Если отбор по договорам/видам договоров не сформирован, а список заполнен -
передаем список
ИначеЕсли ОбъектСписокДоговоров.Количество() Тогда
Договор = ОбъектСписокДоговоров;
// В противном случае список не заполнен и формируем отбор по пустым значениям
Иначе
Договор = Справочники.ДоговорыКонтрагентов.ПустаяСсылка();
КонецЕсли;
Запрос.Текст = Запрос.Текст + "
| И АктСверкиВзаиморасчетов.ДоговорКонтрагента В
(&ДоговорыКонтрагентов)";
Запрос.УстановитьПараметр("ДоговорыКонтрагентов", Договор);
КонецЕсли;
КонецПроцедуры
#КонецОбласти

Смотрите также:

"Автоматизация обработки заявок ООО "Проектно-Строительная Компания"
"Автоматизация процесса аттестации персонала для ООО "Нэт Бай Нэт Холдинг"
"Анализ интернет-активности конкурентов ( на примере конкурентов "Газпром нефть")
"Бухгалтерский учёт и аудит расчётов с подотчётними лицами в организации на примере ООО "ЛОЦ 10""
«Психологическое сопровождение персонала в организации на примере ООО «Крокус»
Agile-методология в управлении проектами на примере ООО «Ресурсный центр «Академия КлассИнфо»
Aвтoмaтизaция пpoцecca вeдeния инфopмaциoннoй бaзы o дoлжнocтяx и вaкaнcияx c укaзaниeм тpeбoвaний к уpoвню знaний и нaвыкoв кaндидaтoв для гpуппы кaдpoв вoйcкoвoй чacти 3474»
Cовершенствование деловой оценки персонала в организации (на примере ООО "Даймонд кейтеринг развитие")
Cовершенствование управления рентабельности предприятия (на примере гуипп «бендерская типография «полиграфист»)
Event - менеджмент: реализация проекта (на примере ООО "АГРОПАК")