#0
by Золотце
Всем добрый день! Кто-нибудь реализовывал отбор по реквизиту табличной части справочника? У меня в конфигурации есть справочник "КодыПроизводителя" с реквизитами "Производитель" (тип: справочник "Клиенты") и "СоглашениеСПроизводителем" (тип: справочник "СоглашенияСПроизводителями"). Также есть неподчиненный ничему справочник "СоглашенияСПроизводителями" в табличной части которого находится реквизит "Производитель" (тип: справочник "Клиенты"). Необходимо в форме элемента справочника "КодыПроизводителя" с заранее выбранном производителем при попытке выбрать соглашение открывать форму списка справочника с отбором по производителю (который запрятан в табличной части соглашений). Делаю следующее: в модуле формы элемента справочника "КодыПроизводителя" при начале выбора соглашения располагаю строки: В форме выбора справочника "СоглашенияСПроизводителем" создаю реквизит "ФильтрПоПроизводителю" (тип: справочник "Клиенты"), у основного реквизита формы (списка) устанавливаю флаг "Динамический запрос", в нем пишу текст: ВЫБРАТЬ СоглашенияСПроизводителем.Ссылка ИЗ Справочник.СоглашенияСПроизводителем КАК СоглашенияСПроизводителем ГДЕ И при создании формы выбора справочника "СоглашенияСПроизводителем" пишу: &НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) После запуска в режиме Предприятия из справочника "КодыПроизводителя" вместо справочника "СоглашенияСПроизводителем" с отбором открывается форма без единой строки и полностью недоступная. Что я делаю неправильно? Заранее спасибо!
#2
by Золотце
lxs, если передавать параметры, то придется в процедуре "ПриСозданииНаСервере" их получать и использовать в отборе (левое значение, правое, использование и т.п.). А разве есть возможность такой отбор устанавливать по реквизитам табличной части?
#3
by lubja
а ты отладчиком посмотри, что в процедуре ПриСозданииНаСервере в качестве ФильтрПоПРоизводителю. мое мнение он пуст...
#5
by Золотце
lubja, Вы правы, "ФильтрПоПроизводителю" - пустая ссылка на справочник "Клиенты". Буду думать, как передать.
#10
by Золотце
Форму выбора с отбором по табличной части в итоге реализовала следующим образом: в справочнике "КодыПроизводителя" при начале выбора соглашения разместила процедуру &НаКлиенте Процедура СоглашениеСПроизводителемНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
#11
by Золотце
В форме выбора справочника "СоглашенияСПроизводителем" запрос динамического списка изменила на стандартный (предлагаемый при снятом флаге "ПризвольныйЗапрос"): СправочникБП_СоглашенияСПроизводителем.Ссылка, СправочникБП_СоглашенияСПроизводителем.ВерсияДанных, СправочникБП_СоглашенияСПроизводителем.ПометкаУдаления, СправочникБП_СоглашенияСПроизводителем.Предопределенный, СправочникБП_СоглашенияСПроизводителем.Наименование ИЗ Справочник.БП_СоглашенияСПроизводителем КАК СправочникБП_СоглашенияСПроизводителем
#13
by Золотце
При открытии формы выбора справочника "БП_СоглашенияСПроизводителем" вызываю процедуру с отбором:
#14
by Золотце
В модуле формы справочника "БП_СоглашенияСПроизводителем" создаю процедуру "Отобрать":
#16
by lxs
Тебе надо правильно использовать динамические списки и параметры. Лена верно тебе советовала.
#17
by Золотце
Да, в итоге получилось. Отбор работает. lxs, если не сложно - подскажите альтернативный путь решения. Все-таки, хотелось бы правильно написать.
#18
by lubja
процедуру Отобрать можно слегка укоротить Список.ТекстЗапроса = "ВЫБРАТЬ |СправочникБП_СоглашенияСПроизводителем.Ссылка,
#21
by новичекВ1С
Делается элементарно, в форму передаем параметр отбора, в форме Список - диманический список с произвольным запросом по ТЧ, далее ПриСозданииНаСервере смотрим, если нам пришел отбор, то устанавливаем отбор на Список, типо так: &НаСервере
#22
by lubja
ну, и распиши, что есть НайтиОтборВДинамическомСписке и ДобавитьОторВДинамическийСписок, чтобы понятнее было...
#25
by новичекВ1С
можно конечно использовать только последнюю функцию сразу для добавления, но не кошерно:)
#33
by kiruha
Нет. Я хочу сказать, что штатно это делают критерием отбора - добавляется физически индекс, для быстрого извлечения данных по отбору и т.д.
#34
by Золотце
lubja, у меня была аналогичная мысль с сокращением процедуры "Отобрать". Решила остановиться на своем варианте, чтобы не возвращать табличную часть справочника на клиент тогда, когда не нужен отбор по клиенту. Если не ставить флаг "Произвольный запрос", 1С формирует текст без выборки табличной части. Наверное, это не просто так.
#35
by Золотце
новичекВ1С, спасибо за предложенный вариант! Любую задачу можно решить не одним способом. Хотелось узнать, есть ли методика реализации аналогичных задач. В первой части руководства разработчика "1С:Предприятие 8.2" сказано: "Если в динамическом списке выбрано ручное формирование запроса, то на запрос налагаются некоторые ограничения: ... в динамических списках не поддерживается отбор по реквизитам табличных частей". Это сбивает с толку.
#36
by Золотце
kiruha, в какой документации можно почитать про реализацию отбора по реквизиту табличной части критериями отбора?
#40
by lxs
Справочник СоглашенияСПроизводителями, форма выбора: 1. динамический список формируем при помощи произвольного запроса. Текст запроса ниже: ИЗ Справочник.СоглашенияСПроизводителями.Производители КАК СоглашенияСПроизводителямиПроизводители ГДЕ
#44
by новичекВ1С
И че? А если нам не надо отбирать по производителю ? Делать другую форму? Бред! Решение в вернее :)
#47
by lxs
есть косяк один, сейчас его уберу. при окончании выбора значение не помещается в поле Соглашение..
#51
by Золотце
новичекВ1С, я думаю, lxs имеет в виду установку отбора не в пользовательском режиме. Надо проанализировать передан ли параметр в форму выбора, если передан - тогда устанавливать отбор.
#52
by новичекВ1С
Если ты не установишь параметр в запросе , у тебя форма вообще не откроется, поэтому я и говорю, что если отбор не нужен будет, то этой формой уже не воспользуешься
#53
by Золотце
lxs, а параметр "Производитель" в запросе, с помощью которого накладывается ограничение - это ни реквизит формы выбора справочника "СоглашенияСПроизводителями", ни параметр формы выбора?
#54
by Золотце
новичекВ1С, если параметр в форму выбора не передан - можно текст запроса динамического списка программно изменить так, чтобы в нем не было никаких отборов.
#55
by Золотце
lxs, параметр "Основная таблица" мы очищаем для чего? Чтобы не контролировать уникальность ключей?
#58
by lxs
Только надо в форме выбора добавить параметр Производитель с типов СправочникСсылка.Клиенты
#59
by lxs
Прежде, чем говорить "бред", подумай головой. Путей решения проблемы может быть много. И необязательно твое - САМОЕ верное. Не строй иллюзий.
#60
by новичекВ1С
, А теперь попробуй в твоей форме выбора ДОБАВИТЬ элемент справочника! И тогда поймешь, почему я говорю, что твой вариант решения неверен.
#61
by новичекВ1С
+ я не говорил, что мой вариант решения САМЫЙ верный, я говорил, что он вернее твоего
#62
by Золотце
новичекВ1С, а Вы пробовали предлагаемым способом отобрать по реквизиту табличной части? Если в руководствах не врут, то такой отбор (вид сравнения, левое значение, правое и т.п.) неприменим к табличным частям.
#64
by Золотце
lubja, можно написать,как угодно. А хочется нормально и методологически правильно. Но в типовых конфигурациях я не нашла примеров таких отборов.
#66
by Золотце
Всем спасибо за участие, итоговый вариант на данный момент. Справочник "Коды производителя", начало выбора соглашения:
#67
by Золотце
У формы выбора справочника "Соглашения с производителями" создаю параметр "Производитель" (тип: справочник "Клиенты").
#68
by Золотце
У основного реквизита формы выбора ставлю флаг "Произвольный запрос", текст запроса: СправочникСоглашенияСПроизводителем.ПометкаУдаления, СправочникСоглашенияСПроизводителем.Предопределенный, СправочникСоглашенияСПроизводителем.Наименование ИЗ Справочник.СоглашенияСПроизводителем КАК СправочникСоглашенияСПроизводителем
#69
by новичекВ1С
у тебя по моему методу не получилось? И ты прочитала, что я писал в ? Ты не сможешь добавлять элементы справочника
#70
by Золотце
Основную таблицу динамического списка не очищаю. Это позволит создать новый элемент справочника даже при установленном в форме выбора отборе.
#73
by Золотце
Отбор работает, элементы новые в форме выбора можно создавать. Убрать отбор по производителю в такой форме выбора интерактивно нельзя.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- 8.2: Управляемая форма. Как раскрасить ячейки табличной части?
- 1с 8.2 Управляемая форма отбор строк в табличной части
- 8.2 Управляемая форма. Не видно реквизитов.
- Управляемая форма - как "подписаться" на активацию поля?
- 8.2 Управляемая форма, ТЧ.ОтборСтрок
- Управляемая форма на сервере
- Управляемая форма ПриСменеТекущегоРодителя
- перебор колонок табличной части (управляемая форма)
- 1с 8.3 Форма.Форма.Форма(9,17): Тип не определен (Запрос)
- Управляемая форма и поле выбора составного типа
- Обращение к табличной части справочника из табличной части документа
- Выбрать в табличной части документа элемент табличной части справочника
В этой группе 1С
- v7: Как узнать из какой формы происходит создание элемента справочника?
- Как проверить существование Регистра сведений?
- УПП, РАУЗ, решение СЛАУ
- СКД. Вывести табличную часть справочника в виде одной горизонтальной группировки
- Ошибка приложения 1cv7.exe, версия 7.70.0.27, модуль Moxel.dll
- расчет НДС в у.е. Торг 12 в Управлении торговлей 10.3
- SQL 2005 - как дать права только на 1 БД ?
- Конфигурация узла распределенной ИБ не соответствует ожидаемой!
- склонение валюты
- в СКД добавить логотип
- Как получить все возможные размеры бумаги принтера?
- выбрать подчиненные документы через ole 7.7
- Сбились типы после обновления из хранилища.
- Не срабатывает процедура ПослеЗаписи()
- Программное добавление доступных полей выбора СКД
- 1с 8.2 Управляемая форма, табличная часть, колонка список выбора!!!
- ПолучитьБлокировкуУстановкиСоединений() и 1С:Предприятие 8.2 (8.2.14.519)
- Выключение сервера по сигналу от бесперебойника.
- v7: Ошибка при запуске журнала регистрации (нюансы)
- "1С:Предприятие 8. Система проектирования прикладных решений"