Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
28 мар 2024, 21:50

1С:Предприятие 8.2 (8.2.15.289) Открытие формы списка с предварительным отбором

Автор sas_255, 21 дек 2015, 12:17

0 Пользователей и 1 гость просматривают эту тему.

sas_255

1С:Предприятие 8.2 (8.2.15.289) самописная учебная конфигурация.
Есть форма списка заявок на обслуживание.
Необходимо настроить форму так, чтобы при открытии отображались только заявки на обслуживание у которых статус "Открыто"

Попытался использовать такую процедуру


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

Но по какой то причине она не работает. Более того при ее работе 1С вообще запуске подвисает, а потом закрывается, не выдавая никаких ошибок(форма на рабочем столе, то есть должна отображаться при запуске).
Что я не так делаю?
Режим "Управляемое приложение".


vitasw

Я б начал с обновления платформы.
Какой тип у реквизита "СтатусЗаявки"?

sas_255

Цитата: vitasw от 21 дек 2015, 12:37
Я б начал с обновления платформы.
Какой тип у реквизита "СтатусЗаявки"?
Для чего обновлять платформу? Насколько я понимаю, если перейти на 8,3 то придется переписывать конфигурацию с нуля.
Тип у реквизита "СтатусЗаявки"    СправочникСсылка.СтатусыЗаявок

LexaK

попробуйте по такому примеру сделайте


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
//УстановитьОформление();
УстановитьОтбор();
КонецПроцедуры

&НаСервере
Процедура УстановитьОтбор()

    Отбор = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    Отбор.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Наименование");
    Отбор.ПравоеЗначение  = "ма";
    Отбор.ВидСравнения  = ВидСравненияКомпоновкиДанных.Содержит;
    Отбор.Использование=Истина;

КонецПроцедуры

если помогло нажмите: Спасибо!

sas_255

LexaK, использовал то что вы сказали



&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    //УстановитьОформление();
    УстановитьОтбор();
КонецПроцедуры

&НаСервере
Процедура УстановитьОтбор()
   
    Отбор = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    Отбор.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("СтатусЗаявки");
    Отбор.ПравоеЗначение  = "Открыто";
    Отбор.ВидСравнения  = ВидСравненияКомпоновкиДанных.Содержит;
    Отбор.Использование=Истина;
   
КонецПроцедуры

Ошибок не выдает, но и в списке вообще ничего не выводит. Вообще ничего.

Платформу обновил до 1С:Предприятие 8.2 (8.2.19.130) Все равно ничего не изменилось.

vitasw

Цитата: sas_255 от 21 дек 2015, 12:53Для чего обновлять платформу?
Для того, чтобы исключить возможные ошибки платформы. Совневаюсь, что кто-то на лету подтвердит работу метода именно на вашей версси платформы
Цитата: sas_255 от 21 дек 2015, 12:53Насколько я понимаю, если перейти на 8,3 то придется переписывать конфигурацию с нуля.
Нет, неправильно понимаете.
К тому же про 8.3 никто не говорил.
Цитата: sas_255 от 21 дек 2015, 12:53Тип у реквизита "СтатусЗаявки"    СправочникСсылка.СтатусыЗаявок

Так, какого массива!, вы в отбор пихаете значение типа строка?!
Цитата: sas_255 от 21 дек 2015, 12:17ЗначениеОтбора = Новый Структура("СтатусЗаявки", "Открыто"); ПараметрыВыбора = Новый Структура("Отбор", ЗначениеОтбора);



LexaK

sas_255, это же пример, надо свои условия адаптировать

статус у вас, скорее всего перечисление, тогда так

Отбор.ПравоеЗначение  = Перечисления.СтатусыЗаявок.Открыто; //"Открыто";


а для конкретного сравнения, надо

Отбор.ВидСравнения  = ВидСравненияКомпоновкиДанных.Равно; //Содержит;


ну хоть, чуть-чуть то голову включайте :befhbt: , или вы в школе даже контрольную не могли списать подставив свои данные :(?
если помогло нажмите: Спасибо!

sas_255

Цитата: LexaK от 21 дек 2015, 13:27
sas_255, это же пример, надо свои условия адаптировать
статус у вас, скорее всего перечисление, тогда так

Отбор.ПравоеЗначение  = Перечисления.СтатусыЗаявок.Открыто; //"Открыто";


ну хоть, чуть-чуть то голову включайте :befhbt: , или вы в школе даже контрольную не могли списать подставив свои данные :(?
Статусы в справочнике.
Отбор.ПравоеЗначение  = Справочники.СтатусыЗаявок.Открыто;

Просто, чтобы подставить свои данные, нужно немного получше знать синтаксис и правила обращения к объектам.
1С я вижу всего то 5 дней. Поэтому плаваю.

cska-fanat-kz

другие варианты:
1) настроить отбор мышью в настройках динамического списка
2) добавить условие в запрос, по которому строится динамический список
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

sas_255

Цитата: cska-fanat-kz от 21 дек 2015, 13:38
другие варианты:
1) настроить отбор мышью в настройках динамического списка
2) добавить условие в запрос, по которому строится динамический список
1 Так делал в первую очередь. Но настройки не сохраняются, после выхода все возвращается на исходные.
2 не совсем понял как. Я просто создал форму списка. Никаких запросов не делал.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск