// Функция считает дату, отстоящую через заданное количество месяцев
Функция РасчетДатыЧерезКоличествоМесяцев(НачальнаяДата, КоличествоМесяцев)
ДеньМесяца = День(НачальнаяДата); // Количество дней с начала месяца до начальной даты
НачальныйМесяц = Месяц(НачальнаяДата);
НачальныйГод = Год(НачальнаяДата);
ОбщееКоличествоМесяцев = НачальныйМесяц + КоличествоМесяцев;
Если ОбщееКоличествоМесяцев >= 12 Тогда // переходит на следующий год
КонечныйМесяц = ?(ОбщееКоличествоМесяцев%12 = 0, ОбщееКоличествоМесяцев, ОбщееКоличествоМесяцев%12);
КонечныйГод = НачальныйГод +(ОбщееКоличествоМесяцев-КонечныйМесяц)/12;
КонечнаяДата = Дата(КонечныйГод, КонечныйМесяц, 1, 0, 0, 0) + ДеньМесяца * 86400 - 86400; // Первый день тоже учитываем, поэтому отнимем один день
Иначе // В пределах одного года
КонечныйМесяц = НачальныйМесяц + КоличествоМесяцев;
КонечныйГод = НачальныйГод;
КонечнаяДата = Дата(КонечныйГод, ОбщееКоличествоМесяцев, 1 ,0 ,0 ,0) + ДеньМесяца * 86400 - 86400; // Первый день тоже учитываем, поэтому отнимем один день
КонецЕсли;
Возврат КонечнаяДата;
КонецФункции
// Узнать программно имя базы 1С
ИмяБазы = Макс(НСтр(СтрокаСоединенияИнформационнойБазы(),"Ref"),НСтр(СтрокаСоединенияИнформационнойБазы(),"File"))
// Получение сотрудника пользователя в УНФ
&НаСервере
функция СотрудникПользователя(Пользователь) Экспорт
Запрос = Новый Запрос;
//Установка значений параметров
Запрос.УстановитьПараметр("Пользователь", Пользователь);
Запрос.Текст = "ВЫБРАТЬ
| СотрудникиПользователя.Сотрудник КАК Сотрудник,
| СотрудникиПользователя.Пользователь КАК Пользователь
|ИЗ
| РегистрСведений.СотрудникиПользователя КАК СотрудникиПользователя
|ГДЕ
| СотрудникиПользователя.Пользователь = &Пользователь
| И СотрудникиПользователя.Пользователь.Недействителен = ЛОЖЬ";
Результат = Запрос.Выполнить();
Если Результат.Пустой() Тогда
Возврат Справочники.Номенклатура.ПустаяСсылка()
Иначе
Выборка = Результат.Выбрать();
Выборка.Следующий();
Возврат Выборка.Сотрудник;
КонецЕсли;
КонецФункции
// Получение подразделения пользователя из поля "Основное подразделение" в личных настройках пользователя (как один из вариантов настроек подразделений)
&НаСервере
Функция ПодразделениеПользователя(Пользователь) Экспорт // формирование подразделения из настроек пользователя
//Текст сформирован автоматически из Управляемая консоль отчетов 3.8.9
Запрос = Новый Запрос;
//Установка значений параметров
Запрос.УстановитьПараметр("Пользователь", Пользователь);
Запрос.УстановитьПараметр("Настройка", ПланыВидовХарактеристик.НастройкиПользователей.ОсновноеПодразделение); // Настройка
Запрос.Текст = "ВЫБРАТЬ
| НастройкиПользователей.Пользователь КАК Пользователь,
| НастройкиПользователей.Настройка КАК Настройка,
| НастройкиПользователей.Организация КАК Организация,
| НастройкиПользователей.Значение КАК Значение
|ИЗ
| РегистрСведений.НастройкиПользователей КАК НастройкиПользователей
|ГДЕ
| НастройкиПользователей.Настройка = &Настройка
| И НастройкиПользователей.Пользователь = &Пользователь";
Результат = Запрос.Выполнить();
Если Результат.Пустой() Тогда
Возврат Справочники.СтруктурныеЕдиницы.ПустаяСсылка()
Иначе
Выборка = Результат.Выбрать();
Выборка.Следующий();
Возврат Выборка.Значение;
КонецЕсли;
КонецФункции