При работе в 1С:Предприятии 8 в обычных формах часто возникает потребность ускорить рутинные операции. Вместо того чтобы каждый раз проваливаться в форму элемента для изменения какого-либо реквизита, гораздо удобнее редактировать данные непосредственно в ячейке списка. Рассмотрим, как это можно реализовать для справочников и документов.
Если ваша задача заключается в том, чтобы сделать выбор значений из справочника более быстрым, первым делом стоит обратить внимание на встроенные возможности платформы. В 1С существует свойство объекта метаданных, которое позволяет значительно упростить жизнь пользователям.
Справочник.Быстрый выбор и установите его значение в Истина.После активации этого свойства, при попытке выбора значения этого справочника в других формах, система будет предлагать список элементов непосредственно в выпадающем окне, не открывая полноценную форму выбора или форму элемента. Это базовый механизм платформы, который работает на уровне метаданных.
Ситуация с документами сложнее, так как свойство Быстрый выбор для них не предусмотрено. Более того, изменение данных в документе требует его сохранения или проведения. В этом случае нам поможет обработка событий табличного поля на форме.
Чтобы реализовать выбор прямо в колонке списка, необходимо перехватить событие Выбор у табличного поля, которое отображает ваш список документов. Давайте разберем этот процесс по шагам:
ТабличноеПоле.Выбор и создайте обработчик.ВвестиЗначение() для интерактивного получения нового значения от пользователя.Ниже приведен пример реализации логики обработчика события Выбор:
Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
// Проверяем, что клик был по нужной колонке
Если Поле.Имя = \"НаименованиеНужнойКолонки\" Тогда
СтандартнаяОбработка = Ложь; // Отменяем стандартное открытие формы
ВыбранноеЗначение = Неопределено;
ТипЗначения = Новый ОписаниеТипов(\"СправочникСсылка.ВашСправочник\");
Если ВвестиЗначение(ВыбранноеЗначение, \"Выберите значение\", ТипЗначения) Тогда
// Присваиваем выбранное значение текущим данным строки
Элемент.ТекущиеДанные.НужныйРеквизит = ВыбранноеЗначение;
// Сохраняем изменения в базе данных
ДокументОбъект = Элемент.ТекущиеДанные.Ссылка.ПолучитьОбъект();
ДокументОбъект.НужныйРеквизит = ВыбранноеЗначение;
ДокументОбъект.Записать(РежимЗаписиДокумента.Запись);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Иногда разработчики сталкиваются с тем, что даже при настройке всех параметров, система все равно открывает не ту форму, которую хотелось бы. Разберем, почему это происходит и как это исправить:
Форма выбора. Если она отсутствует, платформа по умолчанию откроет форму списка, что не всегда удобно из-за избыточности интерфейса.РежимВыбора в значение Истина. Это обеспечит корректную работу при возврате выбранного значения в вызывающую форму.Записать().Применяя данные подходы, вы сможете создать более динамичный и быстрый интерфейс для пользователей. Работа с ТекущимиДанными табличного поля позволяет гибко управлять состоянием списка, обеспечивая при этом необходимый контроль над записью и проведением объектов.