|
Форма выбора с отбором в списке | ☑ | ||
---|---|---|---|---|
0
Ivan86
24.08.16
✎
14:58
|
Бухгалтерия предприятия 3.0 в документе ИнвентаризацияОС при выборе МОЛ - надо изменить стандартную обработку, чтобы МОЛ отбирался по подразделению.
Код: &НаКлиенте Процедура МОЛНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) Если ЗначениеЗаполнено(Объект.ПодразделениеОрганизации) Тогда СтандартнаяОбработка = Ложь; Форма = ОткрытьФорму("Справочник.ФизическиеЛица.Форма.ФормаВыбораСотрудников"); //Открываем форму ОтборВладелец =Форма.Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); //Добавлям отбор ОтборВладелец.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке; //Как будем сравнивать ОтборВладелец.Использование = Истина; // Устанавливаем галку использованияНовый ПолеКомпоновкиДанных("Номенклатура") ОтборВладелец.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Ссылка"); //По какому реквизиту будем делать отбор СписокОС = МОЛНачалоВыбораНаСервере(Объект.ПодразделениеОрганизации); ОтборВладелец.ПравоеЗначение = СписокОС; // И само значение отбора КонецЕсли; КонецПроцедуры &НаСервереБезКонтекста Функция МОЛНачалоВыбораНаСервере(ПодразделениеОрганизации) СписокОС = Новый СписокЗначений; ЗапросМВА= Новый Запрос; ЗапросМВА.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | МестонахождениеОСБухгалтерскийУчет.МОЛ КАК МОЛ |ИЗ | РегистрСведений.МестонахождениеОСБухгалтерскийУчет КАК МестонахождениеОСБухгалтерскийУчет |ГДЕ | МестонахождениеОСБухгалтерскийУчет.Местонахождение = &Местонахождение"; ЗапросМВА.УстановитьПараметр("Местонахождение", ПодразделениеОрганизации); СписокОС = ЗапросМВА.Выполнить().Выгрузить().ВыгрузитьКолонку("МОЛ"); Возврат СписокОС КонецФункции СписокОС - заполняется физ. лицами. Но отбор не устанавливается. Что я делаю не так? |
|||
1
Горогуля
24.08.16
✎
14:59
|
отбор как-то в параметрах формы неплохо задаётся
|
|||
2
Горогуля
24.08.16
✎
15:00
|
Ответ=ОткрытьФормуМодально("Справочник.СпособыОтраженияРасходовПоАмортизации.ФормаВыбора", Новый Структура("Отбор", Новый Структура("Организация", Объект.Организация)));
|
|||
3
Ivan86
24.08.16
✎
15:00
|
(1) Но через параметры - нельзя указать Всписке. если я не ошибаюсь?!
|
|||
4
Горогуля
24.08.16
✎
15:01
|
а куда правое значение дел?
|
|||
5
Горогуля
24.08.16
✎
15:02
|
(4) всё-всё, вижу
|
|||
6
_stay true_
24.08.16
✎
15:02
|
Либо можно использовать Список.КомпоновщикНастроек
Что-то вроде Форма.Список.КомпоновщикНастроек |
|||
7
Горогуля
24.08.16
✎
15:03
|
"в списке" и "в массиве" - это разные вещи?
|
|||
8
FIXXXL
24.08.16
✎
15:04
|
МассивМаршрутов = ПолучитьМассивМаршрутовПоСкладуСервер(Объект.Склад);
СписокМаршрутов = Новый СписокЗначений; СписокМаршрутов.ЗагрузитьЗначения(МассивМаршрутов); ПараметрыОтбора = Новый Структура("Ссылка", СписокМаршрутов); ПараметрыОткрытия = Новый Структура("Отбор", ПараметрыОтбора); ОткрытьФорму("Справочник.Маршруты.ФормаВыбора", ПараметрыОткрытия, Элемент); |
|||
9
FIXXXL
24.08.16
✎
15:04
|
(3) ошибаешься
|
|||
10
Ivan86
24.08.16
✎
15:11
|
(8) СтандартнаяОбработка = Ложь;
СписокОС = МОЛНачалоВыбораНаСервере(Объект.ПодразделениеОрганизации); СписокМаршрутов = Новый СписокЗначений; СписокМаршрутов.ЗагрузитьЗначения(СписокОС); ПараметрыОтбора = Новый Структура("Ссылка", СписокМаршрутов); ПараметрыОткрытия = Новый Структура("Отбор", ПараметрыОтбора); ОткрытьФорму("Справочник.ФизическиеЛица.Форма.ФормаВыбораСотрудников", ПараметрыОткрытия, Элемент); все равно не отбирает |
|||
11
_stay true_
24.08.16
✎
15:12
|
УТ 11.2
СписокЗначений = Новый СписокЗначений; Для каждого СтрТЗ Из ТЗ Цикл СписокЗначений.Добавить(СтрТЗ.Документ); КонецЦикла; НовОтбор = Форма.Список.КомпоновщикНастроек.Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); НовОтбор.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке; СтрокаОтбора.Использование = Истина; НовОтбор.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Ссылка"); НовОтбор.ПравоеЗначение = СписокЗначений; |
|||
12
_stay true_
24.08.16
✎
15:15
|
(10) (11)
Можешь сначала получить форму, потом захренакать этот код и потом открыть. Либо передать нужные значения как параметры и заполнить в ПриСозданииНаСервере открываемой формы. |
|||
13
Ivan86
24.08.16
✎
15:26
|
(12)
&НаКлиенте Процедура МОЛНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) Если ЗначениеЗаполнено(Объект.ПодразделениеОрганизации) Тогда СтандартнаяОбработка = Ложь; СписокОС = МОЛНачалоВыбораНаСервере(Объект.ПодразделениеОрганизации); Форма = ОткрытьФорму("Справочник.ФизическиеЛица.Форма.ФормаВыбораСотрудников"); НовОтбор = Форма.Список.КомпоновщикНастроек.Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); НовОтбор.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке; НовОтбор.Использование = Истина; НовОтбор.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Ссылка"); НовОтбор.ПравоеЗначение = СписокОС; КонецЕсли; КонецПроцедуры &НаСервереБезКонтекста Функция МОЛНачалоВыбораНаСервере(ПодразделениеОрганизации) СписокОС = Новый СписокЗначений; ЗапросМВА= Новый Запрос; ЗапросМВА.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | МестонахождениеОСБухгалтерскийУчет.МОЛ КАК МОЛ |ИЗ | РегистрСведений.МестонахождениеОСБухгалтерскийУчет КАК МестонахождениеОСБухгалтерскийУчет |ГДЕ | МестонахождениеОСБухгалтерскийУчет.Местонахождение = &Местонахождение"; ЗапросМВА.УстановитьПараметр("Местонахождение", ПодразделениеОрганизации); Список = ЗапросМВА.Выполнить().Выгрузить().ВыгрузитьКолонку("МОЛ"); СписокОС = Новый СписокЗначений; СписокОС.ЗагрузитьЗначения(Список); Возврат СписокОС КонецФункции все равно не отбирает |
|||
14
Горогуля
24.08.16
✎
15:29
|
открытие формы пересунуть в после задания отбора?
|
|||
15
Горогуля
24.08.16
✎
15:30
|
кстати, зачем СтандартнаяОбработка не ложь?
|
|||
16
Ivan86
24.08.16
✎
15:35
|
(15) Если подразделение не заполнено - пусть отрабатывает стандартная.
(14) в случае (8) сначала параметры, потом открытие формы. в случае (11) сначала получаем форму, потом делаем отбор. все равно не отбирает - в настроить список - значение отбор тоже не подставляется |
|||
17
_stay true_
24.08.16
✎
15:44
|
(16) Этот код отрабатывает на сервере. Конкретно у меня в ПриСозданииНаСервере
|
|||
18
_stay true_
24.08.16
✎
15:45
|
(17) В конце попробуй ещё Форма.Список.КомпоновщикНастроек.ЗагрузитьНастройки(Форма.Список.КомпоновщикНастроек.Настройки);
|
|||
19
FIXXXL
24.08.16
✎
16:34
|
(10) СписокОС - должен быть массив
|
|||
20
Ivan86
24.08.16
✎
16:44
|
(19) СписокОС - массив.
СписокОС = Новый СписокЗначений; ЗапросМВА= Новый Запрос; ЗапросМВА.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | МестонахождениеОСБухгалтерскийУчет.МОЛ КАК МОЛ |ИЗ | РегистрСведений.МестонахождениеОСБухгалтерскийУчет КАК МестонахождениеОСБухгалтерскийУчет |ГДЕ | МестонахождениеОСБухгалтерскийУчет.Местонахождение = &Местонахождение"; ЗапросМВА.УстановитьПараметр("Местонахождение", ПодразделениеОрганизации); СписокОС = ЗапросМВА.Выполнить().Выгрузить().ВыгрузитьКолонку("МОЛ"); |
|||
21
FIXXXL
24.08.16
✎
17:23
|
(20) он заполнен, проверял?
|
|||
22
Ivan86
24.08.16
✎
17:29
|
ответ нашел. ФормаСписка является формой выбора для справочника Физические лица Бухгалтерия предприятия, редакция 3.0 (3.0.43.258).
Все данные заполняются. Весь код приведенный в пунктах (11) (8) рабочий Всем спасибо за помощь! |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |