276 lines
15 KiB
Plaintext
276 lines
15 KiB
Plaintext
|
||
&НаСервере
|
||
Процедура МагазиныПриИзмененииНаСервере()
|
||
|
||
КонецПроцедуры
|
||
|
||
&НаКлиенте
|
||
Процедура МагазиныПриИзменении(Элемент)
|
||
МагазиныПриИзмененииНаСервере();
|
||
КонецПроцедуры
|
||
|
||
&НаСервере
|
||
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
|
||
|
||
СписокМагазинов=Новый СписокЗначений();
|
||
Пользователь=ОмСлужебный.ТекущийПользователь();
|
||
|
||
//Магазин=ОмСлужебный.ТекущийМагазин();
|
||
//Если ЗначениеЗаполнено(Магазин) Тогда
|
||
// СписокМагазинов.Добавить(Магазин);
|
||
//Иначе
|
||
// //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
|
||
//// Данный фрагмент построен конструктором.
|
||
//// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
|
||
//
|
||
//Запрос = Новый Запрос;
|
||
//Запрос.Текст =
|
||
// "ВЫБРАТЬ
|
||
// | Магазины.Ссылка КАК Ссылка
|
||
// |ИЗ
|
||
// | Справочник.Магазины КАК Магазины";
|
||
//
|
||
//РезультатЗапроса = Запрос.Выполнить();
|
||
//
|
||
//ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
|
||
//
|
||
//Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
|
||
// СписокМагазинов.Добавить(ВыборкаДетальныеЗаписи.Ссылка);
|
||
//КонецЦикла;
|
||
//
|
||
|
||
|
||
|
||
Если не ПользователиИнформационнойБазы.ТекущийПользователь().Роли.Содержит(Метаданные.Роли.Администратор) Тогда
|
||
Для каждого маг из пользователь.магазины цикл
|
||
СписокМагазинов.Добавить(маг.Магазин);
|
||
КонецЦикла;
|
||
Иначе
|
||
|
||
Запрос = Новый Запрос;
|
||
Запрос.Текст =
|
||
"ВЫБРАТЬ
|
||
| Магазины.Ссылка КАК Ссылка
|
||
|ИЗ
|
||
| Справочник.Магазины КАК Магазины";
|
||
|
||
РезультатЗапроса = Запрос.Выполнить();
|
||
|
||
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
|
||
|
||
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
|
||
СписокМагазинов.Добавить(ВыборкаДетальныеЗаписи.Ссылка);
|
||
КонецЦикла;
|
||
|
||
|
||
КонецЕсли;
|
||
|
||
|
||
Список.Параметры.УстановитьЗначениеПараметра("Магазины",СписокМагазинов);
|
||
|
||
КонецПроцедуры
|
||
|
||
&НаСервере
|
||
Процедура ТекущийМагазинПриИзмененииНаСервере()
|
||
// Вставить содержимое обработчика.
|
||
ПараметрыСеанса.ТекущийМагазин=Магазин;
|
||
// Взято из БСП
|
||
// ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка
|
||
УстановитьЭлементОтбораДинамическогоСписка(Список, "Магазин", Магазин, ВидСравненияКомпоновкиДанных.Равно, , ЗначениеЗаполнено(Магазин));
|
||
КонецПроцедуры
|
||
|
||
&НаКлиенте
|
||
Процедура ТекущийМагазинПриИзменении(Элемент)
|
||
ТекущийМагазинПриИзмененииНаСервере();
|
||
КонецПроцедуры
|
||
|
||
&НаСервере
|
||
Процедура ПриЗагрузкеДанныхИзНастроекНаСервере(Настройки)
|
||
ПараметрыСеанса.ТекущийМагазин=Магазин;
|
||
КонецПроцедуры
|
||
|
||
Функция ИзменитьЭлементыОтбора(ОбластьПоиска,
|
||
Знач ИмяПоля = Неопределено,
|
||
Знач Представление = Неопределено,
|
||
Знач ПравоеЗначение = Неопределено,
|
||
Знач ВидСравнения = Неопределено,
|
||
Знач Использование = Неопределено,
|
||
Знач РежимОтображения = Неопределено,
|
||
Знач ИдентификаторПользовательскойНастройки = Неопределено) Экспорт
|
||
|
||
Если ЗначениеЗаполнено(ИмяПоля) Тогда
|
||
ЗначениеПоиска = Новый ПолеКомпоновкиДанных(ИмяПоля);
|
||
СпособПоиска = 1;
|
||
Иначе
|
||
СпособПоиска = 2;
|
||
ЗначениеПоиска = Представление;
|
||
КонецЕсли;
|
||
|
||
МассивЭлементов = Новый Массив;
|
||
|
||
НайтиРекурсивно(ОбластьПоиска.Элементы, МассивЭлементов, СпособПоиска, ЗначениеПоиска);
|
||
|
||
Для Каждого Элемент Из МассивЭлементов Цикл
|
||
Если ИмяПоля <> Неопределено Тогда
|
||
Элемент.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(ИмяПоля);
|
||
КонецЕсли;
|
||
Если Представление <> Неопределено Тогда
|
||
Элемент.Представление = Представление;
|
||
КонецЕсли;
|
||
Если Использование <> Неопределено Тогда
|
||
Элемент.Использование = Использование;
|
||
КонецЕсли;
|
||
Если ВидСравнения <> Неопределено Тогда
|
||
Элемент.ВидСравнения = ВидСравнения;
|
||
КонецЕсли;
|
||
Если ПравоеЗначение <> Неопределено Тогда
|
||
Элемент.ПравоеЗначение = ПравоеЗначение;
|
||
КонецЕсли;
|
||
Если РежимОтображения <> Неопределено Тогда
|
||
Элемент.РежимОтображения = РежимОтображения;
|
||
КонецЕсли;
|
||
Если ИдентификаторПользовательскойНастройки <> Неопределено Тогда
|
||
Элемент.ИдентификаторПользовательскойНастройки = ИдентификаторПользовательскойНастройки;
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
|
||
Возврат МассивЭлементов.Количество();
|
||
|
||
КонецФункции
|
||
|
||
|
||
Процедура УстановитьЭлементОтбора(ОбластьПоискаДобавления,
|
||
Знач ИмяПоля,
|
||
Знач ПравоеЗначение = Неопределено,
|
||
Знач ВидСравнения = Неопределено,
|
||
Знач Представление = Неопределено,
|
||
Знач Использование = Неопределено,
|
||
Знач РежимОтображения = Неопределено,
|
||
Знач ИдентификаторПользовательскойНастройки = Неопределено) Экспорт
|
||
|
||
ЧислоИзмененных = ИзменитьЭлементыОтбора(ОбластьПоискаДобавления, ИмяПоля, Представление,
|
||
ПравоеЗначение, ВидСравнения, Использование, РежимОтображения, ИдентификаторПользовательскойНастройки);
|
||
|
||
Если ЧислоИзмененных = 0 Тогда
|
||
Если ВидСравнения = Неопределено Тогда
|
||
Если ТипЗнч(ПравоеЗначение) = Тип("Массив")
|
||
Или ТипЗнч(ПравоеЗначение) = Тип("ФиксированныйМассив")
|
||
Или ТипЗнч(ПравоеЗначение) = Тип("СписокЗначений") Тогда
|
||
ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
|
||
Иначе
|
||
ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
Если РежимОтображения = Неопределено Тогда
|
||
РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный;
|
||
КонецЕсли;
|
||
ДобавитьЭлементКомпоновки(ОбластьПоискаДобавления, ИмяПоля, ВидСравнения,
|
||
ПравоеЗначение, Представление, Использование, РежимОтображения, ИдентификаторПользовательскойНастройки);
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
Функция ДобавитьЭлементКомпоновки(ОбластьДобавления,
|
||
Знач ИмяПоля,
|
||
Знач ВидСравнения,
|
||
Знач ПравоеЗначение = Неопределено,
|
||
Знач Представление = Неопределено,
|
||
Знач Использование = Неопределено,
|
||
знач РежимОтображения = Неопределено,
|
||
знач ИдентификаторПользовательскойНастройки = Неопределено) Экспорт
|
||
|
||
Элемент = ОбластьДобавления.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
|
||
Элемент.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(ИмяПоля);
|
||
Элемент.ВидСравнения = ВидСравнения;
|
||
|
||
Если РежимОтображения = Неопределено Тогда
|
||
Элемент.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный;
|
||
Иначе
|
||
Элемент.РежимОтображения = РежимОтображения;
|
||
КонецЕсли;
|
||
|
||
Если ПравоеЗначение <> Неопределено Тогда
|
||
Элемент.ПравоеЗначение = ПравоеЗначение;
|
||
КонецЕсли;
|
||
|
||
Если Представление <> Неопределено Тогда
|
||
Элемент.Представление = Представление;
|
||
КонецЕсли;
|
||
|
||
Если Использование <> Неопределено Тогда
|
||
Элемент.Использование = Использование;
|
||
КонецЕсли;
|
||
|
||
// Важно: установка идентификатора должна выполняться
|
||
// в конце настройки элемента, иначе он будет скопирован
|
||
// в пользовательские настройки частично заполненным.
|
||
Если ИдентификаторПользовательскойНастройки <> Неопределено Тогда
|
||
Элемент.ИдентификаторПользовательскойНастройки = ИдентификаторПользовательскойНастройки;
|
||
ИначеЕсли Элемент.РежимОтображения <> РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный Тогда
|
||
Элемент.ИдентификаторПользовательскойНастройки = ИмяПоля;
|
||
КонецЕсли;
|
||
|
||
Возврат Элемент;
|
||
|
||
КонецФункции
|
||
|
||
|
||
Процедура УстановитьЭлементОтбораДинамическогоСписка(ДинамическийСписок, ИмяПоля,
|
||
ПравоеЗначение = Неопределено,
|
||
ВидСравнения = Неопределено,
|
||
Представление = Неопределено,
|
||
Использование = Неопределено,
|
||
РежимОтображения = Неопределено,
|
||
ИдентификаторПользовательскойНастройки = Неопределено) Экспорт
|
||
|
||
Если РежимОтображения = Неопределено Тогда
|
||
РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный;
|
||
КонецЕсли;
|
||
|
||
Если РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный Тогда
|
||
ОтборДинамическогоСписка = ДинамическийСписок.КомпоновщикНастроек.ФиксированныеНастройки.Отбор;
|
||
Иначе
|
||
ОтборДинамическогоСписка = ДинамическийСписок.КомпоновщикНастроек.Настройки.Отбор;
|
||
КонецЕсли;
|
||
|
||
УстановитьЭлементОтбора(
|
||
ОтборДинамическогоСписка,
|
||
ИмяПоля,
|
||
ПравоеЗначение,
|
||
ВидСравнения,
|
||
Представление,
|
||
Использование,
|
||
РежимОтображения,
|
||
ИдентификаторПользовательскойНастройки);
|
||
|
||
КонецПроцедуры
|
||
|
||
|
||
Процедура НайтиРекурсивно(КоллекцияЭлементов, МассивЭлементов, СпособПоиска, ЗначениеПоиска)
|
||
|
||
Для каждого ЭлементОтбора Из КоллекцияЭлементов Цикл
|
||
|
||
Если ТипЗнч(ЭлементОтбора) = Тип("ЭлементОтбораКомпоновкиДанных") Тогда
|
||
|
||
Если СпособПоиска = 1 Тогда
|
||
Если ЭлементОтбора.ЛевоеЗначение = ЗначениеПоиска Тогда
|
||
МассивЭлементов.Добавить(ЭлементОтбора);
|
||
КонецЕсли;
|
||
ИначеЕсли СпособПоиска = 2 Тогда
|
||
Если ЭлементОтбора.Представление = ЗначениеПоиска Тогда
|
||
МассивЭлементов.Добавить(ЭлементОтбора);
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
Иначе
|
||
|
||
НайтиРекурсивно(ЭлементОтбора.Элементы, МассивЭлементов, СпособПоиска, ЗначениеПоиска);
|
||
|
||
Если СпособПоиска = 2 И ЭлементОтбора.Представление = ЗначениеПоиска Тогда
|
||
МассивЭлементов.Добавить(ЭлементОтбора);
|
||
КонецЕсли;
|
||
|
||
КонецЕсли;
|
||
|
||
КонецЦикла;
|
||
|
||
КонецПроцедуры |