|
v7: Табличное поле: Не пойму как *выбрать* строковый реквизит... | ☑ | ||
---|---|---|---|---|
0
Zhuravlik
29.01.13
✎
00:47
|
Доброго времени суток) Решил попробовать заменить таб. часть дока табличным полем. Напоролся на такой вопрос: есть строковый реквизит, если я его редактирую в диалоге тч документа, то ставлю там галку "Имеет кнопку выбора". Потом в ПриНачалеВыбораЗначения() использую метод "Выбрать()" из справочника, и подставляю наименование в реквизит. Пользователь может отказаться от выбора, и ввести что-нибудь свое (НЕ из справочника).
Захотел это повторить в таб. поле. Вот я в коде указал флагом, что мне там нужна кнопка выбора, кнопка появилась, запускается обработчик в ПриНачалеВыбораЗначения(), и я в тзТабЧасть (которую в ПриОткрытии() заранее получил) запоминаю это значение. А вот табличное поле мне его показывает только после того, как я закончил редактировать ячейку. А мне так не нужно, мне нужно чтобы я выбрал, в ячейке появился нужный текст, и ячейка осталась в фокусе. Т.е. чтобы подвердить конец редактирования нужно нажать ентер, так же как и в тч документа. Подумал, что можно менять текст в самой ячейке ТП, но он доступен только в ОформленииЯчейки, а она доступна только в событии ОбновитьСтроки(). Подскажите что-нибудь? |
|||
1
ADirks
29.01.13
✎
06:46
|
Видимо, не туда подставляешь
Процедура ПриНачалеВыбораЗначения(Идентификатор, ФСО) Если Идентификатор = "ТЧ_АртикулВнешний" Тогда ФСО = 0; спр = СоздатьОбъект("Справочник.Артикулы"); спр.ИспользоватьВладельца(тпТЧ.ТекущиеДанные.Материал); спр.НайтиПоНаименованию(тпТЧ.ТекущиеДанные.АртикулВнешний); Конт = ""; ОткрытьПодбор("Справочник.Артикулы",, конт, 0, спр.ТекущийЭлемент()); Конт.ИспользоватьВладельца(тпТЧ.ТекущиеДанные.Материал); Конт.АктивизироватьОбъект(спр.ТекущийЭлемент()); КонецЕсли; КонецПроцедуры Процедура ОбработкаВыбораЗначения(ВыбЗнач, Идентификатор, ФСО) Если Идентификатор = "ТЧ_АртикулВнешний" Тогда ФСО = 0; Сам(Контекст).ТЧ_АртикулВнешний = ""+ВыбЗнач; КонецЕсли; КонецПроцедуры Обрати внимание, именно Сам(Контекст).ТЧ_АртикулВнешний = ... |
|||
2
ADirks
29.01.13
✎
07:04
|
и на всякий: ТЧ_АртикулВнешний - это имя поля, которое я указываю в ТП::РедактироватьЗначение()
тпТЧ.РедактироватьЗначение(нСтрТП, КолонкаТП, ТипРегиона, Значение, Длина, 3, "ТЧ_"+ИмяКол, "0x100020"); На время жизни это самое обычное поле ввода на форме, со всеми вытекающими. |
|||
3
Zhuravlik
29.01.13
✎
09:13
|
(2) А что значит Сам(Контекст)? Уже видел неоднократно, это для чего? Какой-то аналог глВзятьКонтекст?
|
|||
4
Zhuravlik
29.01.13
✎
09:18
|
+ Через глВзятьКонтекст(Контекст) получилось)
|
|||
5
Zhuravlik
29.01.13
✎
09:36
|
(2) А подскажите, вы мне пример показывали в прошлой ветке
В ПослеРедактирования... там было: тз.ПолучитьСтрокуПоНомеру(НомерСтрокиТП) А если я так делаю: //====================================================================== Процедура ТаблПоле_ПриАктивизацииЯчейки(ТП) //Сопрягаю табличное поле и тч документа нс = ТП.ТекущаяСтрока; Если ПустоеЗначение(нс) = 1 Тогда Возврат; КонецЕсли; тзТабЧасть.ПолучитьСтрокуПоНомеру(нс); КонецПроцедуры // ТаблПоле_ПриАктивизацииЯчейки Это нормально будет работать? |
|||
6
ADirks
29.01.13
✎
09:44
|
(3) Ну, по функционалу - аналог, а так - нет :)
Тебя вот не тошнит с глВзятьКонтекст()? Меня тошнит. Глагол в названии ф-ции считаю моветоном в 99% случаев. Префикс "гл" - абсолютно неинформативная мерзость. Контекст? Какой мля контекст?... нихера не понятно... А Сам() - коротко и понятно. (5) Конечно будет, куда оно денется. Если в событие не передаётся номер строки/колонки, то берём их из свойств ТП. |
|||
7
Zhuravlik
29.01.13
✎
09:49
|
(6) База сейчас полностью типовая, хочу минимализировать свои внедрения. Тошнит-не тошнит, пусть будет) У меня глобальник сейчас весь по полочкам, все мои функции в отдельном модуле, если обновлять - все просто.
Спасибо) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |