|
Помогите отфильтровать СправочникСписок.Номенклатура | ☑ | ||
---|---|---|---|---|
0
Boudybuilder
13.10.12
✎
23:10
|
Хочу переделать типовую форму номенклатуры "ФормаСписка". Кардинально что то менять не буду , тока одну кнопочку добавить надою.
Идея такова: Научился я загружать Екселевские прайсы в док УстановкаЦенНоменклатурыКонтрагентов. Загрузил весь прайс сегодня например , и знаю что на сегодня у этого поставщика есть такое наличие с ценами. Но этого мало. Хотелось бы в ФормеСписка номенклатуры установить отбор по наличию у контрагентов на дату. Тоесть кнопочка + поле дата. Данные получу запросом из регистра. Проблема в том ,что я совсем не умею ставить отбор в поле Список с типом данных СправочникСписок.Номенклатура; Как организовать? Список.Отбор ( .... А дальше че? ))) |
|||
1
pumbaEO
13.10.12
✎
23:15
|
жалко твою ут, смотри как используется при получении данных
|
|||
2
Boudybuilder
13.10.12
✎
23:17
|
Земляк , а че жалко то ? Я ей зла не желаю...
|
|||
3
ОбычныйЧеловек
13.10.12
✎
23:17
|
Список.Отбор.Ссылка.Значение=СписокТвоихКонтрагентовНаДата;
Список.Отбор.Использование=Истина; Список.Отбор.ВидСравнения=ВидСравнения.Всписке; За точность синтаксиса не ручаюсь - 1ски под рукой нету. |
|||
4
ОбычныйЧеловек
13.10.12
✎
23:19
|
Если ты хочешь вывести колонку с ценами контрагентов то смотри (1)
|
|||
5
Boudybuilder
13.10.12
✎
23:19
|
СписокТвоихКонтрагентовНаДата тут По номенклатуре а не по контрагентам отбор.
Но все же СписокТвоихКонтрагентовНаДата это СписокЗначений? |
|||
6
ОбычныйЧеловек
13.10.12
✎
23:20
|
(5) неправильно прочитал вопрос....
|
|||
7
Boudybuilder
13.10.12
✎
23:21
|
(4) Я по результату запроса просто отфильтровать хочу. Результатом будет Номенклатура . Там выгружать прийдется , или выборкой?
|
|||
8
ОбычныйЧеловек
13.10.12
✎
23:21
|
Да - это списокзначений
|
|||
9
ОбычныйЧеловек
13.10.12
✎
23:23
|
(7) выгрузкой у тебя будет либо ТЗ либо Массив а тебе надотсписок значений следовательно - выборкой его заполнишь...Правда понятия не имею на сколько большая у тебя номенклатура и как при этом будет работать твой отбор - может умрет все...
|
|||
10
Boudybuilder
13.10.12
✎
23:25
|
А что посоветуешь?
Я то думал не трогать форму, а новую обработку сделать с ТЗ. Но мне как то надо чтобы иерархично отображалось с группами... Это возможно? |
|||
11
Boudybuilder
13.10.12
✎
23:26
|
pumbaEO Все знает... А молчит... ))))))))
|
|||
12
ОбычныйЧеловек
13.10.12
✎
23:27
|
(10) нет ничего невозможного... просто эмулировать придется (иерархию) - если речь идет о ТЗ
|
|||
13
Boudybuilder
13.10.12
✎
23:27
|
(11) Это как?
|
|||
14
ОбычныйЧеловек
13.10.12
✎
23:28
|
(11) он же тебе предложил не мучаться с отбором а использовать ПриПолученииДанных.
|
|||
15
ОбычныйЧеловек
13.10.12
✎
23:29
|
(13) вот нету дома 1ски а то бы скинул пример...а на словах объяснять - застрелиться проще...
|
|||
16
ОбычныйЧеловек
13.10.12
✎
23:30
|
Самое простое и правильное было предложенио в (1)
|
|||
17
Boudybuilder
13.10.12
✎
23:37
|
(14) Эта процедура когда запускается? Не вижу ее в модулях
|
|||
18
ОбычныйЧеловек
13.10.12
✎
23:43
|
(17) это предопределенная процедура формы списка..что бы она появилась - отрой свойства формы списка и укажи ее там.
|
|||
19
Boudybuilder
13.10.12
✎
23:51
|
Процедура СписокПриПолученииДанных(Элемент, ОформленияСтрок)
// Вставить содержимое обработчика. КонецПроцедуры И как тут отфильтровать? |
|||
20
Boudybuilder
13.10.12
✎
23:52
|
Мне же надо чтоб сначала весь список показывало , и только при нажатии кнопки на форме отфильтровало по СпискуЗначений из запроса.
|
|||
21
ОбычныйЧеловек
13.10.12
✎
23:57
|
(20) еще раз - отфильтровать в этой процедуре разумеется никак нельзя (т.к. она не для этого предназначена). В этой процедуре тебе предлагается выводить (в отдельную колонку в форме списка) цену контрагента.
|
|||
22
Boudybuilder
14.10.12
✎
00:05
|
Блин , так мне же отфильтровать надо. Я ж хочу видеть только номенклатуру которая есть в результате запроса. Зачем мне всю видеть если какой то у поставщика нету?
|
|||
23
ОбычныйЧеловек
14.10.12
✎
00:11
|
(22) ну вот получится у тебя в резльтате запроса 5тыс.позиций - думаешь быстро "фильтр" твой отработает?! Может таки лучше все видеть? )
|
|||
24
Boudybuilder
14.10.12
✎
00:13
|
Позиций около 10 000 планируется , а то и больше. Что долго может это дело просчитываться?
|
|||
25
ОбычныйЧеловек
14.10.12
✎
00:15
|
(24) попробуй )
|
|||
26
Азат
14.10.12
✎
00:17
|
(24) пока ты тут спрашиваешь - уже 10 раз бы на реальных условиях попробовал
|
|||
27
Noroving
14.10.12
✎
00:17
|
УстановитьЭлементОтбора(Список.Отбор, "Ссылка", СписокНоменклатуры, , ВидСравненияКомпоновкиДанных.ВСписке, Истина);
Процедура УстановитьЭлементОтбора(ОбластьПоискаДобавления, знач ИмяПоля, знач ПравоеЗначение = Неопределено, знач ВидСравнения = Неопределено, знач Представление = Неопределено, знач Использование = Неопределено) Экспорт ЧислоИзмененных = ИзменитьЭлементыОтбора(ОбластьПоискаДобавления, ИмяПоля, Представление, ПравоеЗначение, ВидСравнения, Использование); Если ЧислоИзмененных = 0 Тогда Если ВидСравнения = Неопределено Тогда ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; КонецЕсли; ДобавитьЭлементКомпоновки(ОбластьПоискаДобавления, ИмяПоля, ВидСравнения, ПравоеЗначение, Представление, Использование); КонецЕсли; КонецПроцедуры |
|||
28
Noroving
14.10.12
✎
00:20
|
УстановитьЭлементОтбора в Модуле ОбщегоНазначенияКлиентСервер У меня, у Вас донт ноу))
|
|||
29
pumbaEO
14.10.12
✎
00:22
|
(27) выпендрился? Теперь то же самое на толстых формах.
(0) научить пользоватся глобальным поиском? |
|||
30
Noroving
14.10.12
✎
00:23
|
(29) Сори, таким уже давно не пользуюсь )
|
|||
31
Noroving
14.10.12
✎
00:25
|
(29) А вот кто выпендривается, так это ты... за чем кидать умные фрасы типа я все знаю но тебе не скажу, лучше бы ничего совсем не писал... или скидывай какойто пример или молчи себе. а?
|
|||
32
pumbaEO
14.10.12
✎
00:42
|
(31) я иногда пытаюсь использовать поиск, еще в (1) я дал направление, код за него писать можешь ты, я не буду.
|
|||
33
Boudybuilder
14.10.12
✎
00:43
|
Для експеримента , пока что сотворил следующее
Процедура ДействияФормыНаличиеУПоставщиков(Кнопка)//Фан Запрос = Новый Запрос; Запрос.Текст="ВЫБРАТЬ | ЦеныНоменклатурыКонтрагентовСрезПоследних.Номенклатура |ИЗ | РегистрСведений.ЦеныНоменклатурыКонтрагентов.СрезПоследних(, ) КАК ЦеныНоменклатурыКонтрагентовСрезПоследних" ; Рез = Запрос.Выполнить(); Выб = Рез.Выбрать(); СЗ = Новый СписокЗначений; Пока Выб.Следующий() Цикл СЗ.Добавить(Выб.Номенклатура); КонецЦикла; Отбор = Список.Отбор.Добавить("Ссылка"); Отбор.ВидСравнения=ВидСравнения.ВСписке; Отбор.Значение=СЗ; Но чтото не фурычет. |
|||
34
Noroving
14.10.12
✎
00:46
|
поставь использование истина
|
|||
35
ОбычныйЧеловек
14.10.12
✎
00:47
|
(33) а (3) посмотреть повинимательнее )
|
|||
36
Boudybuilder
14.10.12
✎
00:55
|
Процедура ДействияФормыНаличиеУПоставщиков(Кнопка)//Фан
Запрос = Новый Запрос; Запрос.Текст="ВЫБРАТЬ | ЦеныНоменклатурыКонтрагентовСрезПоследних.Номенклатура |ИЗ | РегистрСведений.ЦеныНоменклатурыКонтрагентов.СрезПоследних(, ) КАК ЦеныНоменклатурыКонтрагентовСрезПоследних" ; Рез = Запрос.Выполнить(); Выб = Рез.Выбрать(); СЗ = Новый СписокЗначений; Пока Выб.Следующий() Цикл СЗ.Добавить(Выб.Номенклатура); КонецЦикла; Список.Отбор.Ссылка.Значение=СЗ; Список.Отбор.ВидСравнения=ВидСравнения.ВСписке; Список.Отбор.Использование=Истина; КонецПроцедуры {Справочник.Номенклатура.Форма.ФормаСписка.Форма(919)}: Ошибка при установке значения атрибута контекста (Значение) Список.Отбор.Ссылка.Значение=СЗ; по причине: Неверный тип значения |
|||
37
Лефмихалыч
14.10.12
✎
00:56
|
(36) строчки 919 и 918 местами поменяй
|
|||
38
Лефмихалыч
14.10.12
✎
00:57
|
точней 919 и 920
|
|||
39
Boudybuilder
14.10.12
✎
01:02
|
Список.Отбор.ВидСравнения=ВидСравнения.ВСписке;
Список.Отбор.Ссылка.Значение=СЗ; Список.Отбор.Использование=Истина; {Справочник.Номенклатура.Форма.ФормаСписка.Форма(919)}: Поле объекта не обнаружено (ВидСравнения) Список.Отбор.ВидСравнения=ВидСравнения.ВСписке; |
|||
40
Лефмихалыч
14.10.12
✎
01:06
|
(39) задумайся, что ты делаешь. Тебе надо:
1. Получить ЭЛЕМЕНТ отбора 2. этому элементу присвоить вид сравнения 3. этому же елементу присвоить значение отбора ты первый пункт не выполнил - вместо элемента юзаешь сам отбор, а у него этого всего нет ни фига |
|||
41
Noroving
14.10.12
✎
01:07
|
Список.Отбор.Ссылка.ВидСравнения=ВидСравнения.ВСписке;
Список.Отбор.Ссылка.Значение=СЗ; Список.Отбор.Ссылка.Использование=Истина; |
|||
42
Boudybuilder
14.10.12
✎
01:10
|
Процедура ДействияФормыНаличиеУПоставщиков(Кнопка)//Фан
Запрос = Новый Запрос; Запрос.Текст="ВЫБРАТЬ | ЦеныНоменклатурыКонтрагентовСрезПоследних.Номенклатура.Ссылка КАК Ссылка |ИЗ | РегистрСведений.ЦеныНоменклатурыКонтрагентов.СрезПоследних(, ) КАК ЦеныНоменклатурыКонтрагентовСрезПоследних" ; Рез = Запрос.Выполнить(); Выб = Рез.Выбрать(); СЗ = Новый СписокЗначений; Пока Выб.Следующий() Цикл СЗ.Добавить(Выб.Ссылка); КонецЦикла; Список.Отбор.Ссылка.ВидСравнения=ВидСравнения.ВСписке; Список.Отбор.Ссылка.Значение=СЗ; Список.Отбор.Ссылка.Использование=Истина; КонецПроцедуры Но список остался без изменений |
|||
43
Лефмихалыч
14.10.12
✎
01:12
|
(42) а кнопку-то нажал?
|
|||
44
Boudybuilder
14.10.12
✎
01:12
|
а то!
|
|||
45
Boudybuilder
14.10.12
✎
01:14
|
Все ок
|
|||
46
Boudybuilder
14.10.12
✎
01:15
|
и быстро работает . Кто тут говорил , что долго оно все?
|
|||
47
Boudybuilder
14.10.12
✎
01:15
|
А можно чтобы и группы убирало в которых нету элементов после отбора?
|
|||
48
hhhh
14.10.12
✎
09:42
|
(47) нет, нельзя
|
|||
49
Boudybuilder
14.10.12
✎
12:36
|
(49) Плохо что нельзя... Для того ведь и делалось чтобы лишнюю инфу не выводить...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |