Публикации

БСП
Разработки

Найдено результатов: 3


Убрать итоги из готового текста запроса

Позволяет убрать итоги из текста запроса, на пример, перед передачей его в СКД
ChOP 16 2
СхемаЗапроса = новый СхемаЗапроса;
СхемаЗапроса.УстановитьТекстЗапроса(Запрос.Текст);
СхемаЗапроса.ПакетЗапросов.Получить(СхемаЗапроса.ПакетЗапросов.Количество()-1).ВыраженияИтогов.Очистить();
СхемаЗапроса.ПакетЗапросов.Получить(СхемаЗапроса.ПакетЗапросов.Количество()-1).КонтрольныеТочкиИтогов.Очистить();
Запрос.Текст = СхемаЗапроса.ПолучитьТекстЗапроса();

НастроитьОтображениеСпискаВнешнихПользователей

Используется для настройки отображения наличия внешних пользователей в списках справочников (партнеры, респонденты и др.),
ОбщийМодуль.ВнешниеПользователи
Автор: 1С
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Используется для настройки отображения наличия внешних пользователей в списках справочников (партнеры, респонденты и др.), 
// являющихся объектом авторизации в справочнике ВнешниеПользователи.
//
// Параметры:
//  Форма - ФормаКлиентскогоПриложения - вызывающий объект.
//
Процедура НастроитьОтображениеСпискаВнешнихПользователей(Форма) Экспорт
	
	Если ПравоДоступа("Чтение", Метаданные.Справочники.ВнешниеПользователи) Тогда
		Возврат;
	КонецЕсли;
	
	// Удаление отображения недоступных сведений.
	СхемаЗапроса = Новый СхемаЗапроса;
	СхемаЗапроса.УстановитьТекстЗапроса(Форма.Список.ТекстЗапроса);
	Источники = СхемаЗапроса.ПакетЗапросов[0].Операторы[0].Источники;
	Для Индекс = 0 По Источники.Количество() - 1 Цикл
		Если Источники[Индекс].Источник.ИмяТаблицы = "Справочник.ВнешниеПользователи" Тогда
			Источники.Удалить(Индекс);
		КонецЕсли;
	КонецЦикла;
	Форма.Список.ТекстЗапроса = СхемаЗапроса.ПолучитьТекстЗапроса();
	
КонецПроцедуры

НастроитьОтборыДинамическогоСписка

Устанавливает в условие ГДЕ динамического списка постоянные отборы
ОбщийМодуль.УправлениеДоступом
Автор: 1С
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Устанавливает в условие ГДЕ динамического списка постоянные отборы
// на основе разрешенных значений доступа указанных типов в рамках всех групп доступа.
// Это позволяет в отдельных случаях ускорить открытие динамического списка.
// Если количество разрешенных значений в общей сложности получилось более 100, отбор не устанавливается.
//
// Для работы процедуры у динамического списка должна быть установлена основная таблица,
// установлен произвольный запрос, а также должно поддерживаться преобразование вида:
//   СхемаЗапроса = Новый СхемаЗапроса;
//   СхемаЗапроса.УстановитьТекстЗапроса(Список.ТекстЗапроса);
//   Список.ТекстЗапроса = СхемаЗапроса.ПолучитьТекстЗапроса();
// Если это условие выполнить не удается, тогда следует добавлять отборы самостоятельно
// с использованием функции РазрешенныеЗначенияДляДинамическогоСписка, как в этой процедуре.
//
// Параметры:
//  Список          - ДинамическийСписок - динамический список, в который нужно установить отборы.
//  ОписаниеОтборов - Соответствие - со свойствами:
//    * Ключ     - Строка - имя поля основной таблицы динамического списка, для которого
//                          нужно установить условие <Поле> В (&РазрешенныеЗначения).
//    * Значение - Тип    - тип значений доступа, которые нужно включить в состав
//                          параметра "&РазрешенныеЗначения".
//               - Массив - массив указанных выше типов.
//
Процедура НастроитьОтборыДинамическогоСписка(Список, ОписаниеОтборов) Экспорт
	
	Если Не ОграничиватьДоступНаУровнеЗаписей()
	 Или УправлениеДоступомСлужебный.ОграничиватьДоступНаУровнеЗаписейУниверсально()
	 Или Пользователи.ЭтоПолноправныйПользователь(,, Ложь) Тогда
		Возврат;
	КонецЕсли;
	
	Если ТипЗнч(Список) <> Тип("ДинамическийСписок") Тогда
		ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
			НСтр("ru = 'Ошибка вызова процедуры НастроитьОтборыДинамическогоСписка общего модуля УправлениеДоступом.
			           |Значение параметра Список ""%1"" не является динамическим списком.'"), Строка(Список));
	КонецЕсли;
	
	Если Не ЗначениеЗаполнено(Список.ОсновнаяТаблица) Тогда
		ВызватьИсключение
			НСтр("ru = 'Ошибка вызова процедуры НастроитьОтборыДинамическогоСписка общего модуля УправлениеДоступом.
			           |У переданного динамического списка не указана основная таблица.'");
	КонецЕсли;
	
	Если Не Список.ПроизвольныйЗапрос Тогда
		ВызватьИсключение
			НСтр("ru = 'Ошибка вызова процедуры НастроитьОтборыДинамическогоСписка общего модуля УправлениеДоступом.
			           |У переданного динамического списка не установлен флажок ""Произвольный запрос"".'");
	КонецЕсли;
	
	СхемаЗапроса = Новый СхемаЗапроса;
	СхемаЗапроса.УстановитьТекстЗапроса(Список.ТекстЗапроса);
	Параметры = Новый Соответствие;
	
	Для Каждого ОписаниеОтбора Из ОписаниеОтборов Цикл
		ИмяПоля = ОписаниеОтбора.Ключ;
		Значения = УправлениеДоступомСлужебный.РазрешенныеЗначенияДляДинамическогоСписка(
			Список.ОсновнаяТаблица, ОписаниеОтбора.Значение);
		Если Значения = Неопределено Тогда
			Продолжить;
		КонецЕсли;
		
		Источники = СхемаЗапроса.ПакетЗапросов[0].Операторы[0].Источники;
		Псевдоним = "";
		Для Каждого Источник Из Источники Цикл
			Если Источник.Источник.ИмяТаблицы = Список.ОсновнаяТаблица Тогда
				Псевдоним = Источник.Источник.Псевдоним;
				Прервать;
			КонецЕсли;
		КонецЦикла;
		Если Не ЗначениеЗаполнено(Псевдоним) Тогда
			ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
				НСтр("ru = 'Ошибка вызова процедуры НастроитьОтборыДинамическогоСписка общего модуля УправлениеДоступом.
				           |У переданного динамического списка не удалось найти псевдоним основной таблицы
				           |""%1"".'"), Список.ОсновнаяТаблица);
		КонецЕсли;
		Отбор = СхемаЗапроса.ПакетЗапросов[0].Операторы[0].Отбор;
		ИмяПараметра = "РазрешенныеЗначенияПоля" + ИмяПоля;
		Параметры.Вставить(ИмяПараметра, Значения);
		
		Условие = Псевдоним + "." + ИмяПоля + " В (&" + ИмяПараметра + ")";
		Отбор.Добавить(Условие);
	КонецЦикла;
	
	Список.ТекстЗапроса = СхемаЗапроса.ПолучитьТекстЗапроса();
	
	Для Каждого КлючИЗначение Из Параметры Цикл
		ОбновитьЗначениеПараметраКомпоновкиДанных(Список, КлючИЗначение.Ключ, КлючИЗначение.Значение);
	КонецЦикла;
	
КонецПроцедуры