ТаблицаДанныхДляРасчетаРассмотрено (БСП)

Автор: 1С
ОбщийМодуль.Взаимодействия
БСП

Таблица данных для расчета рассмотрено. Формирует таблицу данных для расчета состояний папок и предметов взаимодействий.

// Формирует таблицу данных для расчета состояний папок и предметов взаимодействий.
//
// Параметры:
//  ДанныеДляРасчета  - Структура, ВыборкаИзРезультатовЗапроса, Массив - данные, на основании
//                      которых будет формироваться таблица.
//  ИмяРеквизита  - Строка - может принимать значения "Предмет" или "Папка".
//
// Возвращаемое значение:
//   ТаблицаЗначений   - подготовленная для расчета таблица.
//
Функция ТаблицаДанныхДляРасчетаРассмотрено(ДанныеДляРасчета, ИмяРеквизита) Экспорт

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

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

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

Рекомендации

Похожие публикации

РассчитыватьРассмотрено (БСП)

Транслитерация в запросе

Изменение видимости колонок табличной части по параметру свойству таблицы "ПланыВидовРасчета"

ХешированиеДанных (БСП)

Определение плановых остатков товара с учетом предшествующих фактических и будущих плановых продаж

ТаблицаПредопределенныхДанных (БСП)

КлючТаблицыДанных (БСП)

ДополнитьТаблицу (БСП)

TurboConf - расширение Конфигуратора 1С