|
Отбор в управляемой форме по реквизиту | ☑ | ||
---|---|---|---|---|
0
AZLK-TEAM
21.11.13
✎
08:08
|
Привет всем! Возник вопрос по отбору в управляемой форме.
Имеется реквизит. Тип реквизита ПеречислениеСсылка.СтатусыЧековККМ. Нужно чтобы при открытии формыв табличной части не было строк со статусом архивный. Как это сделать? Посоветуйте что нибудь пожалуйста!) |
|||
1
Wobland
21.11.13
✎
08:10
|
||||
2
banco
21.11.13
✎
08:15
|
Расширение таблицы формы для табличных частей.ОтборСтрок (Form table extension for tabular sections.RowFilter)
Расширение таблицы формы для табличных частей (Form table extension for tabular sections) ОтборСтрок (RowFilter) Использование: Чтение и запись. Описание: Тип: Неопределено; ФиксированнаяСтруктура. Позволяет установить отбор по значению колонки. В качестве ключа используется имя реквизита табличной части, а в качестве значения - значение, по которому осуществляется отбор. Чтобы снять отбор нужно присвоить свойству либо значение Неопределено, либо пустую ФиксированнаяСтруктура. Доступность: Тонкий клиент, веб-клиент, сервер, толстый клиент. Изменение свойства на клиенте требует обращения к серверу. Примечание: При программном изменении табличной части отбор нужно переустанавливать, чтобы для измененных строк отбор отработал. |
|||
3
AZLK-TEAM
21.11.13
✎
08:26
|
&НаКлиенте
Процедура Команда1(Команда) ЭО=Документы.ЧекККМ.Форма.ФормаСписка.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭО.ВидСравнения=ВидСравненияКомпоновкиДанных.Равно; ЭО.ЛевоеЗначение=Новый ПолеКомпоновкиДанных("Архивный"); ЭО.ПравоеЗначение=Объект.Организация; ЭО.Использование=Истина; ПараметрыФормы = Новый Структура("ДатаНач", НачалоДня(ТекущаяДата())); ОткрытьФормуМодально("Документ.ЧекККМ.Форма.ФормаСписка",ПараметрыФормы); ОбновитьФорму(); КонецПроцедуры У меня выдает ошибку. Жалуется на документы, т. к. процедура проходит на клиенте, а к документам то можно обращаться на сервере. А форма у меня находится в документах. Что делать? |
|||
4
Wobland
21.11.13
✎
08:29
|
(3) немного сравнить с (0) из (1)
|
|||
5
AZLK-TEAM
21.11.13
✎
08:33
|
(4) не понимаю(
|
|||
6
Wobland
21.11.13
✎
08:37
|
вот это: ЭО=Форма.Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
сравнить с этим: ЭО=Документы.ЧекККМ.Форма.ФормаСписка.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); |
|||
7
AZLK-TEAM
21.11.13
✎
08:58
|
Сравнил. У меня форма то в Документах находится. А в первом случае - сразу форма пишется. В остальном тоже самое.
|
|||
8
Wobland
21.11.13
✎
09:00
|
(7) v8: Открытие формыСписка, пост 11
двоечник |
|||
9
AZLK-TEAM
21.11.13
✎
09:03
|
Ну я знаю что Документы клиент не знает, поэтому и ошибк пишет. А что делать то? Причем тут открыть формумодально? Открываю то я её позже. Или её сначала открыть надо?
|
|||
10
Wobland
21.11.13
✎
09:04
|
можно получить, наколдовать отбор, открыть. или тебе в (1) это не видно?
|
|||
11
AZLK-TEAM
21.11.13
✎
09:08
|
&НаКлиенте
Процедура Команда1(Команда) Форма=ПолучитьФорму("Документ.ЧекККМ.Форма.ФормаСписка"); ЭО=Форма.Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭО.ВидСравнения=ВидСравненияКомпоновкиДанных.Равно; ЭО.ЛевоеЗначение=Новый ПолеКомпоновкиДанных("Архивный"); ЭО.ПравоеЗначение=Объект.Организация; ЭО.Использование=Истина; ПараметрыФормы = Новый Структура("ДатаНач", НачалоДня(ТекущаяДата())); ОткрытьФормуМодально("Документ.ЧекККМ.Форма.ФормаСписка",ПараметрыФормы); ОбновитьФорму(); КонецПроцедуры Запускается без ошибок, но отбор не идет. Строки с реквизитом архивный, в табличной части сё равно присутствуют, а их не должно быть. |
|||
12
Wobland
21.11.13
✎
09:14
|
а как ты так архивный с организацией сравниваешь?
|
|||
13
AZLK-TEAM
21.11.13
✎
09:21
|
&НаКлиенте
Процедура Команда1(Команда) Форма=ПолучитьФорму("Документ.ЧекККМ.Форма.ФормаСписка"); ЭО=Форма.Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭО.ВидСравнения=ВидСравненияКомпоновкиДанных.Равно; ЭО.ЛевоеЗначение=Новый ПолеКомпоновкиДанных("Архивный"); ЭО.ПравоеЗначение=Объект.СтатусЧекаККМ; ЭО.Использование=Истина; ПараметрыФормы = Новый Структура("ДатаНач", НачалоДня(ТекущаяДата())); ОткрытьФормуМодально("Документ.ЧекККМ.Форма.ФормаСписка",ПараметрыФормы); ОбновитьФорму(); КонецПроцедуры Вот так надо? |
|||
14
Wobland
21.11.13
✎
09:23
|
хм.. в прошлый подход хоть запустил проверить..
|
|||
15
AZLK-TEAM
21.11.13
✎
09:28
|
Выдает ошибку поле объекта не обнаружено (СтатусЧекаККМ)
Нажимаю подробно пишет вот что {Обработка.РМКУправляемыйРежим.Форма.Форма.Форма(7715)}: Поле объекта не обнаружено (СтатусЧекаККМ) ЭО.ПравоеЗначение=Объект.СтатусЧекаККМ; Почему так? |
|||
16
AZLK-TEAM
21.11.13
✎
09:36
|
&НаКлиенте
Процедура Команда1(Команда) Форма=ПолучитьФорму("Документ.ЧекККМ.Форма.ФормаСписка"); ЭО=Форма.Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭО.ВидСравнения=ВидСравненияКомпоновкиДанных.Равно; ЭО.ЛевоеЗначение=Перечисления.СтатусыЧековККМ.Архивный; ЭО.ПравоеЗначение=Перечисления.СтатусыЧековККМ.Архивный; ЭО.Использование=Истина; ПараметрыФормы = Новый Структура("ДатаНач", НачалоДня(ТекущаяДата())); ОткрытьФормуМодально("Документ.ЧекККМ.Форма.ФормаСписка",ПараметрыФормы); ОбновитьФорму(); КонецПроцедуры Вот! Но теперь ругается на перечисления |
|||
17
Wobland
21.11.13
✎
09:38
|
а прикольно А с А сравнивать?
ПредопределенноеЗначение в помощь |
|||
18
AZLK-TEAM
21.11.13
✎
09:44
|
&НаСервере
функция перечислил() Возврат(Перечисления.СтатусыЧековККМ.Архивный); конецфункции &НаКлиенте Процедура Команда1(Команда) Форма=ПолучитьФорму("Документ.ЧекККМ.Форма.ФормаСписка"); ЭО=Форма.Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); Архивный=Перечислил(); ЭО.ВидСравнения=ВидСравненияКомпоновкиДанных.Равно; ЭО.ЛевоеЗначение=Архивный; ЭО.ПравоеЗначение=Архивный; ЭО.Использование=Истина; ПараметрыФормы = Новый Структура("ДатаНач", НачалоДня(ТекущаяДата())); ОткрытьФормуМодально("Документ.ЧекККМ.Форма.ФормаСписка",ПараметрыФормы); ОбновитьФорму(); КонецПроцедуры Что не правильно щас? |
|||
19
Wobland
21.11.13
✎
09:45
|
да всё нормально. отбор настроен на всегда истину
|
|||
20
AZLK-TEAM
21.11.13
✎
09:47
|
Мне надо чтобы Архивный НЕВЫВОДИЛОСЬ. А оно всё равно выводится. Что не правильно?
ЭО.ЛевоеЗначение=Архивный; ЭО.ПравоеЗначение=Архивный; Это не правильно? |
|||
21
Wobland
21.11.13
✎
09:48
|
2=2 всегда?
|
|||
22
Wobland
21.11.13
✎
09:49
|
Архивный=Ложь
правильно? |
|||
23
AZLK-TEAM
21.11.13
✎
09:51
|
Не понимаю. Объясни поконкретнее пожалуйста.
|
|||
24
AZLK-TEAM
21.11.13
✎
10:17
|
ЭО.ВидСравнения=ВидСравненияКомпоновкиДанных.Равно;
ЭО.ЛевоеЗначение=Архивный; ЭО.ПравоеЗначение=Архивный; ЭО.Использование=Истина; Что обозначают эти четыре строчки? особенно вот эти две? ЭО.ЛевоеЗначение=Архивный; ЭО.ПравоеЗначение=Архивный; Это интервал какой то или что? Я не могу понять...в хелпе про это не написано. В интернете тоже инфы нету. помогите разобраться плиз. |
|||
25
Trucker
21.11.13
✎
10:35
|
(24) Ты сам то, что с чем хочешь сравнить, что бы получился нужный тебе результат?
|
|||
26
Wobland
21.11.13
✎
10:35
|
сравнение - это бинарная операция. операнды как-то традиционно называют левый и правый. у тебя оба операнда одинаковы. следовательно сравнение всегда даёт истинный результат
|
|||
27
Wobland
21.11.13
✎
10:36
|
(26) *бинарная функция
|
|||
28
AZLK-TEAM
21.11.13
✎
10:36
|
Мне надо чтобы не весь список выходил в табличной части, а только те, у которых Статус не равен Архивный. Что с чем сравнить надо для этого?
|
|||
29
AZLK-TEAM
21.11.13
✎
10:37
|
То есть там где статус Архивный - их выводить не надо вообще. Я не могу понять что с чем сранить надо...
|
|||
30
Trucker
21.11.13
✎
10:39
|
(28) > у которых Статус не равен Архивный.
Вот это напиши в виде равенства, прям здесь словами. |
|||
31
Wobland
21.11.13
✎
10:40
|
разрешаю подглядеть в (22)
|
|||
32
AZLK-TEAM
21.11.13
✎
10:40
|
Скажу словами. Надо сравнить Статус и Статус.Архивный
То есть если грубо говоря СТатус=Статус.Архивный - не выводить. Правильно мысли идут? |
|||
33
Wobland
21.11.13
✎
10:41
|
(32) выводить только те, у которых статус<>архивный
|
|||
34
olegves
21.11.13
✎
10:45
|
(0) если это всегда так, то лучше не отбором, а произвольным запросом ДС решить, только подзапрос к ТЧ надо будет свернуть до 1 строки, иначе ДС с ума сойдет
|
|||
35
Trucker
21.11.13
✎
10:46
|
(34) Иш какой шустрый. Погоди, мы тут еще с видами сравнения не разобрались.
|
|||
36
AZLK-TEAM
21.11.13
✎
10:48
|
&НаСервере
функция перечислил() Возврат(Перечисления.СтатусыЧековККМ.Архивный); конецфункции &НаСервере функция перечислил2() Возврат(Перечисления.СтатусыЧековККМ); конецфункции &НаКлиенте Процедура Команда1(Команда) Форма=ПолучитьФорму("Документ.ЧекККМ.Форма.ФормаСписка"); ЭО=Форма.Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); Архивный=Перечислил(); Архивный2=перечислил2(); ЭО.ВидСравнения=ВидСравненияКомпоновкиДанных.НеРавно; ЭО.ЛевоеЗначение=Архивный; ЭО.ПравоеЗначение=Архивный; ЭО.Использование=Истина; ПараметрыФормы = Новый Структура("ДатаНач", НачалоДня(ТекущаяДата())); ОткрытьФормуМодально("Документ.ЧекККМ.Форма.ФормаСписка",ПараметрыФормы); ОбновитьФорму(); КонецПроцедуры Так ведь надо? Запускается без ошибок, но когда нажимаю кнопку открытия формы - выдает ошибку Обработка.РМКУправляемыйРежим.Форма.Форма.Форма(7722)}: Ошибка при вызове метода контекста (перечислил2) Архивный2=перечислил2(); по причине: Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа. по причине: Ошибка преобразования данных XDTO: Запись значения свойства 'ret': форма: Элемент имя: {http://v8.1c.ru/8.2/managed-application/modules}ret по причине: Ошибка отображения типов: Отсутствует отображение для типа 'ПеречислениеМенеджер.СтатусыЧековККМ' Что не так опять? |
|||
37
Wobland
21.11.13
✎
10:50
|
передаёшь с сервера какую-то хню
|
|||
38
Wobland
21.11.13
✎
10:51
|
сейчас ты спросишь, как надо, а я буду мерзко хихикать и ждать, когда ты сам найдёшь ответ в этой ветке ;)
|
|||
39
AZLK-TEAM
21.11.13
✎
10:54
|
ЭО.ПравоеЗначение=Перечисления.СтатусыЧековККМ;
Ну так тоже нельзя. Перечисления на клиенте не работают же. Я попробовал на сервере, тоже не получилось. |
|||
40
Wobland
21.11.13
✎
10:58
|
какое следующее простое число после 13? вот там и читай
|
|||
41
Trucker
21.11.13
✎
10:59
|
(39) ЭО.ПравоеЗначение=Перечисления.СтатусыЧековККМ
и какое значение будет содержать ПравоеЗначение? Выше уже подсказали как обращаться к перечислению на клиенте. |
|||
42
AZLK-TEAM
21.11.13
✎
11:01
|
Какой пост? 17?
ПредопределенноеЗначение в помощь Это? |
|||
43
AZLK-TEAM
21.11.13
✎
11:05
|
&НаКлиенте
Процедура Команда1(Команда) Форма=ПолучитьФорму("Документ.ЧекККМ.Форма.ФормаСписка"); ЭО=Форма.Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); Архивный=Перечислил(); ЭО.ВидСравнения=ВидСравненияКомпоновкиДанных.НеРавно; ЭО.ЛевоеЗначение=Архивный; ЭО.ПравоеЗначение=ПредопределенноеЗначение("Перечисления.СтатусыЧековККМ"); ЭО.Использование=Истина; ПараметрыФормы = Новый Структура("ДатаНач", НачалоДня(ТекущаяДата())); ОткрытьФормуМодально("Документ.ЧекККМ.Форма.ФормаСписка",ПараметрыФормы); ОбновитьФорму(); КонецПроцедуры |
|||
44
AZLK-TEAM
21.11.13
✎
11:05
|
Так? Ну тоже ошибку выдает. Не работает
орма.Форма.Форма(7719)}: Ошибка при вызове метода контекста (ПредопределенноеЗначение) ЭО.ПравоеЗначение=ПредопределенноеЗначение("Перечисления.СтатусыЧековККМ"); по причине: Предопределенное значение "Перечисления.СтатусыЧековККМ" не найдено. |
|||
45
Wobland
21.11.13
✎
11:06
|
(44) надо боьше читать. там в единственном числе
|
|||
46
Trucker
21.11.13
✎
11:12
|
(44) Что вас заставило открыть конфигуратор?
|
|||
47
AZLK-TEAM
21.11.13
✎
11:14
|
{Обработка.РМКУправляемыйРежим.Форма.Форма.Форма(7719)}: Ошибка при вызове метода контекста (ПредопределенноеЗначение)
ЭО.ПравоеЗначение=ПредопределенноеЗначение("Перечисление.СтатусыЧековККМ"); по причине: Предопределенное значение "Перечисление.СтатусыЧековККМ" не найдено. Предопределенное значение "Перечисление.СтатусыЧековККМ" не найдено. Написал в единственном - тоже самое. |
|||
48
Wobland
21.11.13
✎
11:16
|
а дай скрин из пофигуратора с таким перечислением
|
|||
49
Wobland
21.11.13
✎
11:16
|
тьху, плин. какой статус имеется в виду?
|
|||
50
AZLK-TEAM
21.11.13
✎
11:16
|
&НаКлиенте
Процедура Команда1(Команда) Форма=ПолучитьФорму("Документ.ЧекККМ.Форма.ФормаСписка"); ЭО=Форма.Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); Архивный=Перечислил(); ЭО.ВидСравнения=ВидСравненияКомпоновкиДанных.НеРавно; ЭО.ЛевоеЗначение=Архивный; ЭО.ПравоеЗначение=ПредопределенноеЗначение("Перечисление.СтатусыЧековККМ"); ЭО.Использование=Истина; ПараметрыФормы = Новый Структура("ДатаНач", НачалоДня(ТекущаяДата())); ОткрытьФормуМодально("Документ.ЧекККМ.Форма.ФормаСписка",ПараметрыФормы); ОбновитьФорму(); КонецПроцедуры |
|||
51
AZLK-TEAM
21.11.13
✎
11:17
|
Не работает этот код. Хотя ПеречислениЕ написал. В ед. значении
|
|||
52
AZLK-TEAM
21.11.13
✎
11:18
|
Ну Помогите пожалуйста, что не так?((((
|
|||
53
Wobland
21.11.13
✎
11:20
|
(52) какой статус?
|
|||
54
AZLK-TEAM
21.11.13
✎
11:23
|
Статус - реквизит в табличной части.
Имеется реквизит. Тип реквизита ПеречислениеСсылка.СтатусыЧековККМ. Вот какой статус. |
|||
55
Wobland
21.11.13
✎
11:28
|
(54) который из статусов?
|
|||
56
AZLK-TEAM
21.11.13
✎
11:31
|
Я не понимаю вашего вопроса. Можете задать полный вопрос.
я же объяснил: Статус - реквизит в табличной части. Имеется реквизит. Тип реквизита ПеречислениеСсылка.СтатусыЧековККМ. Статус одни он может быть : архивный, пробитый, отложенный анулированный. Мне нужно чтобы там где архивный - не выводилось в табличную часть, а выводилось только робитый, отложенный анулированный. |
|||
57
Trucker
21.11.13
✎
11:35
|
(56) У ПеречислениеСсылка.СтатусыЧековККМ есть несколько значений, архивный, пробитый, отложенный анулированный.
Какое значение перечисления хранится в ЭО.ПравоеЗначение= ? |
|||
58
AZLK-TEAM
21.11.13
✎
11:37
|
никакого. Там в общем идет. Мы же должны сравнить архивный, со всеми статусами, поэтому я не указал значение. Не правильно что ли?
|
|||
59
bazvan
21.11.13
✎
11:38
|
Выбрать ВСЕ кроме архивный
|
|||
60
Trucker
21.11.13
✎
11:40
|
(58) Ну раз никакого, то и результат никакой.
|
|||
61
Wobland
21.11.13
✎
11:41
|
(58) ты должен сравнить поле в своём списке с каким-то конкретным значением
|
|||
62
AZLK-TEAM
21.11.13
✎
11:54
|
Я понял. Но как выбрать всё кроме архивный?
Перечисление.СтатусыЧековККМ.ВыбратьВсеКромеАрхивный Так что ли? |
|||
63
Wobland
21.11.13
✎
12:01
|
(62) не равные архивному штоль?
|
|||
64
olegves
21.11.13
✎
12:04
|
(62) тебе лучше другое занятие подискать - пофигуратор, похоже, не твое
|
|||
65
George Wheels
21.11.13
✎
12:10
|
Господа, ну хоть по кусочкам подскажите ему.
В (3) ЛевоеЗначение правильное. |
|||
66
AZLK-TEAM
21.11.13
✎
12:12
|
&НаСервере
функция перечислил() Возврат(Перечисления.СтатусыЧековККМ.Архивный); конецфункции &НаКлиенте Процедура Команда1(Команда) Форма=ПолучитьФорму("Документ.ЧекККМ.Форма.ФормаСписка"); ЭО=Форма.Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); Архивный=Перечислил(); ЭО.ВидСравнения=ВидСравненияКомпоновкиДанных.НеРавно; ЭО.ЛевоеЗначение=Новый ПолеКомпоновкиДанных("СтатусЧекаККМ"); ЭО.ПравоеЗначение=Архивный; ЭО.Использование=Истина; ПараметрыФормы = Новый Структура("ДатаНач", НачалоДня(ТекущаяДата())); ОткрытьФормуМодально("Документ.ЧекККМ.Форма.ФормаСписка",ПараметрыФормы); ОбновитьФорму(); КонецПроцедуры Вот так сделал. Работает без ошибок, но не отбирает((( |
|||
67
Wobland
21.11.13
✎
12:16
|
это всё потому, что отбор ставишь на одной форме, а открываешь другую
|
|||
68
George Wheels
21.11.13
✎
12:16
|
(66) Подумай, какую форму открываешь? И где же у неё отбор?
|
|||
69
George Wheels
21.11.13
✎
12:24
|
СП -> Интерфейс (управляемый) -> Управляемая форма -> УправляемаяФорма
|
|||
70
AZLK-TEAM
21.11.13
✎
12:39
|
&НаСервере
функция перечислил() Возврат(Перечисления.СтатусыЧековККМ.Архивный); конецфункции функция перечислил1() Возврат(НачалоДня(ТекущаяДата())); конецфункции &НаКлиенте Процедура Команда1(Команда) Форма=ПолучитьФорму("Документ.ЧекККМ.Форма.ФормаСписка"); ЭО=Форма.Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); Архивный=Перечислил(); ЭО.ВидСравнения=ВидСравненияКомпоновкиДанных.НеРавно; ЭО.ЛевоеЗначение=Новый ПолеКомпоновкиДанных("СтатусЧекаККМ"); ЭО.ПравоеЗначение=Архивный; ЭО.Использование=Истина; Дата=перечислил1(); ЭО.ВидСравнения=ВидСравненияКомпоновкиДанных.БольшеИлиРавно; ЭО.ЛевоеЗначение=Новый ПолеКомпоновкиДанных("Дата"); ЭО.ПравоеЗначение=Дата; ЭО.Использование=Истина; Форма.ОткрытьМодально(); //ПараметрыФормы = Новый Структура("ДатаНач", НачалоДня(ТекущаяДата())); ////ОткрытьФормуМодально("Документ.ЧекККМ.Форма.ФормаСписка",ПараметрыФормы); ////ОбновитьФорму(); КонецПроцедуры Вот как должно быть! Вот так работает. А вы мне голову морочите!))) Но всё равно спасибо! Без вас бы не справился. |
|||
71
Wobland
21.11.13
✎
15:28
|
воспитание а-ля Шао-Линь работает всё-таки..
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |