|
v7: Как спозиционироваться из модуля формы документа на ячейке в табличной части |
☑ |
0
Palll
21.06.16
✎
11:35
|
Необходимо при вводе значения в табличную часть документа, позиционироваться на следующую строку табличной части и войти в режим редактирования. Пробовал использовать метод Активизировать(), получаю ошибку {Документ.ПоступлениеТМЦ.Форма.Модуль(3524)}: В данной формуле не может быть вызвана эта процедура(функция).
|
|
1
Ёпрст
гуру
21.06.16
✎
11:38
|
автоввод строки галку воткнуть и на всех остальных колонках - пропускать при вводе. усё
|
|
2
Palll
21.06.16
✎
11:42
|
(1) Позиционироваться нужно в пределах уже существующих строк, как я понимаю автоввод строки будет добавлять пустую строку?
|
|
3
Ёпрст
гуру
21.06.16
✎
11:46
|
(2) да, а тебе, разве не это надо ?
Если в уже существующие, то АктивизироватьСтроку + Активизировать + ложное закрытие формы
|
|
4
Palll
21.06.16
✎
11:50
|
(3) Я таким образом и пытаюсь сделать, но на Активизировать() получаю ошибку.
Вот кусок кода:
АктивизироватьСтроку(НомерСтроки+1);
Активизировать("Марка",1);
|
|
5
Palll
21.06.16
✎
11:55
|
(4)
Функция ПереводСтроки()
АктивизироватьСтроку(НомерСтроки+1);
Активизировать("Марка",1);
КонецФункции
Функция НайтиМарку()
АлкогольныйКод = РасшифроватьМарку(Марка);
Сообщить(Строка(АлкогольныйКод));
ПереводСтроки();
КонецФункции;
|
|
6
Palll
21.06.16
✎
14:03
|
(5)
Попробовал таким образом, безрезультатно.
// глобальный модуль
Процедура глАктивизироватьПоле(Конт, Поле) Экспорт
Сп=СоздатьОбъект("СписокЗначений");
Сп.Установить("Контекст", Конт);
Сп.Установить("Поле", Поле);
ОткрытьФормуМодально("Обработка.АктивизироватьПоле", Сп);
КонецПроцедуры
// модуль формы Обработка.АктивизироватьПоле
Процедура ПриОткрытии()
Сп=Форма.Параметр;
Если НРег(ТипЗначенияСтр(Сп))<>"списокзначений" Тогда
Сообщить("'Активизировать поле': неверный вызов","!");
СтатусВозврата(0);
Возврат;
КонецЕсли;
Конт=Сп.Получить("Контекст");
Поле=Сп.Получить("Поле");
Конт.Активизировать(Поле, 1);
СтатусВозврата(0);
КонецПроцедуры
Соответственно - вызов в коде:
глАктивизироватьПоле(Контекст, "Артикул");
|
|
7
Ёпрст
гуру
21.06.16
✎
14:16
|
да ё
Перем Вася;
Функция ПереводСтроки()
Вася=НомерСтроки;
Форма.Закрыть(0);
КонецФункции
Процедура ПриЗакрытии()
Если ПустоеЗначение(Вася)=0 Тогда
АктивизироватьСтроку(Вася+1);
Активизировать("Марка",1);
Вася="";
СтатусВозврата(0);
КонецЕсли;
КонецПроцедуры
|
|
8
Palll
21.06.16
✎
15:30
|
(7) Спасибо за помощь. Не понял с ходу что АктивизироватьСтроку + Активизировать + ложное закрытие формы означает вызывать АктивизироватьСтроку и Активизировать в процедуре при закрытии :)
|
|
9
Ёпрст
гуру
21.06.16
✎
15:41
|
(8) это просто стандартный трюк переноса события из обработчиков через ложное событие формы. Можно еще и через функцию текста делать, только затратнее по ресурсам
|
|
10
Palll
21.06.16
✎
15:44
|
(9) Как раз начинал уже через текст делать, но через закрытие удобнее. Теперь буду знать, еще раз спасибо :)
|
|
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший