Выбор из списка в ячейке табличного поля в Списке заказов покупателя

Версия для печатиPDF-версия

Возникла острая необходимость в ФормеСписка документа ЗаказПокупателя создать колонку в которой ячейки имели бы кнопку выбора из выпадающего списка, с соответствующим выбором.
Желательно выбором из элемента справочника.
Чтобы выглядело так же как на прилагаемой иллюстрации.

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

Процедура ПриОткрытии()

ЭлементыФормы.Список.Колонки.Вид.ЭлементУправления.КнопкаСпискаВыбора = Истина;

ЭлементыФормы.Список.Колонки.Вид.ЭлементУправления.СписокВыбора.Добавить("выбор 1");

ЭлементыФормы.Список.Колонки.Вид.ЭлементУправления.СписокВыбора.Добавить("выбор 2");

ЭлементыФормы.Список.Колонки.Вид.ЭлементУправления.СписокВыбора.Добавить("выбор 3");

КонецПроцедуры

 

Результат – нулевой. Даже внешний виз ячеик не меняется

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

Тот же вопрос и насчет форм списка справочников, хотя я принципиальной разницы не увидел.

Это поле связано с данными объекта?

Я новичок, поэтому опишу как задумывается и что имеется.

В настоящий момент реализовано следующим образом:

 

В форму заказа покупателя добавлено несколько полей выбора с кнопкой выбора.

Через выпадающий список выбираются наименование записанное в справочник.

(В каждом списке их немного и они очень редко меняются)

Эти значения выведены в колонку списка заказов покупателя (ФормаСписка).

По этим данным в колонках можно отсортировать или отфильтровать заказы покупателя.

 

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

 

На что уходит, порою много времени.

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

 

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

Далее создаёте обработчик события ПриАктивизацииСтроки у списка документов. Пишите там подобный код:

Процедура СписокПриАктивизацииСтроки(Элемент)
	ТекущаяСтрока = ЭлементыФормы.Список.ТекущаяСтрока;
	Реквизит1 = ?(ТекущаяСтрока = Неопределено, "", ТекущаяСтрока.Реквизит1);
КонецПроцедуры

Создаёте обработчик ПриИзменении у добавленного поля Реквизит1. Пишите там подобный код:

Процедура Реквизит1ПриИзменении(Элемент)
	ТекущаяСтрока = ЭлементыФормы.Список.ТекущаяСтрока;
	Если Не ТекущаяСтрока = Неопределено Тогда 
		ЗаказОбъект = ТекущаяСтрока.ПолучитьОбъект();
		Если ЗаказОбъект = Неопределено Тогда 
			Возврат;
		КонецЕсли;
		ЗаказОбъект.Реквизит1 = Реквизит1;
		РежимЗаписи = ?(ТекущаяСтрока.Проведен, РежимЗаписиДокумента.Проведение, РежимЗаписиДокумента.Запись);
		Попытка
			ЗаказОбъект.Записать(РежимЗаписи);
		Исключение
			Сообщить(ОписаниеОшибки());
		КонецПопытки;
	КонецЕсли;
КонецПроцедуры

Теперь этот реквизит можно менять без открытия формы документа.

Идею реализовал.

Все заработало.

Огромное спасибо.

 

Реализовал этот метод, за неимением изначального способа.

Есть только одна проблема:

Работает только из списка выбора поля.

А если к реквизиту привязать значения выбора из справочника, то не работает.

 

Реализовал так:

Процедура СписокПриАктивизацииСтроки(Элемент)
ТекущаяСтрока = ЭлементыФормы.Список.ТекущаяСтрока;
ЭтапыПродажи = ?(ТекущаяСтрока = Неопределено, "", ТекущаяСтрока.ЭтапыПродажи);
КонецПроцедуры
 
 
Процедура ЭтапыПродажиПриИзменении(Элемент)
 
ТекущаяСтрока = ЭлементыФормы.Список.ТекущаяСтрока;
Если Не ТекущаяСтрока = Неопределено Тогда 
ЗаказОбъект = ТекущаяСтрока.ПолучитьОбъект();
Если ЗаказОбъект = Неопределено Тогда 
Возврат;
КонецЕсли;
ЗаказОбъект.ЭтапыПродажи = ЭтапыПродажи;
РежимЗаписи = ?(ТекущаяСтрока.Проведен, РежимЗаписиДокумента.Проведение, РежимЗаписиДокумента.Запись);
Попытка
ЗаказОбъект.Записать(РежимЗаписи);
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;
КонецЕсли;
 
КонецПроцедуры
 

 

Есть только одна проблема:
Работает только из списка выбора поля.
А если к реквизиту привязать значения выбора из справочника, то не работает.

Можете поподробнее описать суть проблемы?

Сейчас реализованно так:

В форме списка создан реквизит: ЭтапыПродажи

На форме списка размещено поле выбора: ЭтапыПродажи , в данных которого выбран реквизит формы: ЭтапыПродажи 

У поля выбора записаны значения Строк списка выбора.

Так же реквизитах документа создан реквизит ЭтапыПродажи, который указан в данных поля выбора на форме (тоже ЭтапыПродажи), так же с прикрученными значениями Строк списка выбора.

 

Если в форме списка к полю выбора прикручивать реквизит документа, то работать перестает.

пробовал различные комбинации настроек.

Поле не активно.

Если в форме списка к полю выбора прикручивать реквизит документа, то работать перестает.

Вот этот момент можно поподробнее? Как прикручивали реквизит документа к полю выбора? У поля выбора задавали путь к данным? Или ещё как?

И зачем это нужно? Поле формы и реквизиты документов - это совершенно независимые объекты.

Зачем это нужно:
Так уж повелось, в этой компании используют сокращения, к которым сотрудники привыкли:
Оплачено-Пост.
Ворд - Пост.
Закупать – Пост
Закуплено – Пост
Собрано - Кл.
Отгружать ТК
И т.д. (всего 12)
 
В палитре свойств поля задал эти значения в список выбора.
 
Однако, приходят новые сотрудники, и чтобы не путались, всегда не плохо иметь в поле не только кнопку выпадающего списка, но и кнопку открыть,0020тобы открыть форму справочника, в которой на данный пункт имеется пояснения и инструкция.
 
Кроме того, все течет, все меняется. Если возникнет необходимость изменения, то куда проще в справочнике поменять поля элементов и описание, чем залезать в конфигуратор….
 
 
Как прикручивал:
В форме элемента проблем никаких не возникло.
В палитре свойств Поля, в графе данные выбрал в ДокументСписок - ранее созданный реквизит ЭтапыПродажи.
И в форме Элемента все работает.
Причем как с вариантом забивания значений в Строки списка выбора, так и быстрый выбор из справочника (если прикрутить к данным реквизита соответствующий справочник (так же в графе Данные палитры свойств реквизита документа))
 
А вот в форме списка так не получилось.
При всевозможных попытках, случайно создал реквизит формы и подключил его к полю (все так же в палитре свойств поля) и о чудо, все заработало…
Вчера попробовал еще раз подключить реквизит документа, вместо реквизита формы (в графе данные палитры свойств поля).
При этом реквизит в графе выглядит так:
Отбор.ЭтапыПродажи.Значение
Или
Отбор.ЭтапыПродажи
 
Соответственно в коде указывал Отбор.ЭтапыПродажи.Значение или Отбор.ЭтапыПродажи.
(в противном случае Служебные сообщения выдают: Переменная не определена (ЭтапыПродажи)
ЗаказОбъект.ЭтапыПродажи = <<?>>ЭтапыПродажи; (Проверка: Толстый клиент (обычное приложение))
 
Только запуская отладчик наблюдал мертвое поле….
 
У меня нулевой уровень знания программирования…
Возможно все просто, только я не разобрался…

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

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

Вы абсолюьно правы.

Это я по неопытности...