// Функция считает дату, отстоящую через заданное количество месяцев
Функция РасчетДатыЧерезКоличествоМесяцев(НачальнаяДата, КоличествоМесяцев)
ДеньМесяца = День(НачальнаяДата); // Количество дней с начала месяца до начальной даты
НачальныйМесяц = Месяц(НачальнаяДата);
НачальныйГод = Год(НачальнаяДата);
ОбщееКоличествоМесяцев = НачальныйМесяц + КоличествоМесяцев;
Если ОбщееКоличествоМесяцев >= 12 Тогда // переходит на следующий год
КонечныйМесяц = ?(ОбщееКоличествоМесяцев%12 = 0, ОбщееКоличествоМесяцев, ОбщееКоличествоМесяцев%12);
КонечныйГод = НачальныйГод +(ОбщееКоличествоМесяцев-КонечныйМесяц)/12;
КонечнаяДата = Дата(КонечныйГод, КонечныйМесяц, 1, 0, 0, 0) + ДеньМесяца * 86400 - 86400; // Первый день тоже учитываем, поэтому отнимем один день
Иначе // В пределах одного года
КонечныйМесяц = НачальныйМесяц + КоличествоМесяцев;
КонечныйГод = НачальныйГод;
КонечнаяДата = Дата(КонечныйГод, ОбщееКоличествоМесяцев, 1 ,0 ,0 ,0) + ДеньМесяца * 86400 - 86400; // Первый день тоже учитываем, поэтому отнимем один день
КонецЕсли;
Возврат КонечнаяДата;
КонецФункции