Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Установить координаты вывода списка значений для выбора (число прочтений - 1686 )
SuperZveruga
YaBB Newbies
*
Отсутствует


2001

Сообщений: 5
Зарегистрирован: 23. Ноября 2013
Пол: Мужской
Установить координаты вывода списка значений для выбора
23. Ноября 2013 :: 07:39
Печать  
Появилась задача создать документ с четырьмя таблицами.

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

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

Проблема возникает когда необходимо начать выбор значения сразу после интерактивного нажатия на кнопку "добавить новую строку". Если дважды кликнуть в соответствующую клетку таблицы, то меню выбора из списка значений появляется там где нужно. А если нажать кнопку добавить строку, то меню выбора типа появляется там где последний раз был курсор, т. е. под кнопкой. Нужно как-то заставить выводиться это меню под соответствующей клеткой в таблице значений.

Можно ли такое сделать с помощью FormEx?
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Установить координаты вывода списка значений для выбора
Ответ #1 - 23. Ноября 2013 :: 08:31
Печать  
Какой именно командой ( напиши здесь кусок кода) выбираешь из списка значений ?
  
Наверх
 
IP записан
 
SuperZveruga
YaBB Newbies
*
Отсутствует


2001

Сообщений: 5
Зарегистрирован: 23. Ноября 2013
Пол: Мужской
Re: Установить координаты вывода списка значений для выбора
Ответ #2 - 23. Ноября 2013 :: 08:34
Печать  
[quote author=Z1 link=1385192363/0#1 date=1385195503]Какой именно командой ( напиши здесь кусок кода) выбираешь из списка значений ?[/quote]

[code]Процедура ПриДвКликеПоПоступило(ТекСтрока, ТекКолонка)
     
     Если ТекСтрока > 0 Тогда
           ТекЗначение = Поступило.ПолучитьЗначение(ТекСтрока, ТекКолонка);
           Если ТекКолонка = "Номенклатура" Тогда // Наименование
                 СписокВидовМПЗ = СоздатьОбъект("СписокЗначений");
                 СписокВидовМПЗ.ДобавитьЗначение("Номенклатура", "Продукция");
                 СписокВидовМПЗ.ДобавитьЗначение("Номенклатура", "Полуфабрикат");
                 ВыбранныйВид = "";
                 ВыбраннаяПозиция = "";
                 Если СписокВидовМПЗ.ВыбратьЗначение(ВыбранныйВид,, ВыбраннаяПозиция,, 2) = 0 Тогда
                       УдалитьСтрокуТаблицыСНомером(Поступило, ТекСтрока);
                       Возврат;
                       
                 КонецЕсли;
                 
                 РеквизитПодбораПоступило = ТекКолонка;
                 Если ВыбраннаяПозиция = 1 Тогда // продукция
                       КонтекстПодбораПоступило = Перечисление.ТипыНоменклатуры.Продукция;
                       ОткрытьПодбор("Справочник.Номенклатура","ГотоваяПродукция", КонтекстПодбораПоступило, 0, ТекЗначение);
                 Иначе // полуфабрикат
                       КонтекстПодбораПоступило = Перечисление.ТипыНоменклатуры.Полуфабрикат;
                       ОткрытьПодбор("Справочник.Номенклатура","ГотоваяПродукция", КонтекстПодбораПоступило, 0, ТекЗначение);
                 КонецЕсли;
                       
           КонецЕсли;
     КонецЕсли;
     
КонецПроцедуры // ПриДвКликеПоПоступило
[/code]

Вот там команда "Если СписокВидовМПЗ.ВыбратьЗначение..."
[code]Процедура ДобавитьСтрокуТаблицыПоКнопке(Табл, НаименованиеТаблицы)
           
     Табл.НоваяСтрока();
     Табл.НомСтр = Табл.НомерСтроки;
     Табл.ТекущаяСтрока(Табл.НомерСтроки);
     Если НаименованиеТаблицы = "Поступило" Тогда
           Табл.ТекущаяКолонка("Номенклатура");
                       
           ПриДвКликеПоПоступило(Табл.НомерСтроки, "Номенклатура");
     ИначеЕсли НаименованиеТаблицы = "Израсходовано" Тогда
           ПриДвКликеПоИзрасходовано(Табл.НомерСтроки, "Материалы");
     ИначеЕсли НаименованиеТаблицы = "Табель" Тогда
           ПриДвКликеПоТабель(Табл.НомерСтроки, "Сотрудник");
     КонецЕсли;
     
КонецПроцедуры // ДобавитьСтрокуТаблицыПоКнопке
[/code]

Процедура "ДобавитьСтрокуТаблицыПоКнопке" вызывается при нажатии кнопки. Она следом вызывает процедуру при двойном клике по таблице. Есть еще желание повесить на эту кнопку обработку нажатия клавиши Ins, когда активна соответствующая закладка с таблицей.

Процедура "ПриДвКликеПоПоступило" обрабатывает редактирование клеток таблицы. Вот с этой процедурой будет куча мороки, мне ведь все колонки в ней нужно обработать. А, к примеру, в таблице табель их около 40.

Ну или кто предложит другой способ редактирования значений в клетках ТаблицыЗначений.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать