Имя: Пароль:
1C
1С v8
1С Конфигуратор, помогите пожалуйста с операциями))
0 MrArtemSolovev
 
19.04.18
18:14
Суть в чём, есть форма, которая отвечает за вывод информации об расчётах по займам выданным контрагентам, всё работает прекрасно, таблица в конечном итоге формируется, но операции и проводки идут датой конца периода, который выбирает пользователь, а требуется,  чтобы операции шли последним числом месяца, пример:
Есть два расчёта, один был в феврале, второй в апреле, пользователь выбирает период с 1 февраля по 30 апреля, на выходе получает нормальную форму, с договорами и датами, но операции и проводки стоят от 30 апреля, а нужно чтобы февральский расчёт по операции шёл 28 февраля, а апрельский следовательно 30 апреля и вот как это вообще сделать?
сейчас запрос выглядит так:

ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстатокДт КАК Сумма,
ХозрасчетныйОстаткиИОбороты.Период КАК Период,
ХозрасчетныйОстаткиИОбороты.Субконто1 КАК Субконто1,
ХозрасчетныйОстаткиИОбороты.Субконто2 КАК Субконто2,
КОНЕЦПЕРИОДА(ХозрасчетныйОстаткиИОбороты.Период, МЕСЯЦ) КАК ПерМесяц
ИЗ
РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&Начало, &Конец, День, ДвиженияИГраницыПериода, Счет = &Счет, , Организация = &Организация) КАК ХозрасчетныйОстаткиИОбороты
ИТОГИ
СУММА(Сумма)
ПО
Субконто1,
Субконто2";
1 MrArtemSolovev
 
19.04.18
18:23
Приведу весь листинг на всякий случай

Функция СформироватьНаСервере()
    // Вставить содержимое обработчика.
    Запрос = Новый запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстатокДт КАК Сумма,
                   |    ХозрасчетныйОстаткиИОбороты.Период КАК Период,
                   |    ХозрасчетныйОстаткиИОбороты.Субконто1 КАК Субконто1,
                   |    ХозрасчетныйОстаткиИОбороты.Субконто2 КАК Субконто2,
                   |    КОНЕЦПЕРИОДА(ХозрасчетныйОстаткиИОбороты.Период, МЕСЯЦ) КАК ПерМесяц
                   |ИЗ
                   |    РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&Начало, &Конец, День, ДвиженияИГраницыПериода, Счет = &Счет, , Организация = &Организация) КАК ХозрасчетныйОстаткиИОбороты
                   |ИТОГИ
                   |    СУММА(Сумма)
                   |ПО
                   |    Субконто1,
                   |    Субконто2";
    Запрос.УстановитьПараметр("Начало",Начало_периода);
    Запрос.УстановитьПараметр("Конец",Конец_периода);
    Запрос.УстановитьПараметр("Организация",Организация);
    
    //Запрос.УстановитьПараметр("Контрагент",Контрагент);
    //Запрос.УстановитьПараметр("Договор",Договор);
    Запрос.УстановитьПараметр("Счет",ПланыСчетов.Хозрасчетный.ПредоставленныеЗаймы);
    РезультатЗапроса = Запрос.Выполнить();
    Выборка = РезультатЗапроса.Выбрать();
    КоличествоДнейВГоду = ДеньГода(КонецГода(Конец_периода));
    ДатаПредыдущая = Начало_периода;
    НаращеннаяСумма = 0;
    МойТабличныйДокумент = Новый ТабличныйДокумент;
    ОтчетОбъект = РеквизитФормыВЗначение("Отчет");
    Макет = ОтчетОбъект.ПолучитьМакет("Макет");
    ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
    ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
    ОбластьИтог = Макет.ПолучитьОбласть("Итог");
    ОбластьПробел = Макет.ПолучитьОбласть ("Пробел");
    //МойТабличныйДокумент.Вывести(ОбластьШапка);
    ВыборкаКонтрагентов = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);
    //проверка Создать операцию
    Если СоздатьОперацию Тогда
        Операция = Документы.ОперацияБух.СоздатьДокумент();
        Операция.Дата = Конец_периода;
        Операция.Комментарий = "Начисление процентов по предоставленному займу";
        Операция.Содержание = "Начисление процентов по предоставленному займу";
        Операция.Организация = Организация;
        Операция.СпособЗаполнения = "Вручную";
    КонецЕсли;    
    Пока ВыборкаКонтрагентов.Следующий() Цикл    
        ВыборкаДоговоров = ВыборкаКонтрагентов.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);
        Пока ВыборкаДоговоров.Следующий() Цикл
            ОбластьШапка.Параметры.Контрагент = ВыборкаДоговоров.Субконто1;
            ОбластьШапка.Параметры.Договор = ВыборкаДоговоров.Субконто2;
            МойТабличныйДокумент.Вывести(ОбластьШапка);
            Выборка = ВыборкаДоговоров.Выбрать();
            НаращеннаяСумма = 0;
            ДатаПредыдущая = Начало_периода;
            Пока Выборка.Следующий()Цикл
                ДатаТекущая = Выборка.Период;
                //на 2 марта сумма остатков = 0, на 26 марта с периодом 24 дня остаток 10 млн
                СуммаТекущая = Выборка.Сумма;
                //на период между датой предыдущей и датой текущей должны начислить проценты на сумму
                КоличествоДней = ((ДатаТекущая - ДатаПредыдущая)/3600)/24;
                Если (ДатаПредыдущая = ДатаТекущая) и
                    (СуммаТекущая <> 0) тогда
                    КоличествоДней = КоличествоДней +1;
                КонецЕсли;    
                Проценты = ОКР(СуммаТекущая*Процентная_ставка/100*КоличествоДней/КоличествоДнейВГоду, 2);
                НаращеннаяСумма = НаращеннаяСумма + Проценты;
                ОбластьСтрока.Параметры.ДатаПредыдущая = ДатаПредыдущая;
                ОбластьСтрока.Параметры.ДатаТекущая = ДатаТекущая;
                ОбластьСтрока.Параметры.Сумма = СуммаТекущая;
                ОбластьСтрока.Параметры.Проценты = Проценты;
                МойТабличныйДокумент.Вывести(ОбластьСтрока);
                ДатаПредыдущая = ДатаТекущая;                    
                //создание опреации
                ОбщаяСумма = 0;
            Конеццикла;
            ОбластьИтог.Параметры.НаращеннаяСумма = НаращеннаяСумма;
            ОбластьИтог.Параметры.Заполнить(ВыборкаКонтрагентов);
            МойТабличныйДокумент.Вывести(ОбластьИтог);
            ОбластьПробел.Параметры.Заполнить(ВыборкаДоговоров);
            МойТабличныйДокумент.Вывести(ОбластьПробел);
            Если СоздатьОперацию И (НаращеннаяСумма <> 0) Тогда
                    //добавляем проводки
                    Проводка = Операция.Движения.Хозрасчетный.Добавить();
                    Проводка.Активность = Истина;    
                    Проводка.Организация = Организация;
                    Проводка.Период = Конец_периода;
                    
                    Проводка.Содержание = "Начисление процентов по предоставленному займу";//другое содержание, не то, что в документе, может быть для каждой строки разное
                    
                    Проводка.СчетДт = ПланыСчетов.Хозрасчетный.ПрочиеРасчетыСРазнымиДебиторамиИКредиторами;
                    Проводка.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Контрагенты] = ВыборкаКонтрагентов.Субконто1;
                    Проводка.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Контрагенты] = ВыборкаДоговоров.Субконто2;
                    Проводка.СчетКт = ПланыСчетов.Хозрасчетный.ПрочиеДоходы;
                    Проводка.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.ПрочиеДоходыИРасходы] = СтатьяРасходов;
                    Проводка.Сумма = НаращеннаяСумма;
                    Проводка.СуммаНУКт = НаращеннаяСумма;
                    ОбщаяСумма = ОбщаяСумма + НаращеннаяСумма;
            КонецЕсли;
        КонецЦикла;
    КонецЦикла;
    Если СоздатьОперацию И (ОбщаяСумма <> 0) Тогда
        Операция.СуммаОперации = ОбщаяСумма;
        Операция.Движения.Хозрасчетный.Записывать = Истина;
        Операция.Записать(РежимЗаписиДокумента.Запись);
        Операция.Движения.Хозрасчетный.Записать(Истина);
        Сообщить("Создана " + Операция);
    КонецЕсли;
    //сумма по всем контрагентам
    
    //ОбластьИтог.Параметры.НаращеннаяСумма = НаращеннаяСумма;
    //МойТабличныйДокумент.Вывести(ОбластьПробел);
    //МойТабличныйДокумент.Вывести(ОбластьИтог);
    Возврат МойТабличныйДокумент;
    //ТекстСообщения = НаращеннаяСумма;
    //Сообщить(ТекстСообщения);
    
    КонецФункции
2 hhhh
 
20.04.18
00:13
Ну вот в этом месте

    Если СоздатьОперацию Тогда
        Операция = Документы.ОперацияБух.СоздатьДокумент();
        Операция.Дата = Конец_периода;


напишите

Операция.Дата = То что нужно
3 MrArtemSolovev
 
20.04.18
08:09
Так вот в том, то и дело, что если я вставлю туда к примеру ПерМесяц, как конец периода, то ничего не меняется)
4 MrArtemSolovev
 
20.04.18
08:12
Появляется ошибка, что дата документа должна быть не ранее 2000 года и ошибка записи операции
5 catena
 
20.04.18
08:13
Еще у Проводка.Период надо дату менять
6 catena
 
20.04.18
08:14
(4)Ну так проверь, что у тебя там в ПерМесяц
7 MrArtemSolovev
 
20.04.18
08:22
КОНЕЦПЕРИОДА(ХозрасчетныйОстаткиИОбороты.Период, МЕСЯЦ) КАК ПерМесяц

Получается в ПерМесяц, у меня последняя дата каждого месяца периода остатков и оборотов

при добавлении его в Период.Проводка, тоже вываливается с ошибкой, даты документа
8 hhhh
 
20.04.18
08:27
(7) так у вас

Операция.Дата = Конец_периода;

еще до запроса присваивается, что вы нам втюхиваете? А вы перМесяц уже потом намного позже, уже в запросме вычисляете.
9 MrArtemSolovev
 
20.04.18
08:30
Честно не втюхиваю) Просто видимо у нас вот так вот классно преподают программирование в 1С, диктуя код под запись, как диктант)
10 MrArtemSolovev
 
20.04.18
08:31
а потом дают задания, которые ты вообще понятия не имеешь как делать) так что прощу прощения, если чем то вас обидел
11 фросия
 
20.04.18
08:31
(9) а так всегда будет. нет готовых решений. вам дали вектор- думайте.
12 MrArtemSolovev
 
20.04.18
08:33
Я понимаю, что нет готовых решений) просто я в принципе не могу понять, куда мне этот ПерМесяц запихнуть нужно
13 catena
 
20.04.18
08:34
(9)При чем тут модель преподавания? У вас выборка из запроса открывается раньше, чем вы пытаетесь из нее значения дергать.


>"КОНЕЦПЕРИОДА(ХозрасчетныйОстаткиИОбороты.Период, МЕСЯЦ)
>КАК ПерМесяц

>Получается в ПерМесяц,"

Я не спрашивала, как вы думаете, я сказала посмотреть. Отладчиком. Отследить эволюцию всех интересующих переменных.
14 catena
 
20.04.18
08:34
открывается раньше - > читать как "открывается позже"
15 MrArtemSolovev
 
20.04.18
08:36
Понял, спасибо
16 MrArtemSolovev
 
20.04.18
09:38
ну собственно, я переделал, как советовали

Функция СформироватьНаСервере()
    // Вставить содержимое обработчика.
    Запрос = Новый запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстатокДт КАК Сумма,
                   |    ХозрасчетныйОстаткиИОбороты.Период КАК Период,
                   |    ХозрасчетныйОстаткиИОбороты.Субконто1 КАК Субконто1,
                   |    ХозрасчетныйОстаткиИОбороты.Субконто2 КАК Субконто2,
                   |    КОНЕЦПЕРИОДА(ХозрасчетныйОстаткиИОбороты.Период, МЕСЯЦ) КАК МЕСЯЦ
                   |ИЗ
                   |    РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&Начало, &Конец, День, ДвиженияИГраницыПериода, Счет = &Счет, , Организация = &Организация) КАК ХозрасчетныйОстаткиИОбороты
                   |ИТОГИ
                   |    СУММА(Сумма)
                   |ПО
                   |    Субконто1,
                   |    Субконто2";
    Запрос.УстановитьПараметр("Начало",Начало_периода);
    Запрос.УстановитьПараметр("Конец",Конец_периода);
    Запрос.УстановитьПараметр("Организация",Организация);
    
    //Запрос.УстановитьПараметр("Контрагент",Контрагент);
    //Запрос.УстановитьПараметр("Договор",Договор);
    Запрос.УстановитьПараметр("Счет",ПланыСчетов.Хозрасчетный.ПредоставленныеЗаймы);
    РезультатЗапроса = Запрос.Выполнить();
    Выборка = РезультатЗапроса.Выбрать();
    КоличествоДнейВГоду = ДеньГода(КонецГода(Конец_периода));
    ДатаПредыдущая = Начало_периода;
    НаращеннаяСумма = 0;
    МойТабличныйДокумент = Новый ТабличныйДокумент;
    ОтчетОбъект = РеквизитФормыВЗначение("Отчет");
    Макет = ОтчетОбъект.ПолучитьМакет("Макет");
    ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
    ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
    ОбластьИтог = Макет.ПолучитьОбласть("Итог");
    ОбластьПробел = Макет.ПолучитьОбласть ("Пробел");
    //МойТабличныйДокумент.Вывести(ОбластьШапка);
    ВыборкаКонтрагентов = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);
    //проверка Создать операцию
        Пока ВыборкаКонтрагентов.Следующий() Цикл    
        ВыборкаДоговоров = ВыборкаКонтрагентов.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);
        Пока ВыборкаДоговоров.Следующий() Цикл
            ОбластьШапка.Параметры.Контрагент = ВыборкаДоговоров.Субконто1;
            ОбластьШапка.Параметры.Договор = ВыборкаДоговоров.Субконто2;
            МойТабличныйДокумент.Вывести(ОбластьШапка);
            Выборка = ВыборкаДоговоров.Выбрать();
            НаращеннаяСумма = 0;
            ДатаПредыдущая = Начало_периода;
            Пока Выборка.Следующий()Цикл
                ДатаТекущая = Выборка.Период;
                //на 2 марта сумма остатков = 0, на 26 марта с периодом 24 дня остаток 10 млн
                СуммаТекущая = Выборка.Сумма;
                //на период между датой предыдущей и датой текущей должны начислить проценты на сумму
                КоличествоДней = ((ДатаТекущая - ДатаПредыдущая)/3600)/24;
                Если (ДатаПредыдущая = ДатаТекущая) и
                    (СуммаТекущая <> 0) тогда
                    КоличествоДней = КоличествоДней +1;
                КонецЕсли;    
                Проценты = ОКР(СуммаТекущая*Процентная_ставка/100*КоличествоДней/КоличествоДнейВГоду, 2);
                НаращеннаяСумма = НаращеннаяСумма + Проценты;
                ОбластьСтрока.Параметры.ДатаПредыдущая = ДатаПредыдущая;
                ОбластьСтрока.Параметры.ДатаТекущая = ДатаТекущая;
                ОбластьСтрока.Параметры.Сумма = СуммаТекущая;
                ОбластьСтрока.Параметры.Проценты = Проценты;
                МойТабличныйДокумент.Вывести(ОбластьСтрока);
                ДатаПредыдущая = ДатаТекущая;                    
                //создание опреации
                ОбщаяСумма = 0;
                Если СоздатьОперацию Тогда
        Операция = Документы.ОперацияБух.СоздатьДокумент();
        Операция.Дата = Выборка.МЕСЯЦ;
        Операция.Комментарий = "Начисление процентов по предоставленному займу";
        Операция.Содержание = "Начисление процентов по предоставленному займу";
        Операция.Организация = Организация;
        Операция.СпособЗаполнения = "Вручную";
    КонецЕсли;    
Если СоздатьОперацию И (НаращеннаяСумма <> 0) Тогда
                    //добавляем проводки
                    Проводка = Операция.Движения.Хозрасчетный.Добавить();
                    Проводка.Активность = Истина;    
                    Проводка.Организация = Организация;
                    Проводка.Период = Выборка.МЕСЯЦ;
                    
                    Проводка.Содержание = "Начисление процентов по предоставленному займу";//другое содержание, не то, что в документе, может быть для каждой строки разное
                    
                    Проводка.СчетДт = ПланыСчетов.Хозрасчетный.ПрочиеРасчетыСРазнымиДебиторамиИКредиторами;
                    Проводка.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Контрагенты] = ВыборкаКонтрагентов.Субконто1;
                    Проводка.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Контрагенты] = ВыборкаДоговоров.Субконто2;
                    Проводка.СчетКт = ПланыСчетов.Хозрасчетный.ПрочиеДоходы;
                    Проводка.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.ПрочиеДоходыИРасходы] = СтатьяРасходов;
                    Проводка.Сумма = НаращеннаяСумма;
                    Проводка.СуммаНУКт = НаращеннаяСумма;
                    ОбщаяСумма = ОбщаяСумма + НаращеннаяСумма;
            КонецЕсли;

            Конеццикла;
            ОбластьИтог.Параметры.НаращеннаяСумма = НаращеннаяСумма;
            ОбластьИтог.Параметры.Заполнить(ВыборкаКонтрагентов);
            МойТабличныйДокумент.Вывести(ОбластьИтог);
            ОбластьПробел.Параметры.Заполнить(ВыборкаДоговоров);
            МойТабличныйДокумент.Вывести(ОбластьПробел);
                    КонецЦикла;
    КонецЦикла;
    Если СоздатьОперацию И (ОбщаяСумма <> 0) Тогда
        Операция.СуммаОперации = ОбщаяСумма;
        Операция.Движения.Хозрасчетный.Записывать = Истина;
        Операция.Записать(РежимЗаписиДокумента.Запись);
        Операция.Движения.Хозрасчетный.Записать(Истина);
        Сообщить("Создана " + Операция);
    КонецЕсли;
    //сумма по всем контрагентам
    
    //ОбластьИтог.Параметры.НаращеннаяСумма = НаращеннаяСумма;
    //МойТабличныйДокумент.Вывести(ОбластьПробел);
    //МойТабличныйДокумент.Вывести(ОбластьИтог);
    Возврат МойТабличныйДокумент;
    //ТекстСообщения = НаращеннаяСумма;
    //Сообщить(ТекстСообщения);
    
    КонецФункции
17 MrArtemSolovev
 
20.04.18
09:38
В итоге, выводятся февральские операции на 30 апреля, а апрельских вообще нет
18 Доминошник
 
20.04.18
10:00
(17) Создаём операции в цикле, а записываем только после цикла?
19 MrArtemSolovev
 
20.04.18
10:09
Доминошник, спасибо) выводятся раздельно) но обе идут от 30 апреля, код ниже
20 MrArtemSolovev
 
20.04.18
10:10
Функция СформироватьНаСервере()
    // Вставить содержимое обработчика.
    Запрос = Новый запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстатокДт КАК Сумма,
                   |    ХозрасчетныйОстаткиИОбороты.Период КАК Период,
                   |    ХозрасчетныйОстаткиИОбороты.Субконто1 КАК Субконто1,
                   |    ХозрасчетныйОстаткиИОбороты.Субконто2 КАК Субконто2,
                   |    КОНЕЦПЕРИОДА(ХозрасчетныйОстаткиИОбороты.Период, МЕСЯЦ) КАК МЕСЯЦ
                   |ИЗ
                   |    РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&Начало, &Конец, День, ДвиженияИГраницыПериода, Счет = &Счет, , Организация = &Организация) КАК ХозрасчетныйОстаткиИОбороты
                   |ИТОГИ
                   |    СУММА(Сумма)
                   |ПО
                   |    Субконто1,
                   |    Субконто2";
    Запрос.УстановитьПараметр("Начало",Начало_периода);
    Запрос.УстановитьПараметр("Конец",Конец_периода);
    Запрос.УстановитьПараметр("Организация",Организация);
    
    //Запрос.УстановитьПараметр("Контрагент",Контрагент);
    //Запрос.УстановитьПараметр("Договор",Договор);
    Запрос.УстановитьПараметр("Счет",ПланыСчетов.Хозрасчетный.ПредоставленныеЗаймы);
    РезультатЗапроса = Запрос.Выполнить();
    Выборка = РезультатЗапроса.Выбрать();
    КоличествоДнейВГоду = ДеньГода(КонецГода(Конец_периода));
    ДатаПредыдущая = Начало_периода;
    НаращеннаяСумма = 0;
    МойТабличныйДокумент = Новый ТабличныйДокумент;
    ОтчетОбъект = РеквизитФормыВЗначение("Отчет");
    Макет = ОтчетОбъект.ПолучитьМакет("Макет");
    ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
    ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
    ОбластьИтог = Макет.ПолучитьОбласть("Итог");
    ОбластьПробел = Макет.ПолучитьОбласть ("Пробел");
    //МойТабличныйДокумент.Вывести(ОбластьШапка);
    ВыборкаКонтрагентов = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);
    //проверка Создать операцию
        Пока ВыборкаКонтрагентов.Следующий() Цикл    
        ВыборкаДоговоров = ВыборкаКонтрагентов.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);
        Пока ВыборкаДоговоров.Следующий() Цикл
            ОбластьШапка.Параметры.Контрагент = ВыборкаДоговоров.Субконто1;
            ОбластьШапка.Параметры.Договор = ВыборкаДоговоров.Субконто2;
            МойТабличныйДокумент.Вывести(ОбластьШапка);
            Выборка = ВыборкаДоговоров.Выбрать();
            НаращеннаяСумма = 0;
            ДатаПредыдущая = Начало_периода;
            Пока Выборка.Следующий()Цикл
                ДатаТекущая = Выборка.Период;
                //на 2 марта сумма остатков = 0, на 26 марта с периодом 24 дня остаток 10 млн
                СуммаТекущая = Выборка.Сумма;
                //на период между датой предыдущей и датой текущей должны начислить проценты на сумму
                КоличествоДней = ((ДатаТекущая - ДатаПредыдущая)/3600)/24;
                Если (ДатаПредыдущая = ДатаТекущая) и
                    (СуммаТекущая <> 0) тогда
                    КоличествоДней = КоличествоДней +1;
                КонецЕсли;    
                Проценты = ОКР(СуммаТекущая*Процентная_ставка/100*КоличествоДней/КоличествоДнейВГоду, 2);
                НаращеннаяСумма = НаращеннаяСумма + Проценты;
                ОбластьСтрока.Параметры.ДатаПредыдущая = ДатаПредыдущая;
                ОбластьСтрока.Параметры.ДатаТекущая = ДатаТекущая;
                ОбластьСтрока.Параметры.Сумма = СуммаТекущая;
                ОбластьСтрока.Параметры.Проценты = Проценты;
                МойТабличныйДокумент.Вывести(ОбластьСтрока);
                ДатаПредыдущая = ДатаТекущая;                    
                //создание опреации
                ОбщаяСумма = 0;
                Если СоздатьОперацию Тогда
        Операция = Документы.ОперацияБух.СоздатьДокумент();
        Операция.Дата = Выборка.МЕСЯЦ;
        Операция.Комментарий = "Начисление процентов по предоставленному займу";
        Операция.Содержание = "Начисление процентов по предоставленному займу";
        Операция.Организация = Организация;
        Операция.СпособЗаполнения = "Вручную";
    КонецЕсли;    
Если СоздатьОперацию И (НаращеннаяСумма <> 0) Тогда
                    //добавляем проводки
                    Проводка = Операция.Движения.Хозрасчетный.Добавить();
                    Проводка.Активность = Истина;    
                    Проводка.Организация = Организация;
                    Проводка.Период = Выборка.МЕСЯЦ;
                    
                    Проводка.Содержание = "Начисление процентов по предоставленному займу";//другое содержание, не то, что в документе, может быть для каждой строки разное
                    
                    Проводка.СчетДт = ПланыСчетов.Хозрасчетный.ПрочиеРасчетыСРазнымиДебиторамиИКредиторами;
                    Проводка.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Контрагенты] = ВыборкаКонтрагентов.Субконто1;
                    Проводка.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Контрагенты] = ВыборкаДоговоров.Субконто2;
                    Проводка.СчетКт = ПланыСчетов.Хозрасчетный.ПрочиеДоходы;
                    Проводка.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.ПрочиеДоходыИРасходы] = СтатьяРасходов;
                    Проводка.Сумма = НаращеннаяСумма;
                    Проводка.СуммаНУКт = НаращеннаяСумма;
                    ОбщаяСумма = ОбщаяСумма + НаращеннаяСумма;
            КонецЕсли;
Если СоздатьОперацию И (ОбщаяСумма <> 0) Тогда
        Операция.СуммаОперации = ОбщаяСумма;
        Операция.Движения.Хозрасчетный.Записывать = Истина;
        Операция.Записать(РежимЗаписиДокумента.Запись);
        Операция.Движения.Хозрасчетный.Записать(Истина);
        Сообщить("Создана " + Операция);
    КонецЕсли;
            Конеццикла;
            ОбластьИтог.Параметры.НаращеннаяСумма = НаращеннаяСумма;
            ОбластьИтог.Параметры.Заполнить(ВыборкаКонтрагентов);
            МойТабличныйДокумент.Вывести(ОбластьИтог);
            ОбластьПробел.Параметры.Заполнить(ВыборкаДоговоров);
            МойТабличныйДокумент.Вывести(ОбластьПробел);
            

        КонецЦикла;
        
    КонецЦикла;
        //сумма по всем контрагентам
    
    //ОбластьИтог.Параметры.НаращеннаяСумма = НаращеннаяСумма;
    //МойТабличныйДокумент.Вывести(ОбластьПробел);
    //МойТабличныйДокумент.Вывести(ОбластьИтог);
    Возврат МойТабличныйДокумент;
    //ТекстСообщения = НаращеннаяСумма;
    //Сообщить(ТекстСообщения);
    
    КонецФункции
21 Доминошник
 
20.04.18
10:22
(20) Я бы, скорее всего, добавил бы в запросе итоги по месяцам, и создавал бы операции в обходе месяцев.
2 + 2 = 3.9999999999999999999999999999999...