xmlTSDOrdersVasilek/Documents/Заказ/Forms/ФормаСписка/Ext/Form/Module.bsl

276 lines
15 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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