• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

Отображение списка справочника

  • Автор темы Kiddy
  • Дата начала
K

Kiddy

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

Прорцедура ПоказатьСкидку()
Скидка=СоздатьОбъект("Справочник.СкидкиКлиента");
Скидка.ИспользоватьВладельца(Таблица.Контрагент);
Скидка.Выбрать("Скидки",);
КонецПроцедуры

Всё отображается красиво, только отсутствует возможность редактировать записи (чего собственно я и добиваюсь).

Попробовал вместо Скидка.Выбрать("Скидки",); использовать ОткрытьФорму("Справочник.СкидкиКлиента",Контекст); - отображается форма с возможностью редактировать, но отсутствуют записи поскольку не задан владелец.

Попробовал ОткрытьФорму(Скидка,Контекст); - форма вообще не отображается.

Подскажите, плиз, где собака порылась.

Заранее спасибо, Валера.
 
K

kaa

ОткрытьФорму("Справочник.СкидкиКлиента",Контекст); в место Контекст надо подставить владельца, тоесть получить Таблица.Контрагент
 
K

Kiddy

Сделал

ОткрытьФорму("Справочник.СкидкиКлиента",Таблица.Контрагент)

к сожалению список отображается пустой !!!! На шапке надпись - не задан элемент владелец.

Я что-то не так сделал ?
 
P

puh14

посмотри процедуру при открытии() в форме Справочник.СкидкиКлиента - что там написано?
 
K

Kiddy

Процедура ПриОткрытии()
ВнешнийКонтекст = Форма.Параметр;
Форма.КнопкаПоУмолчанию("КнОК");
СохранениеПериодическихРеквизитов(2, "*");
ТоварнаяГруппа.ВыборГруппы(1);
КонецПроцедуры
 
V

vbs

А ты уверен, что Таблица.Контрагент является именно элементом справочника "Контрагенты", а не его наименованием, к примеру или группой этого справочника ?
Если таки да, есть предмет для обсуждения, в ином случае
Скидка=СоздатьОбъект("Справочник.СкидкиКлиента");
Скидка.ИспользоватьВладельца(Таблица.Контрагент);
Скидка.Выбрать("Скидки",);

100% сработает
 
P

puh14

переделай так

Процедура ПриОткрытии()
ВнешнийКонтекст = Форма.Параметр;
Попытка //на случай, если передаст не справочник, а число например
Если ВнешнийКонтекст.Вид() = "Контрагенты" Тогда // если у тебя справочник клиентов называется контрагенты
ИспользоватьВладельца(ВнешнийКонтекст);
КонецЕсли;
Исключение
КонецПопытки;
Форма.КнопкаПоУмолчанию("КнОК");
СохранениеПериодическихРеквизитов(2, "*");
ТоварнаяГруппа.ВыборГруппы(1);
КонецПроцедуры
 
K

kaa

подозреваю что таблица это ТаблицаЗначений

Процедура ОбработкаКликаПоТаблица(ТекСтр,Колонка)
Контра = Таблица.ПолучитьЗначение(ТекСтр,"Контрагент");
Если Контра.Вид() = "Контрагенты" Тогда
ОткрытьФорму("Справочник.СкидкиКлиента",Таблица.ПолучитьЗначение(ТекСтр,"Контрагент"));
Иначе
Сообщить("Фиг Вам!!!");
КонецЕсли;
КонецПроцедуры

В Таблице на форме в свойствах ОбработкаКликаПоТаблица(Таблица.ТекущаяСтрока(),Таблица.ТекущаяКолонка())
 
P

puh14

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

Kiddy

Всем спасибо за помощь.

Прошёл вариант с изменением процедуры ПриОткрытии().

Большое спасибо.

Народ, объясните, плиз, "для особо одарённых" как ВАМ плюсиков добавить.... - и + картинки. А при нажатии на число показывается общий рейтинг . Кнопки ПОДНЯТЬ и ЖАЛОБА тоже особого эффекта не приносят (или я его не замечаю)
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!