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

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

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

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

Подбор и таблицы значений

  • Автор темы Dred
  • Дата начала
D

Dred

Всем Доброе время суток!!!
Вообщем требуется, что бы при кликаньи на кнопочку на форме отчета, открывалась форма справочника товаров, на которой помимо таблицы со значениями справочника, есть пустая таблица значений. В эту пустую таблицу значений при клике на значение справочника должно заноситься название товара. Потом при клике на кнопку эти значения из ТЗ должны переноситься в список значений расположенный на форме отчета и закрываться форма справочника.

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

Процедуры отчета
Код:
Процедура ОбработкаПодбора(ТабНом,ФормаТаблицы)
Номенклатура.ДобавитьЗначение(ТабНом.Номенклатура);
КонецПроцедуры	

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

Справочник:
Код:
Процедура ПриОткрытии()
ТабНом.НоваяКолонка("Номенклатура");
КонецПроцедуры

Процедура ПриВыбореСтроки()  
ТабНом.НоваяСтрока();
ТабНом.Номенклатура=Наименование;
КонецПроцедуры
 
K

kaa

Посмотрите типовую ТиС как реализован подбор в документы через кнопку Подбор
 
D

Dred

kaa
да я в первую очередь посмотрел ))) но что то не особо вьхел, там как то все замудренно.

Как я понимаю для того чтобы сделать что я хочу необходимо 3 процедуры и строчек 10 кода?
 
N

NightWolf

Попробуй так:
Процедура ОбработкаКликаПоТЗ()
Перем ПараметрыВыбора;

Если ТабНом.ТекущаяСтрока()=0 Тогда
Возврат;
КонецЕсли;
ПараметрыВыбора = ТабНом.Номенклатура;
Форма.ВыполнитьВыбор(ПараметрыВыбора);

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

kaa

ПоКнопкеПодбор()
ОткрытьПодбор(Справочник.Номенклатура);//далее по справке
КонецПроцедуры

//нужна форма списка справочника с таблицей значений как в ТиС если есть используй ,нет создавай
в ней в процедуре ПриВыбореСтроки() описываешь заполнение таблицы и при выходе из формысписка передаешь в параметр

ОбработкаПодбора(Элем,КонтФормы)
Если ТипЗначенияСтр(Элем) = "ТаблицаЗначений" Тогда
Элем.ВыбратьСтроки();
Пока Элем.ПолучитьСтроку()=1 Тогда
//заполняем таблицу
КонецЦикла;
КонецЕсли;
 
P

puh14

А мона через открытии модально формы справочника , передавая в тз формы справочника текущюю ТЗ, там по кликам на строках добавлять в тз формы справочника новые строчки, а по закрытии формы - загружать изменную в справочнике ТЗ обратно.
 
S

SeverBap

kaa
реально написал, конечно я не знаю конфигурацию (как и мы все), но посмотрел комлексную в которой есть вот что в справочнике номенклатуры:
Код:
// ВыполнитьЗапись()
//
// Параметры:
// Нет
//
// Возвращаемое значение:
// Нет
//
// Вызывается из формул элементов диалога:
// Кнопка ОК
//
// Описание:
// 	Активизирует в документе процедуру ОбработкаПодбора и передает ей в качестве
// 	выбранного значения список значений. Параметр "ПоКнопкеПодбор" показывает,
// что подбор был инициирован кнопкой подбор.
//
Процедура ВыполнитьЗапись()

Перем ПараметрыВыбора;

ПараметрыВыбора = СоздатьОбъект("СписокЗначений");
ПараметрыВыбора.ДобавитьЗначение(ЕстьВидТМЦ	, "ЕстьВидТМЦ");
ПараметрыВыбора.ДобавитьЗначение(ЦенаВподборе , "ЦенаВподборе");
ПараметрыВыбора.ДобавитьЗначение(ТипЦен		, "ТипЦен");	 
ПараметрыВыбора.ДобавитьЗначение(ТаблицаПодбора, "ТаблицаПодбора");
ПараметрыВыбора.ДобавитьЗначение(1			 , "ПоКнопкеПодбор");
Форма.ВыполнитьВыбор(ПараметрыВыбора);
ТаблицаПодбора.УдалитьСтроки(); // иначе при выходе еще раз можем перенести

КонецПроцедуры //ВыполнитьЗапись()
нам интересно значит вот это:
Код:
ПараметрыВыбора.ДобавитьЗначение(ТаблицаПодбора, "ТаблицаПодбора");
В отчете значит нужно в процедуре обработка подбора проработать:
Код:
Процедура ОбработкаПодбора(ВыбЗнач, КонтФормыПодбора)
Если ТипЗначенияСтр(ВыбЗнач)="СписокЗначений" Тогда
ТаблицаКотораяБылаЗаполненаПриПодборе=ВыбЗнач.Получить("ТаблицаПодбора");
ТаблицаКотораяБылаЗаполненаПриПодборе.ВыбратьСтроки();
Пока ТаблицаКотораяБылаЗаполненаПриПодборе.ПолучитьСтроку()=1 Цикл
МойСписок.ДобавитьЗначение(ТаблицаКотораяБылаЗаполненаПриПодборе.Номенклатура);
КонецЦикла;
КонецПроцедуры // ОбработкаПодбора()
Писал грубо, сам переделаешь под свое что тебе надо! ;)
 
S

SeverBap

Dred хоть написал бы то это или нет!!!!
 
Мы в соцсетях:

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