Связь параметров выбора между полями двух разных таблиц справочника
Нужна помощь! Есть справочник с двумя табличными частями.
Необходимо настроить связь параметров выбора поля "Номенклатура" одной табличной части на поле "Номенклатура" другой табличной части, чтобы в конечном итоге во второй табличной части можно было выбрать номенклатуру только ту, которая находится в первой табличной части.
Я вижу это примерно так, но это не работает:
Необходимо настроить связь параметров выбора поля "Номенклатура" одной табличной части на поле "Номенклатура" другой табличной части, чтобы в конечном итоге во второй табличной части можно было выбрать номенклатуру только ту, которая находится в первой табличной части.
Я вижу это примерно так, но это не работает:
НоваяСвязь = Новый СвязьПараметраВыбора("Отбор.Ссылка", "НоменклатураИзПервойТаблицы");
НовыйМассив = Новый Массив;
НовыйМассив.Добавить(НоваяСвязь);
НовыеСвязи = Новый ФиксированныйМассив(НовыйМассив);
Элементы.ГруппаСтраницы.ПодчиненныеЭлементы.ВтораяТаблица.ПодчиненныеЭлементы.ВтораяТаблицаСсылкаНаПервуюТаблицу.СвязиПараметровВыбора = НовыеСвязи;
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) А если в первой табличной части удалить строку? Или поменять один товар на другой? Боюсь, что связями параметров выбора особо здесь ничего не сделаешь. Если "Номенклатура из первой" это у вас реквизит формы, то при каждом позиционировании на первой ТЧ Вы будете получать не совсем ожидаемое поведение. Здесь необходимо, скорее всего:
1. процедура при окончании редактировани и после удаления для первой ТЧ, в которой Вы будете формировать массив номенклатуры для второй ТЧ (в случае удаления необходимо будет удалять позиции из второй ТЧ)
2. Для второй ТЧ для событие начало выбора, автоподбор и т.д (или при изменении, что намного проще) проверять, входит ли номенклатура в массив, полученный в пункте 1.
1. процедура при окончании редактировани и после удаления для первой ТЧ, в которой Вы будете формировать массив номенклатуры для второй ТЧ (в случае удаления необходимо будет удалять позиции из второй ТЧ)
2. Для второй ТЧ для событие начало выбора, автоподбор и т.д (или при изменении, что намного проще) проверять, входит ли номенклатура в массив, полученный в пункте 1.
(3)
1. При окончании редактирования и после удаления формируете массив номенклатуры (ТЧ1.Выгрузить().ВыгрузитьКОлонку("Номенклатура");
1.а)
Это при изменении в таблице 1
Во второй таблице.
Для упрощения (моего, чтобы много не писать) ставим в колонке номенклатуры запрет редактирования текста (чтоб не писать автоподбор и окончание ввода текста), А в начало выбора ставим
Как-то так.
1. При окончании редактирования и после удаления формируете массив номенклатуры (ТЧ1.Выгрузить().ВыгрузитьКОлонку("Номенклатура");
1.а)
Запрос = Новый Запрос;
Запрос.Текст =
"Выбрать
Все поля из второй таблицы
Из &Таблица2 Как Таблица2
Поместить Таблица2
;
Выбрать
Все Поля из Таблицы2 Где Таблица2.Номенклатура в (&МассивНоменклатуры)
Запрос.УстановитьПараметр(ТАблица2, Таблица2)
Запрос.УстановитьПараметр(МассивНоменклатуры, Массив номенклатуры из пункт 1
Таблица2.Загрузить(Запрос.выполнить.Выгрузить
ПоказатьЭто при изменении в таблице 1
Во второй таблице.
Для упрощения (моего, чтобы много не писать) ставим в колонке номенклатуры запрет редактирования текста (чтоб не писать автоподбор и окончание ввода текста), А в начало выбора ставим
СтандартнаяОбработка = ЛОЖЬ
ПараметрыФормы = Новый Структура("Отбор", Новый Структура("Ссылка", МассивСсылок из пункта1))
ОткрытьФОрму(Справочник.Номенклатура.ФормаВыбора, ПараметрыФОрмы, Элемент).
Как-то так.
(1)
А вот это что ?...извиняюсь ...
Вы хотите задать отбор по чему ???
"НоменклатураИзПервойТаблицы")
А вот это что ?...извиняюсь ...
Вы хотите задать отбор по чему ???
Из справки |
---|
ПутьКДанным (DataPath)
Использование: Только чтение. Описание: Тип: Строка. Путь к полю формы клиентского приложения, или объекту метаданных, или свойству объекта метаданных, откуда будут браться данные для отбора. Пример: "Элементы.ТабличнаяЧасть1.ТекущиеДанные.НомерСтроки" - указывает на поле НомерСтроки табличной части ТабличнаяЧасть1 в форме клиентского приложения. "Наименование" - указывает на свойство "Наименование" - свойство объекта метаданных, например какого-нибудь Справочника. |
(3)Примерно так
Связи параметров никак не настроите по таб части
Опять же встроенная справка всегда вам в помошь
&НаКлиенте
Процедура ТоварыНоменклатураНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
Стандартная обработка = Ложь;
ДанныеВыбора = (Заполняете это списком значений номенклатур из первой таблицы);
КонецПроцедуры
Связи параметров никак не настроите по таб части
Опять же встроенная справка всегда вам в помошь
НачалоВыбора |
---|
НачалоВыбора (StartChoice)
Синтаксис: НачалоВыбора(<ДанныеВыбора>, <СтандартнаяОбработка>) Параметры: <ДанныеВыбора> Тип: СписокЗначений. В обработчике можно сформировать и передать в этом параметре данные для выбора. При этом параметр <СтандартнаяОбработка> должен быть установлен в Ложь. <СтандартнаяОбработка> Тип: Булево. В данный параметр передается признак выполнения стандартной (системной) обработки события. Если в теле процедуры-обработчика установить данному параметру значение Ложь, стандартная обработка события производиться не будет. Значение по умолчанию: Истина. |
(7) Спасибо, это именно то что нужно!
Сделал так:
Сделал так:
&НаКлиенте
Процедура ТаблицаДобавленияДляНоменклатурыНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ДанныеВыбора = СписокНоменклатуры();
КонецПроцедуры
Функция СписокНоменклатуры()
ТЗНом = Объект.УсловиеНоменклатура;
ТЗНомВыгр = ТЗНом.Выгрузить();
СписокНом = Новый СписокЗначений;
Для Каждого Стр Из ТЗНомВыгр Цикл
СписокНом.Добавить(Стр.Номенклатура);
КонецЦикла;
Возврат СписокНом;
КонецФункции
Показать
(9)При начале выбора нельзя использовать серверные вызовы.
Лучше список номенклатуры сделать реквизитом формы и заполнять/актуализировать при необходимости.
Например, если у вас табличные части на разных страницах, то можно при смене страницы на страницу с ТЧ2 формировать список номенклатуры для выбора.
Лучше список номенклатуры сделать реквизитом формы и заполнять/актуализировать при необходимости.
Например, если у вас табличные части на разных страницах, то можно при смене страницы на страницу с ТЧ2 формировать список номенклатуры для выбора.
(15)Скорее всего
Ну и имхо, если у вас по сценарию работы сначала заполняется одна табличная часть, а потом пользователь переходит ко второй табличной части, то при выборе каждой номенклатуры получать список который не изменился - а зачем?
потому что это понесет за собой что то
, т.к. код то обычно работает. Что именно будет это что-то можно только гадать.
Ну и имхо, если у вас по сценарию работы сначала заполняется одна табличная часть, а потом пользователь переходит ко второй табличной части, то при выборе каждой номенклатуры получать список который не изменился - а зачем?
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот