Версия для печати темы (https://pro1c.org.ua/index.php?s=3294c5a979d8f09be0ed7fe965c2c367&showtopic=36758)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование обычных форм 1С 8.2 и не интерфейсной логики _ Форма выбора для формы Отбора и Сортировки

Автор: Constantus 21.04.17, 15:39

Приветствую, форумчане!
"Управление торговлей 10.3", (Моби-С 5.5). "ABBYY Ukraine", 2003-2014 (2.3.20.1)

Для справочников, возможно создать несколько форм выбора и наложить на них какие-либо условия при открытии, например для фильтрации вывода на экран с ограничениями...

Для склада сделал 2-е формы отбора: Основная (с фильтрацией) и "ФормаВыбораВсе" (без каких либо ограничений)

Просматриваю список документов "Перемещение товаров". Там имеется склад Отправитель и склад Получатель.
На склад Отправитель поставлена форма выбора Основная (с фильтрацией), на склад Получатель - форма выбора "ФормаВыбораВсе", т.е. без ограничений с возможностью выбрать любой склад...

Это все нормально, но вот столкнулся с такой проблемой...

В списке документов Перемещений требуется открыть форму "Отбор и Сортировка" и проводить там фильтрацию по обоим типам складов.

При открытии в "Отборе и Сортировки" склада Отправитель отрабатывает основная форма выбора склада с ограничением - это так и правильно...
При открытии склада "Получатель" тоже открывается основная форма выбора, что по условиям задачи - не правильно: нужно открытие формы "ФормаВыбораВсе"...

В реквизитах и на всех формах документа Перемещения на склад Получатель поставил в свойство форма выбора - "ФормаВыбораВсе", но открывает все равно основную...

Каким образом в форме "Отбор и Сортировка" можно прописать при отборе нужную форму отбора справочников??? Я так понял, что используется основная форма отбора справочника...

Автор: logist 21.04.17, 15:51

Цитата(Constantus @ 21.04.17, 16:39) *
Каким образом в форме "Отбор и Сортировка" можно прописать при отборе нужную форму отбора справочников???

Никаким

Цитата(Constantus @ 21.04.17, 16:39) *
Я так понял, что используется основная форма отбора справочника...

Правильно поняли.

Цитата(Constantus @ 21.04.17, 16:39) *
Для справочников, возможно создать несколько форм выбора и наложить на них какие-либо условия при открытии, например для фильтрации вывода на экран с ограничениями...

Создание нескольких форм имеет смысл когда формы визуально значительно различаются, если вам надо наложить отбор, для этого не надо создавать отдельную форму, надо создать реквизит в который будет помещаться значение отбора, а при открытии проверять - если он заполнен тогда установить какой-то отбор, или выполнять какие-то действия. Но через форму отбора и сортировки так сделать нельзя, можно только получить условия доступные уже по факту открытия формы выбора.

Автор: Constantus 22.04.17, 11:40

Для программного отбора для Складов использовал код:

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


Где ПолеВыбора1 - список доступных складов... Код работает, фильтрует... без претензий...
Но вот попытался сделать аналогично, но теперь для Кассы...:

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


Не выдает никаких ошибок, в форме Отбора и Сортировки отбор по выбранной кассе стоит... Но сам список полностью пустой, т.е. какбуд-то такой кассы не существует.
Выбираю отбор эту кассу в ручную - фильтрация срабатывает (естественно при выборе запрашивает владельца кассы-организацию)...

Почему последний код не срабатывает? Подозреваю на отсутствие подбора по Владельцу... Как можно сделать программный отбор по Кассам?


Constantus @ Сегодня, 14:12 * ,
Странно, проверил работоспособность кода на других кассах, которые создал сейчас, на новых кассах код срабатывает и всё фильтруется...

Constantus @ Сегодня, 14:28 * ,
Еще страннее ситуация

Имеется касса "Kassa_AG" с которой у меня и возникли проблемы...

Переименовал ее в "Kassa_AG1" - фильтрация заработала как нужно... Все работает...

Решил переименовать обратно в "Kassa_AG" - ситуация вернулась на прежнюю проблемную ситуацию..., т.е. код именно на это название - не срабатывает...

Как такое возможно?

Автор: Flexy 22.04.17, 13:31

Constantus @ Сегодня, 11:40 * ,
Не надо искать по наименованию ни склады, ни кассы. У вас же уже есть (или нет?) в поле выбор Ссылки на нужные значения, которые вы добавляете в список для установки отбора? Да и как ваш код будет работать, если "кто-то" завтра поменяет наименование склада / кассы?

Автор: Constantus 22.04.17, 14:52

Flexy @ Сегодня, 16:31 * ,

Поиск идет как и положено по ссылке. Наименование по большому счету на поиск не влияет...

Ситуация парадоксально лищь тем, что сбой происходит только, если касса названа "Kassa_AG"...

При любом другом названии всё работает без проблем... Такое ощущение, что у 1с аллергия на название "Kassa_AG" smile.gif

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua