Как получить значение перечисления в запросе 1С

Для того, чтобы получить значение перечисления в запросе (например, сделать отбор на равенство значения измерения регистра и значения перечисления), используется следующий код:

1
Регистр.НужныйРегистр.Измерение = ЗНАЧЕНИЕ(Перечисление.ИскомоеПеречисление.ЗначениеПеречисления)

Обращение к полю составного типа данных в запросе

Зачастую, приходится при составлении запросов в 1С обращаться к полям составного типа данных. Например, если использовать такой код:

1
ПоступлениеТоваровУслуг.Сделка.Дата

и учитывать, что «Сделка» — поле составного типа (15 документов), то у в запросе будет построено 15 левых соединений.

А нужно сравнивать только с одним типом документов. Для оптимизации запроса следует использовать следующую конструкцию:

1
ВЫРАЗИТЬ(ПоступлениеТоваровУслуг.Сделка КАК Документ.СписаниеТоваров).Дата

 

Удаление строк из таблицы значений (обход сверху)

Для того, чтобы удалить строки из таблицы значений 1С по определённому условию, можно использовать цикл «Для Каждого Из« и обойти таблицу, начиная с первой строки.

Предположим, что таблица имеет две колонки — «Договор» и «Валюта», где «Валюта» — валюта договора. Необходимо из таблицы удалить все строки с теми договорам, валюта которых находится в определённом списке:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// МассивВалют - массив, в котором хранится список валют.
//
// Построчно обходим таблицу значений
Для Каждого Стр ИЗ ОсновнаяТаблицаДанных Цикл
	// Вводим счетчик
	Сч = 0;
	Пока Сч < ОсновнаяТаблицаДанных.Количество() Цикл
		// Получаем строку таблицы значений по индексу
		СтрокаТаблицы = ОсновнаяТаблицаДанных.Получить(Сч);
		// Если значение валюты в текущей строке таблицы значений входит
		// в массив валют - удаляем строку. Счётчик при этом не меняет своего
		// значения. Этим обеспечивается построчная проверка таблицы
		// начиная сверху.
		Если МассивВалют.Найти(СтрокаТаблицы.Валюта) <> Неопределено Тогда
			ОсновнаяТаблицаДанных.Удалить(СтрокаТаблицы);
		Иначе
			Сч = Сч + 1;
		КонецЕсли;
	КонецЦикла;
КонецЦикла;

Использование функций общих модулей в СКД (инициализация процессора компоновки данных)

Для того, чтобы воспользоваться возможностью обращения к процедурам и функциям глобальных общих модулей из СКД, при инициализации процессора компоновки данных необходимо метод правильно параметризовать:

1
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, , , Истина);

Инициализировать(<Макет>, <ВнешниеНаборыДанных>, <ДанныеРасшифровки>, <ВозможностьИспользованияВнешнихФункций>).