Версия для печати темы (https://pro1c.org.ua/index.php?s=910949bccfccd7d040cc60abc1cf73fe&showtopic=31705)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование обычных форм 1С 8.2 и не интерфейсной логики _ Вывод информации по клику на элемент

Автор: Yevhenii 07.09.16, 10:10

Здравствуйте уважаемые форумчане. Прошу помощи опытных людей. У меня 1С:Предприятие 8.2 (8.2.19.130) Конфигурация: "Управление Торговым Предприятием для Украины" редакция 1.2 от ABBY. Обычное приложение.
Стоит задача, сделать обработку на которой выводить список Контрагентов и по клику на Контрагента рядышком(не в новом окне желательно) выводить информацию по операциям с ним и по расчётам.
Где что хранить и что куда писать мне понятно. Но не понятно как реализовать на неуправляемой форме собственно действие ВыбралКонтрагента-> ВыводИнформации, перешел следующего->Инфа обновилась для следующего. Если с выводом все ясно, то не ясно в какой элемент формы поместить список Конртагентов чтоб отрабатывался "Клик" или что то типа "Enter" что бы можно было в это событие залепить процедуру с выводом.
Раньше кодил на C#, так вот там есть замечательные элемент ListBox с событием Click или DoubleClick в котором можно отловить индекс и значение кликнутого элемента и сделать по нему отбор и отображение информации. Как сделать то же в 1С 8.2?

Автор: Vofka 07.09.16, 10:25

Добавляете на форму элемент управления ТабличноеПоле. В этом элементе управления в свойстве ТипЗначения указываете СправочникСписок.Контрагенты. Далее прописываете нужный обработчик события для нужного события. Click = ПриАктивизацииСтроки, DoubleClick = Выбор. В событии Выбор, если не хотите, чтобы открывалась карточка контрагента, а выполнялся только ваш код, то в обработчике этого события СтандартнаяОбработка нужно установить в Ложь.

Автор: Yevhenii 07.09.16, 10:49

Vofka @ Сегодня, 11:25 * ,
Спасибо большое за совет.
Если не затруднит, подскажите ещё как сделать отбор в этот список, ну что б к примеру он формировался только по Контрагентам по группе Поставщики или только по группе Покупатели?

Автор: Vofka 07.09.16, 12:18

ЭлементОтбора = ИмяТабличногоПоля.Отбор.Добавить("Родитель");
ЭлементОтбора.Использование = Истина;
ЭлементОтбора.ВидСравнения = ВидСравнения.Равно;
ЭлементОтбора.Значение = СсылкаНаПапкуПоставщиков;

Автор: Yevhenii 08.09.16, 10:19

Vofka @ Вчера, 13:18 * ,
Извиняюсь за надоедливось, но в какое событие писать код отбора?
А то, для открытия СпискаВыбора со справочника ФизЛица по нужному мне параметру написал, всё работает. А с ТабличнымПолем не могу вьехать, на какой стадии туда попадают данные и когда(в каком событии) должен писаться отбор.

Автор: Vofka 08.09.16, 13:30

Цитата(Yevhenii @ 08.09.16, 11:19) *
в какое событие писать код отбора?

Становится уже сложно угадывать. А что у вас есть и в какой момент вы хотите, чтобы отбор срабатывал?

Автор: Yevhenii 08.09.16, 14:47

Vofka @ Сегодня, 14:30 * ,

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

Процедура ПриОткрытии()
    ЭлементыФормы.ТабличноеПоле1.Значение.Отбор.МестоРаботы.Использование = Истина;
    ЭлементыФормы.ТабличноеПоле1.Значение.Отбор.МестоРаботы.ВидСравнения =  ВидСравнения.Равно;
    ЭлементыФормы.ТабличноеПоле1.Значение.Отбор.МестоРаботы.Значение = Справочники.МестоРаботы.НайтиПоНаименованию("бла-бла-бла");
КонецПроцедуры


P.S. делал для другой обработки, выводил список сотрудников из справочника по отметке МестоРаботы из соответствующего справочника, и далее при активации строки рядышком в ТабличноеПоле2 вывожу записи по примитивному регистру накопления с некими данными при помощи того же отбора только значение беру с выделенной строки ТабличногоПоля1

Р.P.S. Как я уже писал выше, я начинал кодить на С# и поэтому как то на автомате (по умолчанию что ли) ищу способы сделать так как бы я делал в Visual Studio, а оно далеко не всегда соответствует друг другу.

Автор: Vofka 08.09.16, 15:07

Если отбор нужно наложить и чтобы он работал на протяжении всего сеанса работы с формой, то можно сделать, как вы выше написали, в ПриОткрытии().

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua