вторник, 10 февраля 2015 г.

Полезные типовые функции и процедуры УПП

Функции/Процедуры из модуля "ОбщегоНазначения.":

Получить Фамилию и инициалы физлица:
ОбщегоНазначения.ФамилияИнициалыФизЛица(Объект = "", Фамилия = " ", Имя = " ", Отчество = " ", НаДату = Неопределено)

Получает имя значения перечисления как объекта метаданных:
ОбщегоНазначения.ИмяЗначенияПеречисления(Значение)
Возвращаемое значение: Строка - имя значения перечисления как объекта метаданных


Печать табличного документа:
УниверсальныеМеханизмы.НапечататьДокумент(ПечДокумент, КоличествоЭкземпляров = 1, НаПринтер = Ложь, Заголовок = "", Ссылка = Неопределено, ПараметрыПечДокумента = Неопределено);

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

Функция возвращает массив вышестоящих групп указанного элемента (Ограничение - только 5 родителей!)
ОбщегоНазначения.Функция ПолучитьСписокВышеСтоящихГрупп(ЭлементСправочника)

Позволяет определить есть ли среди реквизитов табличной части документа:
ОбщегоНазначения.Функция ЕстьРеквизитТабЧастиДокумента(ИмяРеквизита, МетаданныеДокумента, ИмяТабЧасти)

Функция проверяет наличие в строке только цифр
ОбщегоНазначения.Функция ЕстьНеЦифры(Знач СтрокаПроверки)

Получить организацию по умолчанию:
ОргПоУмолчанию = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(ПараметрыСеанса.ТекущийПользователь, "ОсновнаяОрганизация")

Период строкой:
БухгалтерскиеОтчеты.Функция ПолучитьПериодДатСтрокой(Знач Период, Знач ДатаПериода) Экспорт

    ПериодСтр = Период;
    Если ПериодСтр = "ДЕНЬ" тогда
        ДатаНачала    = НачалоДня(ДатаПериода);
        ДатаОкончания = КонецДня(ДатаПериода);
    ИначеЕсли ПериодСтр = "НЕДЕЛЯ" тогда
        ДатаНачала    = НачалоНедели(ДатаПериода);
        ДатаОкончания = КонецНедели (ДатаПериода);
    ИначеЕсли ПериодСтр = "МЕСЯЦ" тогда
        ДатаНачала    = НачалоМесяца(ДатаПериода);
        ДатаОкончания = КонецМесяца (ДатаПериода);
    ИначеЕсли ПериодСтр = "КВАРТАЛ" тогда
        ДатаНачала    = НачалоКвартала(ДатаПериода);
        ДатаОкончания = КонецКвартала (ДатаПериода);
    ИначеЕсли ПериодСтр = "ГОД" тогда
        ДатаНачала    = НачалоГода(ДатаПериода);
        ДатаОкончания = КонецГода (ДатаПериода);
    КонецЕсли;

    Возврат ПредставлениеПериода(ДатаНачала, ДатаОкончания, "ФП=Истина")

КонецФункции

БухгалтерскиеОтчеты.Функция ПроверитьКорректностьОграниченийПоДатам(Знач ДатаНач, Знач ДатаКон, Знач ВыдаватьПредупреждение = Истина) Экспорт
   
    // Проверка на пустые значения
    Если ДатаНач > ДатаКон И ДатаКон <> '00010101000000' Тогда

        Если ВыдаватьПредупреждение Тогда
            Предупреждение("Дата начала периода не может быть больше даты конца периода");
        КонецЕсли;
   
        Возврат Ложь;

    КонецЕсли;
   
    Возврат Истина;

КонецФункции

Разузловать номенклатуру:

ИсхПараметры = Новый Структура("Номенклатура, Количество, ХарактеристикаНоменклатуры",Выборка.Продукция,Выборка.Количество);
        РезультатРазулования = Новый Структура;
        РезультатРазулования.Вставить("ИсходныеКомплектующие");
        РазузлованиеНоменклатуры.РазузловатьНоменклатуру(ИсхПараметры, РезультатРазулования);
        Если РезультатРазулования <> Неопределено Тогда
            Для каждого СтрокаРазузлования из РезультатРазулования.ИсходныеКомплектующие Цикл
                Если не СтрокаРазузлования.Спецификация.пустая() Тогда Продолжить;КонецЕсли;
                Нов = Тз.Добавить();
                Нов.Материал = СтрокаРазузлования.Номенклатура;
                Нов.МатериалИмя = СтрокаРазузлования.Номенклатура.Наименование;
                Нов.Еи = СтрокаРазузлования.ЕдиницаИзмерения;
                Нов.Количество = СтрокаРазузлования.Количество;
            КонецЦикла;
        КонецЕсли;