Оглавление > Создание документа акт сверки взаиморасчетов
02.02.2023

Программное создание акта сверки в 1С бухгалтерия 3.0

Тестировалось на версии 3.0.105.45

    Процедура СоздатьАктСверки(Парам)

        ВалютаРегламентированногоУчета = Константы.ВалютаРегламентированногоУчета.Получить();
    
        Док = Документы.АктСверкиВзаиморасчетов.СоздатьДокумент();
        Док.ВалютаДокумента = Справочники.Валюты.НайтиПоКоду("643");
        Док.Контрагент = Парам.Контрагент;
        Док.Организация = Справочники.Организации.ОрганизацияПоУмолчанию();
        Док.Дата = ТекущаяДата();
        Док.ДатаНачала = Дата(Парам.Дата1);
        Док.ДатаОкончания = Дата(Парам.Дата2);
        
        ЗаполнитьСчетамиПоУмолчаниюНаСервере(Док);
        
        ОтветственныеЛицаБП.УстановитьОтветственныхЛиц(Док);
        
        СтруктураПараметров = Новый Структура;
        
        СтруктураПараметров.Вставить("ДатаНачала",                    Док.ДатаНачала);
        СтруктураПараметров.Вставить("ДатаОкончания",                 Новый Граница(КонецДня(Док.ДатаОкончания), ВидГраницы.Включая));
        СтруктураПараметров.Вставить("Организация",                   Док.Организация);
        СтруктураПараметров.Вставить("Контрагент",                    Док.Контрагент);
        СтруктураПараметров.Вставить("СОбособленнымиПодразделениями", Ложь);
        СтруктураПараметров.Вставить("ВыводитьСчетаФактуры",          Док.ВыводитьСчетаФактуры);
        СтруктураПараметров.Вставить("ЗаполнятьДанныеКонтрагента",    Истина);
        СтруктураПараметров.Вставить("Валюта", Неопределено);
        
        ФильтрСписокСчетов = Новый Массив();
        Для Каждого СтрокаСчета Из Док.СписокСчетов Цикл
            Если ЗначениеЗаполнено(СтрокаСчета.Счет) И СтрокаСчета.УчаствуетВРасчетах Тогда
                ФильтрСписокСчетов.Добавить(СтрокаСчета.Счет);
            КонецЕсли;
        КонецЦикла;
        
        СтруктураПараметров.Вставить("ФильтрСписокСчетов", ФильтрСписокСчетов);
        
        АналитикаРасчетов = Новый Массив();
        АналитикаРасчетов.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Контрагенты);
        АналитикаРасчетов.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Договоры);
        СтруктураПараметров.Вставить("АналитикаРасчетов", АналитикаРасчетов);
        
        СтруктураПараметров.Вставить("ДоговорКонтрагента", 
            ?(НЕ ЗначениеЗаполнено(Док.ДоговорКонтрагента), Неопределено, Док.ДоговорКонтрагента));
            
        СтруктураПараметров.Вставить("ВыводитьПолныеНазванияДокументов", Док.ВыводитьПолныеНазванияДокументов);
        СтруктураПараметров.Вставить("ВалютаДокумента", Док.ВалютаДокумента);
        СтруктураПараметров.Вставить("РазбитьПоДоговорам", Док.РазбитьПоДоговорам);
        СтруктураПараметров.Вставить("ВалютаРегламентированногоУчета", ВалютаРегламентированногоУчета);
        
        Адрес = ПоместитьВоВременноеХранилище(Неопределено);
        
        Документы.АктСверкиВзаиморасчетов.ПодготовитьДанныеДляЗаполнения(СтруктураПараметров, Адрес);
        
        Данные = ПолучитьИзВременногоХранилища(Адрес);
        
        ЗагрузитьПодготовленныеДанные(Данные, Док);
        
        Док.Записать();

    КонецПроцедуры

    Процедура ЗаполнитьСчетамиПоУмолчаниюНаСервере(Объект)

        ТаблицаСчетов = УчетВзаиморасчетов.ПолучитьТаблицуСчетовУчетаВзаиморасчетов(Истина, Ложь);
        ТаблицаСчетов.Колонки.СчетРасчетов.Имя = "Счет";
        ТаблицаСчетов.Колонки.Добавить("УчаствуетВРасчетах");
        ТаблицаСчетов.ЗаполнитьЗначения(Истина, "УчаствуетВРасчетах");
        Объект.СписокСчетов.Загрузить(ТаблицаСчетов);
        
    КонецПроцедуры

    Функция ЗагрузитьПодготовленныеДанные(СтруктураДанных, Объект)
        
        РезультатВыполнения = Новый Структура();
        РезультатВыполнения.Вставить("ЗаданиеВыполнено", Истина);
        РезультатВыполнения.Вставить("Успешно", Ложь);
        
        Если ТипЗнч(СтруктураДанных) <> Тип("Структура") Тогда
            Возврат РезультатВыполнения;
        КонецЕсли;
        
        РезультатВыполнения.Успешно = СтруктураДанных.Успешно;
        
        Если СтруктураДанных.Успешно Тогда
        
            Объект.ОстатокНаНачало = СтруктураДанных.ОстатокНаНачало;
            Объект.ПоДаннымОрганизации.Загрузить(СтруктураДанных.ПоДаннымОрганизации);
            Если СтруктураДанных.Свойство("ПоДаннымКонтрагента") Тогда
                Объект.ПоДаннымКонтрагента.Загрузить(СтруктураДанных.ПоДаннымКонтрагента);
            КонецЕсли;
        
        КонецЕсли;
        
        Возврат РезультатВыполнения;
        
    КонецФункции