Имя: Пароль:
1C
1С v8
Отбр в табличной части УФ
0 Anast
 
08.07.20
09:33
Подскажите, как сделать отбор в табличной части на форме в управляемых формах?
В табличной части справочника есть реквизит Документ. У Документа есть реквизит Контрагент, у контрагента Регион. Документ и Регион выведены на форму табличной части. Как сделать отбор по Региону без добавления реквизита табличной части? Если добавить колонку реквизита, то данных там не будет и если делать

СтруктураПоиска = СписокЗаказов.ТекущиеДанные.Регион; данных там не будет.

Надо сделать именно отбор, чтобы потом с отобранными на форме строками работать, т.е. для этих строк проставить значение реквизита.
1 Fedor-1971
 
08.07.20
09:42
(0) Сформулируй корректно вопрос. Какой-то поток сознания
Документ и Регион ВЫВЕДЕНЫ на форму ТЧ, Как сделать отбор БЕЗ ДОБАВЛЕНИЯ реквизита ТЧ

как так то?

Если таки в ТЧ Регион есть, то:

добавляем реквизит формы НужныйРегион
Если НужныйРегион.Пустая() тогда
     Элементы.СписокЗаказов.ОтборСтрок = Неопределено;

Иначе
     Элементы.СписокЗаказов.ОтборСтрок = новый ФиксированнаяСтруктура("Регион", НужныйРегион);
КонецЕсли;
2 Anast
 
08.07.20
09:44
Регион не реквизит табличной части, а просто колонка, которая красный обозначается, а не синим
3 Anast
 
08.07.20
09:47
Если реквизит есть в ТЧ, то там просто все.
4 Fedor-1971
 
08.07.20
09:50
(2) у колонки имя есть? вот и впиши его вместо "Регион" в структуру отбора
5 Fedor-1971
 
08.07.20
09:51
ОтборСтрок - это чисто на форме и устанавливается НаКлиенте
6 Anast
 
08.07.20
09:52
(4) так данных-то там нет в этой колонке, они просто на форме отображаются. Надо сначала заполнять их?
7 Fedor-1971
 
08.07.20
09:58
(6) Да, сначала заполни Регионы, а потом ставь отбор.

В УФ ты можешь достать реквизит из Ссылки прямо на форму, т.е. находишь свой Регион у контрагента из Документа и просто добавляешь его на форму в ТЧ - в таком раскладе заполнять колонку не нужно.
Может подсесть скорость работы формы - зависит от количества документов
8 Anast
 
08.07.20
10:12
(7) не получается так.
Реквизит или колонка реквизита не найден.
А если добавить реквизит формы, то нет данных там
9 Fedor-1971
 
08.07.20
10:18
(8) пойдём простым путём
Добавляем реквизит формы в ТЧ, называем "Регион" с нужным типом (как я понимаю, справочник)
ПриСозданииНаСервере - заполняем регионы из документов, которые есть в ТЧ

Проверяем, есть ли данные в колонке "Регион" когда открывается форма в пользовательском режиме

Вторым шагом добавляем реквизит формы "НужныйРегион", выводим его на форму и в ПриИзменении пишем код выше (про очистку, надеюсь, сам догадаешься)
10 Chameleon1980
 
08.07.20
10:54
найди пункт изменить форму
найти документ и добавь нужное поле
сделай отбор
11 Anast
 
09.07.20
09:07
Сделала как в (9) посоветовали. Спасибо.
А теперь еще вопрос. Почему не работает оповещение о закрытии? Добавлена кнопка редактирования контрагента, т.к. это информационное поле в табличной части, а не реквизит и его открыть просто так невозможно.
Далее при изменении данных у контрагента надо изменять и данные в колонке табличной части, т.е. регион.

&НаКлиенте
Процедура РедактироватьКонтрагента(Команда)
    
    СписокЗаказов = ЭтаФорма.Элементы.Состав;
    ТекущийКонтрагент = СписокЗаказов.ТекущиеДанные.Документ.Контрагент;
    
    ПараметрыФормы = Новый Структура;
    ПараметрыФормы.Вставить("Ключ", ТекущийКонтрагент);
    
    ОписаниеОповещенияОЗакрытии = Новый ОписаниеОповещения("ОбновитьРегионы",ЭтотОбъект);
    ОткрытьФорму("Справочник.Контрагенты.ФормаОбъекта",ПараметрыФормы,ЭтаФорма,,,ОписаниеОповещенияОЗакрытии);
КонецПроцедуры

&НаКлиенте
Процедура ОбновитьРегионы () Экспорт
       СОобщить ("!!");
        
КонецПроцедуры

В процедуру ОбновитьРегионы() не заходит
12 Fedor-1971
 
09.07.20
09:19
(11) Вот тут не хватает ","
ОткрытьФорму("Справочник.Контрагенты.ФормаОбъекта",ПараметрыФормы,ЭтаФорма,,, <- должно быть 4 штуки

И так-то есть справка и контекстная подсказка.
13 Anast
 
09.07.20
09:30
не работает все равно. А может это быть связно в тем, что у конфигурации режим использования модальности установлен использовать?
14 Fedor-1971
 
09.07.20
10:32
(13) По идее, не должно, т.к. это фишки платформы, по факту, может не работать
просто проверь, используй ОткрытьФормуМодально и вызывай следом функцию обновления данных
15 Anast
 
09.07.20
10:40
Если сделать ОткрытьФормуМодально и потом процедура, то работает.
Интересно, почему не получается ОписаниеОповещения?
16 Fedor-1971
 
09.07.20
10:47
(15) Возможно, разрешение на использование модальности отключает функционал оповещений при работе с окнами
17 Anast
 
09.07.20
10:49
Пробовала делать режим использования модальности не использовать, не работает все равно
18 Fedor-1971
 
09.07.20
11:53
(17) вот чисто интересно, в справку посмотреть не судьба?

ОткрытьФорму(
<ИмяФормы>,                "Справочник.Контрагенты.ФормаОбъекта",
<Параметры>,               ПараметрыФормы
<Владелец>,                ЭтаФорма
<Уникальность>,              Пусто
<Окно>,                      Пусто
<НавигационнаяСсылка>,     ОписаниеОповещенияОЗакрытии
<ОписаниеОповещенияОЗакрытии>,
<РежимОткрытияОкна>)

Поставь оповещение в нужную позицию
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой