Проект

Общее

Профиль

Универсальные процедуры и функции » История » Версия 9

« Предыдущее - Версия 9/38 (Разница(diff)) - Следующее » - Текущая версия
Всеволод Дорофеев, 17.02.2017 12:10


Универсальные процедуры и функции

Проверка битых ссылок

ЭтоБитаяСсылка = не ЗначениеЗаполнено(Ссылка.ВерсияДанных);

Возвращает полное имя объекта метаданных по переданному значению ссылки

// Возвращает полное имя объекта метаданных по переданному значению ссылки
// Например,
//  "Справочник.Номенклатура";
//  "Документ.ПриходнаяНакладная" 
//
// Параметры:
//  Ссылка - ЛюбаяСсылка - значение ссылки, для которого необходимо получить имя таблицы ИБ
// 
// Возвращаемое значение:
//  Строка - полное имя объекта метаданных для указанного значения ссылки
//
Функция ИмяТаблицыПоСсылке(Ссылка) Экспорт

    Возврат Метаданные.НайтиПоТипу(ТипЗнч(Ссылка)).ПолноеИмя();

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

МенеджерИсторииРаботыПользователя

// Добавить событие в историю работы пользователя
ИсторияРаботыПользователя.Добавить(ПолучитьНавигационнуюСсылку(Объект.Ссылка));

ОтображениеСостояния

Очистка окна сообщений

Недоступен на сервере 1С:Предприятие. Не используется в модуле внешнего соединения.
Пример:

ОчиститьСообщения();

Отбор в таблице значений (табличной части) с помощью построителя запроса

&НаСервере
Функция ПолучитьКоличествоПодобраноПоСтрокеНаСервере(ИсходнаяНоменклатура)

   ПостроительЗапр = Новый ПостроительЗапроса;
   ПостроительЗапр.ИсточникДанных = Новый ОписаниеИсточникаДанных(Объект.НоваяНоменклатура.Выгрузить());
   Отбор = ПостроительЗапр.Отбор.Добавить("ИсходнаяНоменклатура");
   Отбор.ВидСравнения = ВидСравнения.Равно;
   Отбор.Значение = ИсходнаяНоменклатура;
   Отбор.Использование = Истина;
   ПостроительЗапр.Выполнить();
   ПостроительЗапр.Результат.Выгрузить().Итог("Количество");

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

Запись спраочника

Функция ЗаписатьСправочник(ТекущийОбъект,Заголовок="",РежимСообщений="Все",РежимЗагрузки=Ложь) Экспорт

    ДействиеВыполнено  = Ложь;

    ВыводитьОшибки     = ?(РежимСообщений="Все" ИЛИ РежимСообщений="Ошибки",Истина,Ложь);
    ВыводитьИнформацию = ?(РежимСообщений="Все",Истина,Ложь);

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

    Возврат ДействиеВыполнено;
КонецФункции //ЗаписатьПровестиДокумент()

Запись и проведение документа

// Процедура выполняет запись/проведение/отмену проведения документа.
//
// Параметры:
//  ТекущийОбъект  – ДокументОбъект,СправочникОбъект.
//  РежимЗаписи    - РежимЗаписиДокумента.
//  Заголовок      - Строка.
//  РежимСообщений - Строка: "Нет","Все","Ошибки".
//
// Возвращаемое значение:
//   ДействиеВыполнено   – Булево.
//
Функция ЗаписатьПровестиДокумент(ТекущийОбъект,РежимЗаписи,Заголовок="",РежимСообщений="Все") Экспорт

    ДействиеВыполнено  = Ложь;

    ВыводитьОшибки     = ?(РежимСообщений="Все" ИЛИ РежимСообщений="Ошибки",Истина,Ложь);
    ВыводитьИнформацию = ?(РежимСообщений="Все",Истина,Ложь);

    Если РежимЗаписи = РежимЗаписиДокумента.Запись ИЛИ РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда

        Попытка

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

    КонецЕсли; 

    Если РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда

        Попытка

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

    КонецЕсли; 

    Если РежимЗаписи = РежимЗаписиДокумента.ОтменаПроведения Тогда

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

    КонецЕсли; 

    Возврат ДействиеВыполнено;
КонецФункции // ЗаписатьПровестиДокумент()