Шаблоны 1С
Добавить новый
Назад
Добавил: Dmitry Zhurbenko
//После цикла вывода строк
ТабДок.Область(ТабДок.ВысотаТаблицы, ,ТабДок.ВысотаТаблицы,).ВместеСоСледующим = Истина;
//После цикла вывода строк
ТабДок.Область(ТабДок.ВысотаТаблицы, ,ТабДок.ВысотаТаблицы,).ВместеСоСледующим = Истина;
Комментарии: 1
Отладка внешних печатных форм
1С
печатная форма
отладка
Адрес = "C:\Эля\кИТ_ВнешняяРеализацияТоваровУслуг.epf";
Обр = ВнешниеОбработки.Создать(Адрес, БезопасныйРежим());
Обр.Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода);
Возврат;
Адрес = "C:\Эля\кИТ_ВнешняяРеализацияТоваровУслуг.epf";
Обр = ВнешниеОбработки.Создать(Адрес, БезопасныйРежим());
Обр.Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода);
Возврат;
Добавить комментарий
Функция считывает содержимое страницы файла Exсel в таблицу значений, автоматически именует столбцы таблицы по первой строке файла. Пробелы заменяются на "".
1С
Таблица значений
чтение Excel
Excel
&НаСервере
Функция ПодготовитьТаблицуСДанными(ФайлАдресВХранилище)
ИмяФайлаСервер = ПолучитьИмяВременногоФайла(".xlsx");
ФайлИмпорта = ПолучитьИзВременногоХранилища(ФайлАдресВХранилище);
ФайлИмпорта.Записать(ИмяФайлаСервер);
ТабличныйДокумент = Новый ТабличныйДокумент;
Попытка
ТабличныйДокумент.Прочитать(ИмяФайлаСервер, СпособЧтенияЗначенийТабличногоДокумента.Текст);
Исключение
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = ОписаниеОшибки();
Сообщение.Сообщить();
КонецПопытки;
ПЗ = Новый ПостроительЗапроса;
ПЗ.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТабличныйДокумент.Область());
ПЗ.ДобавлениеПредставлений = ТипДобавленияПредставлений.НеДобавлять;
ПЗ.ЗаполнитьНастройки();
ПЗ.Выполнить();
ТаблицаПромежуточныхДанных = ПЗ.Результат.Выгрузить();
Возврат ТаблицаПромежуточныхДанных;
КонецФункции
&НаСервере
Функция ПодготовитьТаблицуСДанными(ФайлАдресВХранилище)
ИмяФайлаСервер = ПолучитьИмяВременногоФайла(".xlsx");
ФайлИмпорта = ПолучитьИзВременногоХранилища(ФайлАдресВХранилище);
ФайлИмпорта.Записать(ИмяФайлаСервер);
ТабличныйДокумент = Новый ТабличныйДокумент;
Попытка
ТабличныйДокумент.Прочитать(ИмяФайлаСервер, СпособЧтенияЗначенийТабличногоДокумента.Текст);
Исключение
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = ОписаниеОшибки();
Сообщение.Сообщить();
КонецПопытки;
ПЗ = Новый ПостроительЗапроса;
ПЗ.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТабличныйДокумент.Область());
ПЗ.ДобавлениеПредставлений = ТипДобавленияПредставлений.НеДобавлять;
ПЗ.ЗаполнитьНастройки();
ПЗ.Выполнить();
ТаблицаПромежуточныхДанных = ПЗ.Результат.Выгрузить();
Возврат ТаблицаПромежуточныхДанных;
КонецФункции
Комментарии: 1
Отбор строк по таблице значений
1С
отбор
ТаблицаЗначений
ТЗ
таблица значений
СтруктураОтбора = Новый Структура("Номенклатура,ХарактеристикаНоменклатуры", ЗначениеОтбора.Номенклатура, ЗначениеОтбора.ХарактеристикаНоменклатуры);
РезультатОтбора = ТаблицаЗначений.НайтиСтроки(СтруктураОтбора);
//Если РезультатОтбора.Количество() > 0 Тогда
// СтрокаОтбора = РезультатОтбора[0];
//КонецЕсли;
Для каждого СтрокаОтбора Из РезультатОтбора Цикл
КонецЦикла;
СтруктураОтбора = Новый Структура("Номенклатура,ХарактеристикаНоменклатуры", ЗначениеОтбора.Номенклатура, ЗначениеОтбора.ХарактеристикаНоменклатуры);
РезультатОтбора = ТаблицаЗначений.НайтиСтроки(СтруктураОтбора);
//Если РезультатОтбора.Количество() > 0 Тогда
// СтрокаОтбора = РезультатОтбора[0];
//КонецЕсли;
Для каждого СтрокаОтбора Из РезультатОтбора Цикл
КонецЦикла;
Добавить комментарий
Прибавить, добавить, дата, день
Добавил: Александр Near IT
&НаСервереБезКонтекста
Функция ПрибавитьКДатеДень(Дата, КоличествоДней = 1)
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Дата", Дата);
Запрос.УстановитьПараметр("КоличествоДней", КоличествоДней);
Запрос.Текст =
"ВЫБРАТЬ
| ДОБАВИТЬКДАТЕ(&Дата, ДЕНЬ, &КоличествоДней) КАК Дата";
Результат = Запрос.Выполнить().Выбрать();
Результат.Следующий();
Возврат Результат.Дата;
КонецФункции
&НаСервереБезКонтекста
Функция ПрибавитьКДатеДень(Дата, КоличествоДней = 1)
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Дата", Дата);
Запрос.УстановитьПараметр("КоличествоДней", КоличествоДней);
Запрос.Текст =
"ВЫБРАТЬ
| ДОБАВИТЬКДАТЕ(&Дата, ДЕНЬ, &КоличествоДней) КАК Дата";
Результат = Запрос.Выполнить().Выбрать();
Результат.Следующий();
Возврат Результат.Дата;
КонецФункции
Комментарии: 1
Чтение XML файла по объектно. (экономим память, не обрабатываем каждый узел вручную)
ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.ОткрытьФайл(ИмяФайлаНаСервере);
Пока ЧтениеXML.Прочитать() Цикл
Если ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
Если ЧтениеXML.Имя = "Товар" Тогда // Считываем номенклатуру в XDTO
ДанныеТовараXML = ФабрикаXDTO.ПрочитатьXML(ЧтениеXML);
НоменклатураОбъект = Справочники.Номенклатура.СоздатьОбъект();
// Заполняем реквизиты номенклатруы данными объекта XDTO
НоменклатураОбъект.Записать();
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Создана:" + НоменклатураОбъект.Наименование;
Сообщение.Сообщить();
КонецЕсли;
КонецЕсли;
КонецЦикла;
ЧтениеXML.Закрыть();
ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.ОткрытьФайл(ИмяФайлаНаСервере);
Пока ЧтениеXML.Прочитать() Цикл
Если ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
Если ЧтениеXML.Имя = "Товар" Тогда // Считываем номенклатуру в XDTO
ДанныеТовараXML = ФабрикаXDTO.ПрочитатьXML(ЧтениеXML);
НоменклатураОбъект = Справочники.Номенклатура.СоздатьОбъект();
// Заполняем реквизиты номенклатруы данными объекта XDTO
НоменклатураОбъект.Записать();
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Создана:" + НоменклатураОбъект.Наименование;
Сообщение.Сообщить();
КонецЕсли;
КонецЕсли;
КонецЦикла;
ЧтениеXML.Закрыть();
Добавить комментарий
Получить данные динамического списка с учетом отборов
1С
СКД
динамический список
Схема = Элементы.Список.ПолучитьИсполняемуюСхемуКомпоновкиДанных();
Настройки = Элементы.Список.ПолучитьИсполняемыеНастройкиКомпоновкиДанных();
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(Схема,Настройки,,,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
Результат = ПроцессорВывода.Вывести(ПроцессорКомпоновки);
Схема = Элементы.Список.ПолучитьИсполняемуюСхемуКомпоновкиДанных();
Настройки = Элементы.Список.ПолучитьИсполняемыеНастройкиКомпоновкиДанных();
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(Схема,Настройки,,,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
Результат = ПроцессорВывода.Вывести(ПроцессорКомпоновки);
Добавить комментарий
обход таблицы и работа с ней по условию
//Создаем таблицу значений
ТабЗнч = Новый ТаблицаЗначений;
ТабЗнч.Колонки.Добавить("Наименование");
ТабЗнч.Колонки.Добавить("Значение");
//Заполняем ТЗ
Для н=1 По 100 Цикл
СтрокаТЗ = ТабЗнч.Добавить();
СтрокаТЗ.Наименование = "Н"+н;
СтрокаТЗ.Значение = "К"+н;
//Здесь каждый 10-й элемент делаем дубляжом
Если (н%10)=0 Тогда
СтрокаТЗ2 = ТабЗнч.Добавить();
СтрокаТЗ2.Наименование = "Н"+н;
СтрокаТЗ2.Значение = "К"+н;
КонецЕсли;
КонецЦикла;
//Перебираем заполненное ТЗ
Для й=0 По ТабЗнч.Количество()-1 Цикл
//Не даем провалиться индексу за грани
Если й>ТабЗнч.Количество()-1 Тогда
Прервать;
КонецЕсли;
//Пропускаем первый элемент
Если й=0 Тогда
Продолжить;
КонецЕсли;
//Ну и собственно сравниваем значения текущего с предыдущем
Если ТабЗнч[й].Наименование = ТабЗнч[й-1].Наименование Тогда
ТабЗнч[й-1].Значение = ТабЗнч[й-1].Значение + ", " + ТабЗнч[й].Значение;
ТабЗнч.Удалить(й);
КонецЕсли;
КонецЦикла;
//Создаем таблицу значений
ТабЗнч = Новый ТаблицаЗначений;
ТабЗнч.Колонки.Добавить("Наименование");
ТабЗнч.Колонки.Добавить("Значение");
//Заполняем ТЗ
Для н=1 По 100 Цикл
СтрокаТЗ = ТабЗнч.Добавить();
СтрокаТЗ.Наименование = "Н"+н;
СтрокаТЗ.Значение = "К"+н;
//Здесь каждый 10-й элемент делаем дубляжом
Если (н%10)=0 Тогда
СтрокаТЗ2 = ТабЗнч.Добавить();
СтрокаТЗ2.Наименование = "Н"+н;
СтрокаТЗ2.Значение = "К"+н;
КонецЕсли;
КонецЦикла;
//Перебираем заполненное ТЗ
Для й=0 По ТабЗнч.Количество()-1 Цикл
//Не даем провалиться индексу за грани
Если й>ТабЗнч.Количество()-1 Тогда
Прервать;
КонецЕсли;
//Пропускаем первый элемент
Если й=0 Тогда
Продолжить;
КонецЕсли;
//Ну и собственно сравниваем значения текущего с предыдущем
Если ТабЗнч[й].Наименование = ТабЗнч[й-1].Наименование Тогда
ТабЗнч[й-1].Значение = ТабЗнч[й-1].Значение + ", " + ТабЗнч[й].Значение;
ТабЗнч.Удалить(й);
КонецЕсли;
КонецЦикла;
Добавить комментарий
Возвращает значение или структуру с именами и значениями реквизитов произвольного объекта ссылочного типа прочитанные из информационной базы
1С
Получить
Реквизит
Объект
Структура
Добавил: Александр Near IT
// Возвращает значение или структуру с именами и значениями реквизитов произвольного объекта ссылочного типа
// прочитанные из информационной базы
//
// Параметры:
// Ссылка - произвольный объект ссылочного типа (справочник, документ, план обмена, ПВХ, задача)
// СтруктураРеквизитов - Необязательно. Может содержать значения:
// строка - имя реквизита объекта.
// строка - имена реквизитов, перечисленные через запятую, в формате требований к свойствам структуры.
// структура - структура с именами реквизитов.
//
//
// Возвращаемое значение:
// Структура - если СтруктураРеквизитов имеет тип Структура и заполнен - структура с именами и значениями указанных реквизитов
// Структура - если СтруктураРеквизитов не указан или не заполнен - структура с именами и значениями всех реквизитов объекта
// Произвольный - если СтруктураРеквизитов строкового типа - значение данного реквизита
//
Функция ПолучитьРеквизитыОбъекта(Знач Ссылка, Знач СтруктураРеквизитов = Неопределено) Экспорт
МетаданныеОбъекта = Ссылка.Метаданные();
ИмяТаблицы = МетаданныеОбъекта.ПолноеИмя();
ЭтоСправочник = Справочники.ТипВсеСсылки().СодержитТип(ТипЗнч(Ссылка));
ЭтоПланОбмена = ПланыОбмена.ТипВсеСсылки().СодержитТип(ТипЗнч(Ссылка));
ЭтоПВХ = ПланыВидовХарактеристик.ТипВсеСсылки().СодержитТип(ТипЗнч(Ссылка));
ЭтоПланВидовРасчета = ПланыВидовРасчета.ТипВсеСсылки().СодержитТип(ТипЗнч(Ссылка));
ЭтоДокумент = (Документы.ТипВсеСсылки().СодержитТип(ТипЗнч(Ссылка)) ИЛИ БизнесПроцессы.ТипВсеСсылки().СодержитТип(ТипЗнч(Ссылка)));
ЭтоЗадача = Задачи.ТипВсеСсылки().СодержитТип(ТипЗнч(Ссылка));
ТекстЗапроса = "ВЫБРАТЬ ";
//Формируем список реквизитов объекта для запроса
Если ТипЗнч(СтруктураРеквизитов) = Тип("Строка") И ЗначениеЗаполнено(СтруктураРеквизитов) Тогда
ТекстЗапроса = ТекстЗапроса + СокрЛП(СтруктураРеквизитов);
//Если передали список реквизитов, инициализируем структуру
Если Найти(СтруктураРеквизитов, ",") <> 0 Тогда
СтруктураРеквизитов = Новый Структура(СтруктураРеквизитов);
КонецЕсли;
ИначеЕсли ТипЗнч(СтруктураРеквизитов) = Тип("Структура") И СтруктураРеквизитов.Количество() > 0 Тогда
Для каждого Реквизит Из СтруктураРеквизитов Цикл ТекстЗапроса = ТекстЗапроса + Реквизит.Ключ + ","; КонецЦикла;
//Отрезаем последнюю запятую
ТекстЗапроса = Лев(ТекстЗапроса, СтрДлина(ТекстЗапроса) - 1);
Иначе
//Определяем список реквизитов объектов для подстановки в текст запроса
СписокРеквизитов = "";
Если ЭтоСправочник ИЛИ ЭтоПланОбмена ИЛИ ЭтоПВХ ИЛИ ЭтоПланВидовРасчета Тогда
Если МетаданныеОбъекта.ДлинаКода > 0 Тогда
СписокРеквизитов = "Код,";
КонецЕсли;
Если МетаданныеОбъекта.ДлинаНаименования > 0 Тогда
СписокРеквизитов = СписокРеквизитов + "Наименование,";
КонецЕсли;
Если ЭтоСправочник ИЛИ ЭтоПВХ Тогда
Если МетаданныеОбъекта.Иерархический Тогда
СписокРеквизитов = СписокРеквизитов + "Родитель,";
КонецЕсли;
Если ЭтоСправочник И (МетаданныеОбъекта.Владельцы.Количество() <> 0) Тогда
СписокРеквизитов = СписокРеквизитов + "Владелец,";
КонецЕсли;
КонецЕсли;
ИначеЕсли ЭтоДокумент Тогда
Если МетаданныеОбъекта.ДлинаНомера > 0 Тогда
СписокРеквизитов = "Номер,";
КонецЕсли;
СписокРеквизитов = СписокРеквизитов + "Дата,";
ИначеЕсли ЭтоЗадача Тогда
Если МетаданныеОбъекта.ДлинаНомера > 0 Тогда
СписокРеквизитов = "Номер,";
КонецЕсли;
СписокРеквизитов = СписокРеквизитов + "Дата,";
Если МетаданныеОбъекта.ДлинаНаименования > 0 Тогда
СписокРеквизитов = СписокРеквизитов + "Наименование,";
КонецЕсли;
КонецЕсли;
СписокРеквизитов = СписокРеквизитов + "ПометкаУдаления,";
Для каждого Реквизит Из МетаданныеОбъекта.Реквизиты Цикл СписокРеквизитов = СписокРеквизитов + Реквизит.Имя + ","; КонецЦикла;
//Отрезаем последнюю запятую
СписокРеквизитов = Лев(СписокРеквизитов, СтрДлина(СписокРеквизитов) - 1);
СтруктураРеквизитов = Новый Структура(СписокРеквизитов);
ТекстЗапроса = ТекстЗапроса + СписокРеквизитов;
КонецЕсли;
ТекстЗапроса = ТекстЗапроса + "
|ИЗ " + ИмяТаблицы + "
|ГДЕ Ссылка = &Ссылка";
Запрос = Новый Запрос;
Запрос.Текст = ТекстЗапроса;
Запрос.УстановитьПараметр("Ссылка", Ссылка);
РезультатЗапроса = Запрос.Выполнить();
Если НЕ РезультатЗапроса.Пустой() Тогда
Выборка = РезультатЗапроса.Выбрать();
Если Выборка.Следующий() Тогда
Если ТипЗнч(СтруктураРеквизитов) = Тип("Строка") И ЗначениеЗаполнено(СтруктураРеквизитов) Тогда
Возврат Выборка[СтруктураРеквизитов];
Иначе
ЗаполнитьЗначенияСвойств(СтруктураРеквизитов, Выборка);
СтруктураРеквизитов.Вставить("Ссылка", Ссылка);//++
Возврат СтруктураРеквизитов;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Возврат Неопределено;
КонецФункции //ПолучитьРеквизитыОбъекта()
// Возвращает значение или структуру с именами и значениями реквизитов произвольного объекта ссылочного типа
// прочитанные из информационной базы
//
// Параметры:
// Ссылка - произвольный объект ссылочного типа (справочник, документ, план обмена, ПВХ, задача)
// СтруктураРеквизитов - Необязательно. Может содержать значения:
// строка - имя реквизита объекта.
// строка - имена реквизитов, перечисленные через запятую, в формате требований к свойствам структуры.
// структура - структура с именами реквизитов.
//
//
// Возвращаемое значение:
// Структура - если СтруктураРеквизитов имеет тип Структура и заполнен - структура с именами и значениями указанных реквизитов
// Структура - если СтруктураРеквизитов не указан или не заполнен - структура с именами и значениями всех реквизитов объекта
// Произвольный - если СтруктураРеквизитов строкового типа - значение данного реквизита
//
Функция ПолучитьРеквизитыОбъекта(Знач Ссылка, Знач СтруктураРеквизитов = Неопределено) Экспорт
МетаданныеОбъекта = Ссылка.Метаданные();
ИмяТаблицы = МетаданныеОбъекта.ПолноеИмя();
ЭтоСправочник = Справочники.ТипВсеСсылки().СодержитТип(ТипЗнч(Ссылка));
ЭтоПланОбмена = ПланыОбмена.ТипВсеСсылки().СодержитТип(ТипЗнч(Ссылка));
ЭтоПВХ = ПланыВидовХарактеристик.ТипВсеСсылки().СодержитТип(ТипЗнч(Ссылка));
ЭтоПланВидовРасчета = ПланыВидовРасчета.ТипВсеСсылки().СодержитТип(ТипЗнч(Ссылка));
ЭтоДокумент = (Документы.ТипВсеСсылки().СодержитТип(ТипЗнч(Ссылка)) ИЛИ БизнесПроцессы.ТипВсеСсылки().СодержитТип(ТипЗнч(Ссылка)));
ЭтоЗадача = Задачи.ТипВсеСсылки().СодержитТип(ТипЗнч(Ссылка));
ТекстЗапроса = "ВЫБРАТЬ ";
//Формируем список реквизитов объекта для запроса
Если ТипЗнч(СтруктураРеквизитов) = Тип("Строка") И ЗначениеЗаполнено(СтруктураРеквизитов) Тогда
ТекстЗапроса = ТекстЗапроса + СокрЛП(СтруктураРеквизитов);
//Если передали список реквизитов, инициализируем структуру
Если Найти(СтруктураРеквизитов, ",") <> 0 Тогда
СтруктураРеквизитов = Новый Структура(СтруктураРеквизитов);
КонецЕсли;
ИначеЕсли ТипЗнч(СтруктураРеквизитов) = Тип("Структура") И СтруктураРеквизитов.Количество() > 0 Тогда
Для каждого Реквизит Из СтруктураРеквизитов Цикл ТекстЗапроса = ТекстЗапроса + Реквизит.Ключ + ","; КонецЦикла;
//Отрезаем последнюю запятую
ТекстЗапроса = Лев(ТекстЗапроса, СтрДлина(ТекстЗапроса) - 1);
Иначе
//Определяем список реквизитов объектов для подстановки в текст запроса
СписокРеквизитов = "";
Если ЭтоСправочник ИЛИ ЭтоПланОбмена ИЛИ ЭтоПВХ ИЛИ ЭтоПланВидовРасчета Тогда
Если МетаданныеОбъекта.ДлинаКода > 0 Тогда
СписокРеквизитов = "Код,";
КонецЕсли;
Если МетаданныеОбъекта.ДлинаНаименования > 0 Тогда
СписокРеквизитов = СписокРеквизитов + "Наименование,";
КонецЕсли;
Если ЭтоСправочник ИЛИ ЭтоПВХ Тогда
Если МетаданныеОбъекта.Иерархический Тогда
СписокРеквизитов = СписокРеквизитов + "Родитель,";
КонецЕсли;
Если ЭтоСправочник И (МетаданныеОбъекта.Владельцы.Количество() <> 0) Тогда
СписокРеквизитов = СписокРеквизитов + "Владелец,";
КонецЕсли;
КонецЕсли;
ИначеЕсли ЭтоДокумент Тогда
Если МетаданныеОбъекта.ДлинаНомера > 0 Тогда
СписокРеквизитов = "Номер,";
КонецЕсли;
СписокРеквизитов = СписокРеквизитов + "Дата,";
ИначеЕсли ЭтоЗадача Тогда
Если МетаданныеОбъекта.ДлинаНомера > 0 Тогда
СписокРеквизитов = "Номер,";
КонецЕсли;
СписокРеквизитов = СписокРеквизитов + "Дата,";
Если МетаданныеОбъекта.ДлинаНаименования > 0 Тогда
СписокРеквизитов = СписокРеквизитов + "Наименование,";
КонецЕсли;
КонецЕсли;
СписокРеквизитов = СписокРеквизитов + "ПометкаУдаления,";
Для каждого Реквизит Из МетаданныеОбъекта.Реквизиты Цикл СписокРеквизитов = СписокРеквизитов + Реквизит.Имя + ","; КонецЦикла;
//Отрезаем последнюю запятую
СписокРеквизитов = Лев(СписокРеквизитов, СтрДлина(СписокРеквизитов) - 1);
СтруктураРеквизитов = Новый Структура(СписокРеквизитов);
ТекстЗапроса = ТекстЗапроса + СписокРеквизитов;
КонецЕсли;
ТекстЗапроса = ТекстЗапроса + "
|ИЗ " + ИмяТаблицы + "
|ГДЕ Ссылка = &Ссылка";
Запрос = Новый Запрос;
Запрос.Текст = ТекстЗапроса;
Запрос.УстановитьПараметр("Ссылка", Ссылка);
РезультатЗапроса = Запрос.Выполнить();
Если НЕ РезультатЗапроса.Пустой() Тогда
Выборка = РезультатЗапроса.Выбрать();
Если Выборка.Следующий() Тогда
Если ТипЗнч(СтруктураРеквизитов) = Тип("Строка") И ЗначениеЗаполнено(СтруктураРеквизитов) Тогда
Возврат Выборка[СтруктураРеквизитов];
Иначе
ЗаполнитьЗначенияСвойств(СтруктураРеквизитов, Выборка);
СтруктураРеквизитов.Вставить("Ссылка", Ссылка);//++
Возврат СтруктураРеквизитов;
КонецЕсли;
КонецЕсли;
КонецЕсли;
Возврат Неопределено;
КонецФункции //ПолучитьРеквизитыОбъекта()
Добавить комментарий
проверяю результат запроса на пустату, если есть данные то выполняю. Экономит время сервера.
1С
РезультатЗапроса
Пустой
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЕдиницыИзмерения.Коэффициент
|ИЗ
| Справочник.ЕдиницыИзмерения КАК ЕдиницыИзмерения
|ГДЕ
| ЕдиницыИзмерения.Ссылка = &Ссылка";
Запрос.УстановитьПараметр("Ссылка", ЕдИзм);
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
Возврат 0;
КонецЕсли;
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); ВыборкаДетальныеЗаписи.Следующий();
Возврат ВыборкаДетальныеЗаписи.Коэффициент;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЕдиницыИзмерения.Коэффициент
|ИЗ
| Справочник.ЕдиницыИзмерения КАК ЕдиницыИзмерения
|ГДЕ
| ЕдиницыИзмерения.Ссылка = &Ссылка";
Запрос.УстановитьПараметр("Ссылка", ЕдИзм);
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
Возврат 0;
КонецЕсли;
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); ВыборкаДетальныеЗаписи.Следующий();
Возврат ВыборкаДетальныеЗаписи.Коэффициент;
Комментарии: 2
TurboConf
Удобный поиск шаблонов кода
прямо в Конфигураторе