![]() |
|
Отбор с параметрами в справочнике | ☑ | ||
---|---|---|---|---|
0
Vitalii72
06.07.16
✎
06:45
|
Помогите пожалуйста разобраться, что не так делаю. В документе вставил кнопку, делаю отбор с параметрами и открываю ФормуВыбора справочника номенклатура. В отборе указываю склад и Владельца табличная часть документа. Владельца беру из формы документа при событие ОбработкиВыбора и в ФормеВыбора справочника добавил обработку Обработку Выбора.
&НаКлиенте Процедура Подбор(Команда) УсловияОтбора = Новый Структура; УсловияОтбора.Вставить("Склад", Объект.Склад); ОткрытьФорму("Справочник.Номенклатура.ФормаВыбора",УсловияОтбора,Элементы.ТЧНоменклатура); КонецПроцедуры &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Если Параметры.Свойство("Склад") Тогда Список.Параметры.УстановитьЗначениеПараметра("Склад", Параметры.Склад); КонецЕсли; КонецПроцедуры В документе &НаКлиенте Процедура ТЧНоменклатураОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) Элемент.ТЧ.ДобавитьСтроку(); Элемент.ТЧ.ТекущиеДанные.ТЧНоменклатура = ВыбранноеЗначение; КонецПроцедуры В ФормеВыбора справочника: &НаКлиенте Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора) ОповеститьОВыборе(ВыбранноеЗначение); КонецПроцедуры Отбор проходит как мне надо, а вот выбранное значения не возвращает в документ. Прочитал, что надо в ФормеВыбора справочника при событие ОбработкаОповещение вернуть ВыбранноеЗначение, пишу ВыбранноеЗначение в процедуре, он ругается. |
|||
1
DrZombi
гуру
06.07.16
✎
06:55
|
(0) нет слова "отбор"
|
|||
2
DrZombi
гуру
06.07.16
✎
06:55
|
+(0) Код отстой все в топку
|
|||
3
DrZombi
гуру
06.07.16
✎
06:58
|
УсловияОтбора = Новый Структура;
УсловияОтбора.Вставить("Склад", Объект.Склад); СтрПарам = Новый Структура("Отбор",УсловияОтбора); ОткрытьФорму("Справочник.Номенклатура.ФормаВыбора",СтрПарам ,Элементы.ТЧНоменклатура); |
|||
4
DrZombi
гуру
06.07.16
✎
07:00
|
ОповеститьОВыборе (NotifyChoice)
Синтаксис: ОповеститьОВыборе(<ЗначениеВыбора>) Параметры: <ЗначениеВыбора> (обязательный) Тип: Произвольный. Результат выбора. Описание: Посылает оповещение владельцу формы о выполнении выбора или подбора, передает ему выбранное значение. Закрывает форму в соответствии со значением свойства ЗакрыватьПриВыборе. Данное действие аналогично выполнению выбора в форме, открытой для выбора в поле ввода или ячейке табличного поля. Доступность: Тонкий клиент, веб-клиент, толстый клиент. Примечание: Может применяться в случае, когда открытие формы выбора или подбора выполнено средствами языка. |
|||
5
Vitalii72
06.07.16
✎
07:04
|
&НаКлиенте
Процедура Подбор(Команда) УсловияОтбора = Новый Структура; УсловияОтбора.Вставить("Склад", Объект.Склад); СтрПарам = Новый Структура("Отбор",УсловияОтбора); ОткрытьФорму("Справочник.Номенклатура.ФормаВыбора",СтрПарам ,Элементы.ТЧНоменклатура); //УсловияОтбора = Новый Структура; //УсловияОтбора.Вставить("Склад", Объект.Склад); //ОткрытьФорму("Справочник.Номенклатура.ФормаВыбора",УсловияОтбора,Элементы.ТЧНоменклатура); КонецПроцедуры &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Если Параметры.Свойство("Склад") Тогда Список.Параметры.УстановитьЗначениеПараметра("Склад", Параметры.Отбор); КонецЕсли; КонецПроцедуры Не видит параметр |
|||
6
Vitalii72
06.07.16
✎
07:06
|
(4)
Из ФормыВыбора передаю обратно &НаКлиенте Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора) ОповеститьОВыборе(ВыбранноеЗначение); КонецПроцедуры Что не так? |
|||
7
DrZombi
гуру
06.07.16
✎
07:06
|
(5) Какой параметр?
При открытии справочника, отбор будет выставлен Автоматом. |
|||
8
Vitalii72
06.07.16
✎
07:08
|
(7) Получается это можно за комментировать?
&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) Если Параметры.Свойство("Склад") Тогда Список.Параметры.УстановитьЗначениеПараметра("Склад", Параметры.Отбор); КонецЕсли; КонецПроцедуры |
|||
9
Vitalii72
06.07.16
✎
07:10
|
В ФормеВыбора у меня:
ВЫБРАТЬ СправочникНоменклатура.Ссылка, СправочникНоменклатура.ПометкаУдаления, СправочникНоменклатура.Родитель, СправочникНоменклатура.ЭтоГруппа, СправочникНоменклатура.Код, СправочникНоменклатура.Наименование, СправочникНоменклатура.СерийныйНомер, СправочникНоменклатура.Предопределенный, СправочникНоменклатура.ИмяПредопределенныхДанных, ОстатокНоменклатурыОстаткиИОбороты.КоличествоКонечныйОстаток КАК КонечныйОстаток, ОстатокНоменклатурыОстаткиИОбороты.Сотрудники, ОстатокНоменклатурыОстаткиИОбороты.Склад, СправочникНоменклатура.Модель, СостояниеСрезПоследних.Состояние ИЗ Справочник.Номенклатура КАК СправочникНоменклатура ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстатокНоменклатуры.ОстаткиИОбороты(, , , , ) КАК ОстатокНоменклатурыОстаткиИОбороты ПО (ОстатокНоменклатурыОстаткиИОбороты.Номенклатура = СправочникНоменклатура.Ссылка) ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Состояние.СрезПоследних КАК СостояниеСрезПоследних ПО (СостояниеСрезПоследних.Номенклатура = СправочникНоменклатура.Ссылка) ГДЕ ОстатокНоменклатурыОстаткиИОбороты.Склад = &Склад Если ПриСозданиеНаСервере не указан Параметр, при отборе ругается. |
|||
10
DrZombi
гуру
06.07.16
✎
07:10
|
http://1c-pro.ru/threads/kak-organizovat-podbor-na-upravljaemyx-formax.36766/
&НаКлиенте Процедура Подбор(Команда) //одиночный подбор //ОткрытьФорму("Справочник.Номенклатура.ФормаВыбора", , Элементы.Материалы); //множественный подбор //ПараметрыФормы = Новый Структура("ЗакрыватьПриВыборе", Ложь); //ПараметрыФормы = Новый Структура("МножественныйВыбор", Истина); //множественный подбор с использованием множественного выбора ПараметрыФормы = Новый Структура("ЗакрыватьПриВыборе, МножественныйВыбор", Ложь, Истина); ОткрытьФорму("Справочник.Номенклатура.ФормаВыбора", ПараметрыФормы, Элементы.Материалы); КонецПроцедуры &НаКлиенте Процедура МатериалыОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) //одиночный подбор и множественный подбор //НоваяСтрока = Объект.Материалы.Добавить(); //НоваяСтрока.Материал = ВыбранноеЗначение; //подбор с множественным выбором Для Каждого ВыбранныйЭлемент Из ВыбранноеЗначение Цикл НоваяСтрока = Объект.Материалы.Добавить(); НоваяСтрока.Материал = ВыбранныйЭлемент; КонецЦикла; КонецПроцедуры |
|||
11
DrZombi
гуру
06.07.16
✎
07:12
|
(9) Жесть...
Убери "ГДЕ ОстатокНоменклатурыОстаткиИОбороты.Склад = &Склад" Так то оно конечно весело :) Но я бы лучше сделал все это в отдельной форме :) |
|||
12
Vitalii72
06.07.16
✎
07:13
|
(11) А как можно сделать несколько ФормВыбора в справочнике, пробовал создать ещё один, при открытие формы ругается.
|
|||
13
DrZombi
гуру
06.07.16
✎
07:14
|
(12) Кнопка добавить, выбераешь "Форма Выбора"
И Только одна может быть форма выбора по умолчанию... Но самих форм может быть Куева туча :) |
|||
14
DrZombi
гуру
06.07.16
✎
07:14
|
+ Ты же в (0) Сам указать можешь, какую форму использовать :)
|
|||
15
Vitalii72
06.07.16
✎
07:15
|
ФормуВыбора добавляю, при открытие Формы указываю новое название, если оно например не Справочник.Номенклатура.ФормаВыбора а Справочник.Номенклатура.ФормаВыбора1 то ругается, хотя она физически есть
|
|||
16
DrZombi
гуру
06.07.16
✎
07:16
|
+ ""
ОткрытьФорму("Справочник.Номенклатура.Форма.ФормаВыбора_2",УсловияОтбора,Элементы.ТЧНоменклатура); |
|||
17
DrZombi
гуру
06.07.16
✎
07:17
|
(15) Вы хоть пользуйтесь подсказками, помогает
|
|||
18
DrZombi
гуру
06.07.16
✎
07:17
|
+ от самой 1С
|
|||
19
Vitalii72
06.07.16
✎
07:19
|
Хорошо, спасибо большое за ответы, отбор работает без Условия ГДЕ, а вот возврат значения пока не работает. Попробую вставить тот код, который вы мне скинули в ОбработкуВыбора.
|
|||
20
DrZombi
гуру
06.07.16
✎
07:19
|
(19) Смотри в (10) и Думай, что ты делал не так :)
|
|||
21
DrZombi
гуру
06.07.16
✎
07:21
|
(19) Если вставишь параметр "ТекущаяСтрока", то в Справочнике Номенклатура можно позиционироваться на нужном элементе.
|
|||
22
Vitalii72
06.07.16
✎
07:24
|
(21) Это Вы сейчас о Обработке выбора?
|
|||
23
DrZombi
гуру
06.07.16
✎
07:27
|
(22) Это доп нагрузка для информирования :)
|
|||
24
DrZombi
гуру
06.07.16
✎
07:27
|
УсловияОтбора = Новый Структура;
УсловияОтбора.Вставить("Склад", Объект.Склад); СтрПарам = Новый Структура("Отбор, ТекущаяСтрока",УсловияОтбора, НужныйЭлемент); ОткрытьФорму("Справочник.Номенклатура.ФормаВыбора",СтрПарам ,Элементы.ТЧНоменклатура); |
|||
25
Vitalii72
06.07.16
✎
08:16
|
Сделал в ОбработкеВыбора
&НаКлиенте Процедура МатериалыОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) //одиночный подбор и множественный подбор НоваяСтрока = Объект.ТЧ.Добавить(); НоваяСтрока.ТЧНоменклатура = ВыбранноеЗначение; КонецПроцедуры Нефига не возвращает значение в табличную часть. И в строчке: СтрПарам = Новый Структура("Отбор, ТекущаяСтрока",УсловияОтбора, НужныйЭлемент); Если подставляю свой элемент, выдаёт ошибку: СтрПарам = Новый Структура("Отбор, ТекущаяСтрока",УсловияОтбора, Элементы.ТЧНоменклатура); |
|||
26
DrZombi
гуру
06.07.16
✎
08:21
|
(25) НужныйЭлемент - Это ссылка на элемент справочника, а не на элемент на форме :)
|
|||
27
DrZombi
гуру
06.07.16
✎
08:27
|
||||
28
Vitalii72
06.07.16
✎
10:03
|
(27) Всё спасибо разобрался, сам не внимательный ((
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |