Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 8 общая

1С Конфигуратор, помогите пожалуйста с операциями))

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

ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстатокДт КАК Сумма,
ХозрасчетныйОстаткиИОбороты.Период КАК Период,
ХозрасчетныйОстаткиИОбороты.Субконто1 КАК Субконто1,
ХозрасчетныйОстаткиИОбороты.Субконто2 КАК Субконто2,
КОНЕЦПЕРИОДА(ХозрасчетныйОстаткиИОбороты.Период, МЕСЯЦ) КАК ПерМесяц
ИЗ
РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&Начало, &Конец, День, ДвиженияИГраницыПериода, Счет = &Счет, , Организация = &Организация) КАК ХозрасчетныйОстаткиИОбороты
ИТОГИ
СУММА(Сумма)
ПО
Субконто1,
Субконто2";
 
 
   MrArtemSolovev
 
1 - 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) Тогда
        Операция.СуммаОперации = ОбщаяСумма;
        Операция.Движения.Хозрасчетный.Записывать = Истина;
        Операция.Записать(РежимЗаписиДокумента.Запись);
        Операция.Движения.Хозрасчетный.Записать(Истина);
        Сообщить("Создана " + Операция);
    КонецЕсли;
    //сумма по всем контрагентам

    
    //ОбластьИтог.Параметры.НаращеннаяСумма = НаращеннаяСумма;

    //МойТабличныйДокумент.Вывести(ОбластьПробел);

    //МойТабличныйДокумент.Вывести(ОбластьИтог);

    Возврат МойТабличныйДокумент;
    //ТекстСообщения = НаращеннаяСумма;

    //Сообщить(ТекстСообщения);

    
    КонецФункции
   hhhh
 
2 - 20.04.18 - 00:13
Ну вот в этом месте

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


напишите

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

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

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

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


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

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

Я не спрашивала, как вы думаете, я сказала посмотреть. Отладчиком. Отследить эволюцию всех интересующих переменных.
   catena
 
14 - 20.04.18 - 08:34
открывается раньше - > читать как "открывается позже"
   MrArtemSolovev
 
15 - 20.04.18 - 08:36
Понял, спасибо
   MrArtemSolovev
 
16 - 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) Тогда
        Операция.СуммаОперации = ОбщаяСумма;
        Операция.Движения.Хозрасчетный.Записывать = Истина;
        Операция.Записать(РежимЗаписиДокумента.Запись);
        Операция.Движения.Хозрасчетный.Записать(Истина);
        Сообщить("Создана " + Операция);
    КонецЕсли;
    //сумма по всем контрагентам

    
    //ОбластьИтог.Параметры.НаращеннаяСумма = НаращеннаяСумма;

    //МойТабличныйДокумент.Вывести(ОбластьПробел);

    //МойТабличныйДокумент.Вывести(ОбластьИтог);

    Возврат МойТабличныйДокумент;
    //ТекстСообщения = НаращеннаяСумма;

    //Сообщить(ТекстСообщения);

    
    КонецФункции
   MrArtemSolovev
 
17 - 20.04.18 - 09:38
В итоге, выводятся февральские операции на 30 апреля, а апрельских вообще нет
   Доминошник
 
18 - 20.04.18 - 10:00
(17) Создаём операции в цикле, а записываем только после цикла?
   MrArtemSolovev
 
19 - 20.04.18 - 10:09
Доминошник, спасибо) выводятся раздельно) но обе идут от 30 апреля, код ниже
   MrArtemSolovev
 
20 - 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) Я бы, скорее всего, добавил бы в запросе итоги по месяцам, и создавал бы операции в обходе месяцев.


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует