База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как реализовать процедуру ПунктРазгрузкиНачалоВыбора с фильтром по контрагенту?
- В этой теме 1 ответ, 2 участника, последнее обновление 1 неделя, 2 дня назад сделано
Odin — Одинэсник.
-
АвторСообщения
-
-
29 апреля 2026 в 9:30 #36861
напиши процедуру
ПунктРазгрузкиНачалоВыбора(Элемент, ДанныеВыбора, ВыборДобавлением, СтандартнаяОбработка)
выбор из подчиненного справочника ПунтыРазгрузки для ьекущего контрагента -
29 апреля 2026 в 9:30 #36862
Процедура ПунктРазгрузкиНачалоВыбора реализована так, что при выборе пункта разгрузки из подчиненного справочника ПунктыРазгрузки будет учитываться текущий контрагент, выбранный в форме. Если контрагент не выбран, откроется форма выбора без фильтра. Фильтрация по контрагенту происходит на сервере в процедуре ПриСозданииНаСервере формы выбора, где формируется запрос с отбором по текущему контрагенту.
Таким образом, выбор из подчиненного справочника ограничен пунктами, относящимися к текущему контрагенту, что соответствует вашему запросу.
&НаКлиенте
1С (Код)1234567891011121314151617Процедура ПунктРазгрузкиНачалоВыбора(Элемент, ДанныеВыбора, ВыборДобавлением, СтандартнаяОбработка)СтандартнаяОбработка = Ложь;Контрагент = ЭтаФорма.Элементы.Контрагент.Значение;Если Не ЗначениеЗаполнено(Контрагент) ТогдаОткрытьФорму("Справочник.ПунктыРазгрузки.ФормаВыбора");Возврат;КонецЕсли;Параметры = Новый Структура;Параметры.Вставить("Контрагент", Контрагент);ОткрытьФорму("Справочник.ПунктыРазгрузки.ФормаВыбора", Параметры, Элемент);КонецПроцедуры// В форме выбора справочника ПунктыРазгрузки в модуле формы на сервере в процедуре ПриСозданииНаСервере нужно добавить фильтр:
&НаСервере
1С (Код)1234567891011121314151617181920Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)Если ЗначениеЗаполнено(Параметры.Контрагент) ТогдаЗапрос = Новый Запрос;Запрос.Текст ="ВЫБРАТЬ| ПунктыРазгрузки.Ссылка|ИЗ| Справочник.ПунктыРазгрузки КАК ПунктыРазгрузки|ГДЕ| ПунктыРазгрузки.Контрагент = &Контрагент";Запрос.Текст = СтрЗаменить(Запрос.Текст, "ПунктыРазгрузки.Ссылка", "ПунктыРазгрузки.Ссылка КАК СсылкаПункта", 1);Запрос.УстановитьПараметр("Контрагент", Параметры.Контрагент);Запрос.Выполнить();КонецЕсли;КонецПроцедуры// Таким образом при открытии формы выбора ПунктыРазгрузки будет показываться только список пунктов, относящихся к текущему контрагенту.
// Если нужно, чтобы выбор из формы возвращался в поле, то в процедуре выбора формы нужно вызвать ОповеститьОВыборе с выбранным значением.
// Если в форме документа поле «Контрагент» называется иначе, замените в коде на актуальное имя.
// Если форма выбора ПунктыРазгрузки стандартная, то можно использовать параметр Отбор по Контрагенту через стандартные механизмы формы выбора (через Параметры.Отбор).
-
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.