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

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
77
| АктСверкиВзаиморасчетовПоДаннымОрганизации.Ссылка.ОстатокНаНачало
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| 0,
| 0,
| АктСверкиВзаиморасчетов.Ссылка.Организация,
| АктСверкиВзаиморасчетов.Ссылка.Контрагент,
| АктСверкиВзаиморасчетов.Ссылка.ВалютаДокумента,
| АктСверкиВзаиморасчетов.Ссылка.ДоговорКонтрагента,
| АктСверкиВзаиморасчетов.Ссылка.СверкаСогласована,
| ИСТИНА,
| АктСверкиВзаиморасчетов.Ссылка.ОстатокНаНачало
|ИЗ
| Документ.АктСверкиВзаиморасчетов КАК АктСверкиВзаиморасчетов
|ГДЕ
| АктСверкиВзаиморасчетов.Ссылка = &Ссылка
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| СУММА(ВТ_ДанныеПоАкту.Дебет) КАК Дебет,
| СУММА(ВТ_ДанныеПоАкту.Кредит) КАК Кредит,
| ВТ_ДанныеПоАкту.Организация КАК Организация,
| ВТ_ДанныеПоАкту.Контрагент КАК Контрагент,
| ВТ_ДанныеПоАкту.Валюта КАК Валюта,
| ВТ_ДанныеПоАкту.Договор КАК Договор,
| ВТ_ДанныеПоАкту.Согласован КАК Согласован,
| ВТ_ДанныеПоАкту.Пометка КАК Пометка,
| ВТ_ДанныеПоАкту.ОстатокНаНачало КАК ОстатокНаНачало
|ИЗ
| ВТ_ДанныеПоАкту КАК ВТ_ДанныеПоАкту
|
78
ГРУППИРОВАТЬ ПО
| ВТ_ДанныеПоАкту.Пометка,
| ВТ_ДанныеПоАкту.Согласован,
| ВТ_ДанныеПоАкту.Валюта,
| ВТ_ДанныеПоАкту.Контрагент,
| ВТ_ДанныеПоАкту.Договор,
| ВТ_ДанныеПоАкту.Организация,
| ВТ_ДанныеПоАкту.ОстатокНаНачало";
Запрос.УстановитьПараметр("Ссылка", СтрокаТЧ.АктСверки);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Если ВыборкаДетальныеЗаписи.Следующий() Тогда
ЗаполнитьЗначенияСвойств(СтрокаТЧ, ВыборкаДетальныеЗаписи);
СтрокаТЧ.ОстатокНаКонец = ВыборкаДетальныеЗаписи.ОстатокНаНачало
+ ВыборкаДетальныеЗаписи.Дебет
- ВыборкаДетальныеЗаписи.Кредит;
Запрос.Текст =
"ВЫБРАТЬ
| КонтрагентыКонтактнаяИнформация.Представление
|ИЗ
| Справочник.Контрагенты.КонтактнаяИнформация КАК
КонтрагентыКонтактнаяИнформация
|ГДЕ
| КонтрагентыКонтактнаяИнформация.Ссылка = &Ссылка
| И КонтрагентыКонтактнаяИнформация.Тип = &Тип
| И КонтрагентыКонтактнаяИнформация.Вид = &Вид";
Запрос.УстановитьПараметр("Вид",
Справочники.ВидыКонтактнойИнформации.EmailКонтрагенты);
79
Запрос.УстановитьПараметр("Ссылка", ВыборкаДетальныеЗаписи.Контрагент);
Запрос.УстановитьПараметр("Тип",
Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты);
ТЗКонтакты = Запрос.Выполнить().Выгрузить();
СтрокаКонтакты = "";
Для каждого СтрокаТЗ из ТЗКонтакты Цикл
СтрокаКонтакты = СтрокаКонтакты + ?(СтрокаКонтакты = "", "", ";") +
СтрокаТЗ.Представление;
КонецЦикла;
СтрокаТЧ.ЭлектроннаяПочта = СтрокаКонтакты;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПоДоговорамПриИзменении(Элемент)
Элементы.СписокДоговоров.Видимость = Объект.ПоДоговорам;
Если Объект.ПоДоговорам Тогда
Элементы.СписокВидовДоговоров.Видимость = Ложь;
Объект.ПоВидамДоговоров = Ложь;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПоВидамДоговоровПриИзменении(Элемент)
Элементы.СписокВидовДоговоров.Видимость = Объект.ПоВидамДоговоров;
Если Объект.ПоВидамДоговоров Тогда
Элементы.СписокДоговоров.Видимость = Ложь;
Объект.ПоДоговорам = Ложь;
80
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СписокДоговоровНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ПараметрыОткрытия = Новый Структура("СписокДоговоров, СписокКонтрагентов",
Объект.СписокДоговоров, Объект.СписокКонтрагентов);
ОткрытьФорму("ВнешняяОбработка.АвтоматическоеФормированиеАктовСверки.Форма.Форм
аПодбораДоговоров",
ПараметрыОткрытия, ЭтаФорма, Новый
УникальныйИдентификатор,,,,РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
#КонецОбласти
#Область ТиповыеПроцедурыИФункцииМодуляФормы
&НаСервере
Функция ЗаполнитьПоДаннымБухгалтерскогоУчета(ЗаполнятьДанныеКонтрагента, АктСверки)
ВалютаРегламентированногоУчета =
Константы.ВалютаРегламентированногоУчета.Получить();
АдресХранилищаСОшибками = ПоместитьВоВременноеХранилище(Неопределено,
УникальныйИдентификатор);
Результат = Новый Структура();
Результат.Вставить("ЗаданиеВыполнено", Ложь);
Результат.Вставить("Успешно", Ложь);
// проверим заполненность обязательных реквизитов
81
Если НЕ ПроверитьЗаполнение() Тогда
Возврат Результат;
КонецЕсли;
СтруктураПараметров = Новый Структура;
СтруктураПараметров.Вставить("ДатаНачала", АктСверки.ДатаНачала);
СтруктураПараметров.Вставить("ДатаОкончания", Новый
Граница(КонецДня(АктСверки.ДатаОкончания), ВидГраницы.Включая));
СтруктураПараметров.Вставить("Организация", АктСверки.Организация);
СтруктураПараметров.Вставить("Контрагент", АктСверки.Контрагент);
СтруктураПараметров.Вставить("СОбособленнымиПодразделениями",
АктСверки.СОбособленнымиПодразделениями);
СтруктураПараметров.Вставить("ВыводитьСчетаФактуры",
АктСверки.ВыводитьСчетаФактуры);
СтруктураПараметров.Вставить("ЗаполнятьДанныеКонтрагента",
ЗаполнятьДанныеКонтрагента);
СтруктураПараметров.Вставить("Валюта", ?((АктСверки.ВалютаДокумента =
ВалютаРегламентированногоУчета), Неопределено, АктСверки.ВалютаДокумента));
Если Объект.ПоСчетам Тогда
АктСверки.СписокСчетов.Очистить();
Для Каждого Счет Из Объект.СписокСчетов Цикл
НовыйСчет = АктСверки.СписокСчетов.Добавить();
НовыйСчет.Счет = Счет.Значение;
НовыйСчет.УчаствуетВРасчетах = Истина;
КонецЦикла;
КонецЕсли;
// Выгружаем счета в массив
ФильтрСписокСчетов = АктСверки.СписокСчетов.ВыгрузитьКолонку("Счет");
Если ФильтрСписокСчетов.Количество() = 0 Тогда
ТекстОшибки = НСтр("ru='Не задан список счетов, по которым производится сверка.'");
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстОшибки, , ,
"АктСверки.СписокСчетов");
82
Возврат Результат;
КонецЕсли;
СтруктураПараметров.Вставить("ФильтрСписокСчетов", ФильтрСписокСчетов);
АналитикаРасчетов = Новый Массив();
АналитикаРасчетов.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Контра
генты);
АналитикаРасчетов.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Догово
ры);
СтруктураПараметров.Вставить("АналитикаРасчетов", АналитикаРасчетов);
СтруктураПараметров.Вставить("ДоговорКонтрагента",
?(НЕ ЗначениеЗаполнено(АктСверки.ДоговорКонтрагента), Неопределено,
АктСверки.ДоговорКонтрагента));
СтруктураПараметров.Вставить("ВыводитьПолныеНазванияДокументов",
АктСверки.ВыводитьПолныеНазванияДокументов);
СтруктураПараметров.Вставить("ВалютаДокумента", АктСверки.ВалютаДокумента);
СтруктураПараметров.Вставить("РазбитьПоДоговорам", АктСверки.РазбитьПоДоговорам);
СтруктураПараметров.Вставить("ВалютаРегламентированногоУчета",
ВалютаРегламентированногоУчета);
Если ЭтоАдресВременногоХранилища(АдресХранилищаСОшибками) Тогда
УдалитьИзВременногоХранилища(АдресХранилищаСОшибками);
АдресХранилищаСОшибками = "";
КонецЕсли;
АдресХранилищаСОшибками = ПоместитьВоВременноеХранилище(Неопределено,
УникальныйИдентификатор);
СтруктураПараметров.Вставить("АдресХранилищаСОшибками",
АдресХранилищаСОшибками);
НаименованиеЗадания = "ЗаполнитьПоДаннымОрганизации";
КоличествоПопыток = 0;
83
// Если количество попыток больше 10, а задание всё ещё не выполнено, то выходим
Пока НЕ Результат.ЗаданиеВыполнено И КоличествоПопыток < 11 Цикл
Результат = ДлительныеОперации.ЗапуститьВыполнениеВФоне(
УникальныйИдентификатор,
"Документы.АктСверкиВзаиморасчетов.ПодготовитьДанныеДляЗаполнения",
СтруктураПараметров,
НаименованиеЗадания);
КоличествоПопыток = КоличествоПопыток + 1;
КонецЦикла;
Если КоличествоПопыток > 10 Тогда
Сообщить("Не удалось сформировать акт сверки по организации " +
СтруктураПараметров.Организация + " с контрагентом " +
СтруктураПараметров.Контрагент +
?(СтруктураПараметров.ДоговорКонтрагента <> Неопределено, " по договору " +
СтруктураПараметров.ДоговорКонтрагента, "") + "
|Попробуйте запустить заново обработку с данным отбором или сформируйте
акт сверки вручную.");
КонецЕсли;
АдресХранилища = Результат.АдресХранилища;
Если Результат.ЗаданиеВыполнено Тогда
Результат = ЗагрузитьПодготовленныеДанные(АдресХранилища, АктСверки);
КонецЕсли;
Возврат Результат;
КонецФункции
&НаСервере
Функция ЗагрузитьПодготовленныеДанные(АдресХранилища, АктСверки)
СтруктураДанных = ПолучитьИзВременногоХранилища(АдресХранилища);
84
РезультатВыполнения = Новый Структура();
РезультатВыполнения.Вставить("ЗаданиеВыполнено", Истина);
РезультатВыполнения.Вставить("Успешно", Ложь);
Если ТипЗнч(СтруктураДанных) <> Тип("Структура") Тогда
Возврат РезультатВыполнения;
КонецЕсли;
РезультатВыполнения.Успешно = СтруктураДанных.Успешно;
Если СтруктураДанных.Успешно Тогда
АктСверки.ОстатокНаНачало = СтруктураДанных.ОстатокНаНачало;
АктСверки.ПоДаннымОрганизации.Загрузить(СтруктураДанных.ПоДаннымОрганизации);
Если СтруктураДанных.Свойство("ПоДаннымКонтрагента") Тогда
АктСверки.ПоДаннымКонтрагента.Загрузить(СтруктураДанных.ПоДаннымКонтрагента);
КонецЕсли;
КонецЕсли;
Возврат РезультатВыполнения;
КонецФункции
#КонецОбласти
#Область ФормированиеАктовСверки
&НаКлиенте
Процедура СформироватьАктыСверки(Команда)
// Проверка заполнения данных
СоответствиеОшибок = Новый Соответствие;
85
Если НЕ ЗначениеЗаполнено(Объект.ДатаНачала) Тогда
СоответствиеОшибок.Вставить("Объект.ДатаНачала", 'Поле "Дата начала" не
заполнено');
КонецЕсли;
Если НЕ ЗначениеЗаполнено(Объект.ДатаОкончания) Тогда
СоответствиеОшибок.Вставить("Объект.ДатаОкончания", 'Поле "Дата окончания" не
заполнено');
КонецЕсли;
Если НЕ ЗначениеЗаполнено(Объект.Организация) Тогда
СоответствиеОшибок.Вставить("Объект.Организация", 'Поле "Организация" не
заполнено');
КонецЕсли;
Если НЕ ЗначениеЗаполнено(Объект.СписокКонтрагентов) Тогда
СоответствиеОшибок.Вставить("Объект.СписокКонтрагентов", 'Поле "Контрагент" не
заполнено');
КонецЕсли;
Если СоответствиеОшибок.Количество() > 0 Тогда
Для каждого ЭлементСоответствия Из СоответствиеОшибок Цикл
СообщитьОбОшибке(ЭлементСоответствия.Значение,
ЭлементСоответствия.Ключ);
КонецЦикла;
Возврат;
КонецЕсли;
// Начало формирования документов
СформироватьАктыСверкиНаСервере();
Объект.АктыСверки.Сортировать("Организация Возр, Контрагент Возр");
Если Объект.АктыСверки.Количество() > 0 Тогда
86
Оповещение = Новый ОписаниеОповещения("СформироватьАктыСверкиЗавершение",
ЭтотОбъект);
ТекстВопроса = "Провести рассылку актов?";
ПоказатьВопрос(Оповещение, ТекстВопроса, РежимДиалогаВопрос.ДаНет);
Иначе
ПоказатьПредупреждение(,"Не было сформировано ни одного акта сверки!
|Попробуйте изменить параметры формирования.");
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура СформироватьАктыСверкиНаСервере()
Объект.АктыСверки.Очистить();
Если Объект.ПоДоговорам ИЛИ Объект.ПоВидамДоговоров Тогда
ДоговорыКонтрагентов = ПолучитьСписокДоговоров();
Для Каждого СтрокаДоговор Из ДоговорыКонтрагентов Цикл
ЗаполнитьАктСверки(СтрокаДоговор.Организация, СтрокаДоговор.Контрагент,
СтрокаДоговор.Договор);
КонецЦикла;
Иначе
Для Каждого ЭлементСпискаОрганизация Из Объект.Организация Цикл
Для Каждого ЭлементСписка Из Объект.СписокКонтрагентов Цикл
ЗаполнитьАктСверки(ЭлементСпискаОрганизация.Значение,
ЭлементСписка.Значение);
КонецЦикла;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗаполнитьАктСверки(Организация, Контрагент, Договор = Неопределено)

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

"Автоматизация обработки заявок ООО "Проектно-Строительная Компания"
"Автоматизация процесса аттестации персонала для ООО "Нэт Бай Нэт Холдинг"
"Анализ интернет-активности конкурентов ( на примере конкурентов "Газпром нефть")
"Бухгалтерский учёт и аудит расчётов с подотчётними лицами в организации на примере ООО "ЛОЦ 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 - менеджмент: реализация проекта (на примере ООО "АГРОПАК")