КоличествоКоллизийИлиНепринятых (БСП)

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

Количество коллизий или непринятых. Возвращает количество коллизий или непринятых объектов.

// Возвращает количество коллизий или непринятых объектов.
//
// Параметры:
//	УзлыОбмена - ПланОбменаСсылка, Массив, СписокЗначений, Неопределено - отбор для получения количества коллизий.
//	ЭтоКоличествоКоллизий - Булево - Если Истина, то возвращает количество коллизий, иначе количество непринятых.
//	ПоказыватьПроигнорированные - Булево - Признак необходимости учета проигнорированных.
//	УзелИнформационнойБазы - ПланОбменаСсылка - Количество по конкретному узлу.
//	Период - Стандартный период - Количество за дату.
//	СтрокаПоиска - Строка - Количество объектов, содержащих в комментарии СтрокаПоиска.
//
Функция КоличествоКоллизийИлиНепринятых(УзлыОбмена, ЭтоКоличествоКоллизий,
	ПоказыватьПроигнорированные, Период, СтрокаПоиска) Экспорт
	
	Количество = 0;
	
	Если Не ЕстьПравоЧтенияИнформацииОВерсияхОбъектов() Тогда
		Возврат Количество;
	КонецЕсли;
	
	ТекстЗапроса = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
	|	КОЛИЧЕСТВО(ВерсииОбъектов.Объект) КАК Количество
	|ИЗ
	|	РегистрСведений.ВерсииОбъектов КАК ВерсииОбъектов
	|ГДЕ
	|	ВерсииОбъектов.ВерсияПроигнорирована <> &ОтборПоПропущенным
	|	И (ВерсииОбъектов.ТипВерсииОбъекта В (&ТипыВерсий))
	|	[ОтборПоУзлу]
	|	[ОтборПоПериоду]
	|	[ОтборПоПричине]";
	
	Запрос = Новый Запрос;
	
	ОтборПоПропущенным = ?(ПоказыватьПроигнорированные, Неопределено, Истина);
	Запрос.УстановитьПараметр("ОтборПоПропущенным", ОтборПоПропущенным);
	
	Если УзлыОбмена = Неопределено Тогда
		СтрокаОтбора = "";
	ИначеЕсли ПланыОбмена.ТипВсеСсылки().СодержитТип(ТипЗнч(УзлыОбмена)) Тогда
		СтрокаОтбора = "И ВерсииОбъектов.АвторВерсии = &УзлыОбмена";
		Запрос.УстановитьПараметр("УзлыОбмена", УзлыОбмена);
	Иначе
		СтрокаОтбора = "И ВерсииОбъектов.АвторВерсии В (&УзлыОбмена)";
		Запрос.УстановитьПараметр("УзлыОбмена", УзлыОбмена);
	КонецЕсли;
	ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "[ОтборПоУзлу]", СтрокаОтбора);
	
	Если ЗначениеЗаполнено(Период) Тогда
		
		СтрокаОтбора = "И (ВерсииОбъектов.ДатаВерсии >= &ДатаНачала
		| И ВерсииОбъектов.ДатаВерсии <= &ДатаОкончания)";
		Запрос.УстановитьПараметр("ДатаНачала", Период.ДатаНачала);
		Запрос.УстановитьПараметр("ДатаОкончания", Период.ДатаОкончания);
		
	Иначе
		
		СтрокаОтбора = "";
		
	КонецЕсли;
	ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "[ОтборПоПериоду]", СтрокаОтбора);
	
	ТипыВерсий = Новый СписокЗначений;
	Если ЗначениеЗаполнено(ЭтоКоличествоКоллизий) Тогда
		
		Если ЭтоКоличествоКоллизий Тогда
			
			ТипыВерсий.Добавить(Перечисления.ТипыВерсийОбъекта.ПринятыеДанныеПоКоллизии);
			ТипыВерсий.Добавить(Перечисления.ТипыВерсийОбъекта.НепринятыеДанныеПоКоллизии);
			
			СтрокаОтбора = "";
			
		Иначе
			
			ТипыВерсий.Добавить(Перечисления.ТипыВерсийОбъекта.НепринятыйПоДатеЗапретаОбъектСуществуетВБазе);
			ТипыВерсий.Добавить(Перечисления.ТипыВерсийОбъекта.НепринятыйПоДатеЗапретаОбъектНеСуществуетВБазе);
			
			Если ЗначениеЗаполнено(СтрокаПоиска) Тогда
				
				СтрокаОтбора = "И ВерсииОбъектов.Комментарий ПОДОБНО &Комментарий";
				Запрос.УстановитьПараметр("Комментарий", "%" + СтрокаПоиска + "%");
				
			Иначе
				
				СтрокаОтбора = "";
				
			КонецЕсли;
			
		КонецЕсли;
		
	Иначе // Отбор по комментарию не поддерживается.
		
		ТипыВерсий.Добавить(Перечисления.ТипыВерсийОбъекта.ПринятыеДанныеПоКоллизии);
		ТипыВерсий.Добавить(Перечисления.ТипыВерсийОбъекта.НепринятыеДанныеПоКоллизии);
		ТипыВерсий.Добавить(Перечисления.ТипыВерсийОбъекта.НепринятыйПоДатеЗапретаОбъектСуществуетВБазе);
		ТипыВерсий.Добавить(Перечисления.ТипыВерсийОбъекта.НепринятыйПоДатеЗапретаОбъектНеСуществуетВБазе);
		
	КонецЕсли;
	ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "[ОтборПоПричине]", СтрокаОтбора);
	Запрос.УстановитьПараметр("ТипыВерсий", ТипыВерсий);
	
	Запрос.Текст = ТекстЗапроса;
	Результат = Запрос.Выполнить();
	
	Если Не Результат.Пустой() Тогда
		
		Выборка = Результат.Выбрать();
		Выборка.Следующий();
		Количество = Выборка.Количество;
	КонецЕсли;
	
	Возврат Количество;
	
КонецФункции

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

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

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

ПриКоллизииИзмененийДанных (БСП)

ПриПолученииДанныхОтГлавногоВКонце (БСП)

ПриПолученииДанныхОтПодчиненногоВКонце (БСП)

КоличествоЭлементовВВыборке (БСП)

КоличествоПроблемВерсионирования (БСП)

КоличествоЗанятыхФайлов (БСП)

КоличествоПрисоединенныхФайлов (БСП)

КоличествоИдейНаСтранице (БСП)

СформироватьКоличествоГолосов (БСП)

Обновлятор-1С: групповое (пакетное) обновление и обслуживание всех баз за один раз