1с обработка выбора в табличной части

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

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

Результат подбора будет доступен в обработчике события ОбработкаВыбора формы документа или элемента формы (в зависимости от того, чему мы подчиним форму справочника при открытии). Событие ОбработкаВыбора в форме документа будет вызвано в двух случаях:

  • когда в форме справочника будет выполнен интерактивный выбор;
  • когда в форме справочника будет вызван метод ОповеститьОВыборе .

Одиночный подбор

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

Откроем форму документа ПриходнаяНакладная , создадим команду Подбор и назначим для нее обработчик:

В этой процедуре мы открываем форму выбора для справочника Номенклатура , указывая, что она подчинена таблице Материалы формы документа ПриходнаяНакладная ( Элементы.Материалы ). При выборе из формы выбора справочника выбранное значение будет передано в обработчик события ОбработкаВыбора таблицы формы Материалы , так как она является владельцем открытой формы выбора.

Поэтому откроем палитру свойств таблицы Материалы и создадим обработчик события ОбработкаВыбора :

В этой процедуре мы добавляем новую строку в таблицу Материалы и присваиваем колонке Материал в новой строке выбранное в форме выбора справочника значение. Это значение передается в обработчик события в параметре ВыбранноеЗначение .

Множественный подбор

При множественном подборе форма справочника будет открыта до тех пор, пока пользователь не закроет ее интерактивно или не будет вызван метод формы Закрыть() .

Обработчик команды Подбор :

Обработчик события ОбработкаВыбора остается без изменений.

Подбор с использованием множественного выбора

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

Поэтому для того, чтобы в форме списка справочника Номенклатура можно было не только отметить, но и выбрать сразу несколько элементов, мы воспользуемся одним из параметров расширения формы динамического списка — МножественныйВыбор .

Обработчик команды Подбор :

Обработчик события ОбработкаВыбора :

Множественный подбор с использованием множественного выбора

Последний способ подбора сочетает в себе оба рассмотренных ранее способа. Мы будем отмечать сразу несколько элементов справочника и подбирать их в документ без закрытия формы выбора. Затем снова отмечать несколько элементов справочника и подбирать их в документ. Для этого нам будет необходимо при открытии формы выбора установить оба параметра: ЗакрыватьПриВыборе и МножественныйВыбор .

Обработчик команды Подбор :

Обработчик события ОбработкаВыбора остается без изменений.

Использование метода ОповеститьОВыборе()

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

Метод ОповеститьОВыборе() посылает оповещение владельцу формы о выполнении выбора или подбора, передает ему выбранное значение и закрывает форму, если она открыта не в режиме множественного выбора.

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

Справка

ТабличноеПоле.ДобавитьСтроку()

Добавляет строку в табличное поле, аналогично выполнению команды «Добавить».

  • Если табличное поле связано с таблицей или деревом значений, метод добавляет строку в таблицу или дерево значений (аналогично соответствующим методам этих объектов).
  • Если табличное поле связано со списком объектов, хранимых в базе данных, метод начинает редактирование нового объекта этого списка. (Например, список объектов в форме списка справочника, или документа).
  • Если табличное поле связано с набором записей или табличной частью, то метод начинает редактирование новой записи. (Например, список записей в форме списка регистра сведений; табличная часть документа или справочника).

Доступность: Толстый клиент.

ДанныеФормыКоллекция.Добавить()

Добавляет элемент в конец коллекции и возвращает его в качестве результата метода. Возвращаемое значение: ДанныеФормыЭлементКоллекции .

Доступность: тонкий клиент, веб-клиент, сервер, толстый клиент, мобильное приложение(клиент), мобильное приложение(сервер).

Предположим, в одной табличной части у нас список всех товаров, и нам надо некоторые из них перенести в другую.

Есть несколько способов решения данной задачи:

  1. Добавить на форму кнопку при клике по которой будет переносится выделенная строка;
  2. Реализовать обработку выбора двойным щелчком.

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

В результате в списке событий появится возможность установить функцию события выбора, которая будет вызываться при двойном щелчке мыши или нажатии Enter. Для нашего примера функция будет выглядеть следующим образом:

Bell 19.03.2014 11:58
Прочитано: 11529
Здравствуйте
Избавляюсь от лишних процедур

Открываю форму возвращаю ВыбранноеЗначение через ОбработкуВыбора Элемента (Договоры)
ВСЕ РАБОТАЕМ

ВОПРОС патаюсь возвратить ВыбранноеЗначение через ОбработкуВыбора(ВыбранноеЗначение, ИсточникВыбора) формЫ
Что не так. Вообще не реагирует.

& Код 1C v 8.х Изменено 19.03.14 16:48:22

Yandex
Возможно, вас также заинтересует
Mokey 20.03.2014 11:44
Ответ № 1
Потому что в форме выбора договора надо активировать процедуру ОповеститьОВыборе()
Bell 21.03.2014 12:26
Ответ № 2
Пошло
Есть одна загвоздка

В форме документа ТабличнаяЧасть Договоры
Наименование — Это ссылка на справочник договоры

Понравилась статья? Поделиться с друзьями:
Vkontakte.INFO
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: