Проект

Общее

Профиль

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

Версия 12 (Всеволод Дорофеев, 19.02.2017 03:14) → Версия 13/38 (Всеволод Дорофеев, 21.02.2017 15:39)

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

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

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

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

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

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

КонецФункции
</pre>

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

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

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

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

Недоступен на сервере 1С:Предприятие. Не используется в модуле внешнего соединения.
Пример:
<pre>
ОчиститьСообщения();
</pre>

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

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

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

КонецФункции
</pre>

h3. Запись справочника

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

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

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

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

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

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

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

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

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

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

Попытка

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

КонецЕсли;

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

Попытка

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

КонецЕсли;

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

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

КонецЕсли;

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

</pre>

h3. Проверка на пустую дату

Пустая дата
<pre>
Дата("00010101");
Дата(1, 1, 1);
Дата("00010101000000");
Дата("0001-01-01");
</pre>

h3. Создание структуру со свойствами, как колонки таблицы, переданной строки

<pre>
// Функция СтрокаТаблицыЗначенийВСтруктуру создает
// структуру со свойствами, как колонки таблицы
// значений передаваемой строки
// и устанавливает этим свойствам значения
// из строки таблицы значений.
//
// Параметры:
// СтрокаТаблицыЗначений - СтрокаТаблицыЗначений.
//
// ВозвращаемоеЗначение:
// Структура
//
Функция СтрокаТаблицыЗначенийВСтруктуру(СтрокаТаблицыЗначений) Экспорт

Структура = Новый Структура;
Для каждого Колонка Из СтрокаТаблицыЗначений.Владелец().Колонки Цикл
Структура.Вставить(Колонка.Имя, СтрокаТаблицыЗначений[Колонка.Имя]);
КонецЦикла;

Возврат Структура;

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

</pre>