Имя: Пароль:
1C
 
Проблема с ВвестиЧисло...
0 Maja
 
17.01.05
21:05
Подскажите, как решить задачку? Использую следующий код:

Цен = ВыбрМатериал.Цена;  //предустановленная цена
ВвестиЧисло(Цен, "Введите цену", 15, 2);

Проблема в том, что при появлении диалога ввода курсор ставиться ПЕРЕД текущей ценой по справочнику. То есть если предустановленная цена 200, и оператор начинает забивать 440, получается ввод числа 440200. Как можно при воявлении диалога ввода числа перевести предустановленную цену в режим редактирования? - то есть чтобы она была выделенна синим цветов и если оператор начал забивать другую цену, старое значение затиралось и новое писалось поверх, а не перед старым?
1 Таня
 
17.01.05
21:08
Это уже было где-то здесь, но давно. Надо написать обработку, в котором будет поле число, и вызывать ее когда надо.
2 Таня
 
17.01.05
21:09
а потом через контекст возвращать значение
3 NiGMa
 
17.01.05
21:12
Там только одна сложность - таймаут назначить.
4 NiGMa
 
17.01.05
21:13
(3+) , если вызывать ее модально.
5 Maja
 
17.01.05
21:16
спасибо
6 Maja
 
19.01.05
19:15
Извините, продолжу тему... Попробовала сделать как написал NiGMA, но появилась новая проблема -
..........
Если ОткрытьФормуМодально("Обработка.ВводЧисла", Кол) = 0 Тогда
       Возврат;
Иначе
..........

Я нормально открываю форму обработки, но почему-то всегда возвращается ноль, в смысле не в Кол (здесь все нормально), а как результат выполнения ОткрытьФормуМодально(). Вот на всякий случай код самой обработки (ВыбЧисло-это поле для ввода числа в форме обработки):
//_____________________________________________________________________________
Процедура ПриОткрытии()
   Форма.ПанельИнструментов(0);
   ВыбЧисло=Форма.Параметр;
КонецПроцедуры //ПриОткрытии()

//_____________________________________________________________________________
Процедура Выполнить()    //вызывается по кнопке ок и как функция ВыбЧисло
   Форма.Закрыть();
КонецПроцедуры //Выполнить()

//_____________________________________________________________________________
Процедура ПриЗакрытии()
   Форма.Параметр=ВыбЧисло;
КонецПроцедуры //ПриЗакрытии()
7 Матрейя
 
19.01.05
19:24
ОткрытьФормуМодально("Обработка.ВвестиЧисло",Кол);
Сообщить(Кол);
8 Maja
 
19.01.05
19:30
<<Сообщить(Кол)
0
9 Матрейя
 
19.01.05
19:32
8. Не знаю, спроси у Волшебника.
10 Дурочка 1С
 
19.01.05
19:33
Выход один - ВК.
11 Матрейя
 
19.01.05
19:34
Не слушай 10, она дурочка.
12 Дурочка 1С
 
19.01.05
19:36
(11) Здравствуйте, Света! Как Ваше ничего себе?
13 Матрейя
 
19.01.05
19:48
Дурочки постоянно путают меня с питом.
14 Maja
 
19.01.05
19:49
Что-то я неправильно написала...
Кол получает значение! Меня волнует следующее:
Флаг=ОткрытьФормуМодально("Обработка.ВвестиЧисло",Кол);
Сообщить (Флаг);
Флаг всегда равен нулю!
===================================================
Из ЖКК:
ОткрытьФормуМодально
Возвращаемое значение: см.ОткрытьФорму
....
ОткрытьФорму
Возвращаемое значение: Число 1-Если действие выполнено, Число 0 - если действие не выполнено
15 Maja
 
19.01.05
19:50
NiGMA, Волшебник, - помогите!
16 Матрейя
 
19.01.05
19:50
Майя, зачем тебе флаг модальной формы?
17 Дурочка 1С
 
19.01.05
19:55
(16) Все правильно она делает. Теперь этот флаг в руки и ВК.
18 Матрейя
 
19.01.05
19:58
17. достаточно глобальной переменной, дурочка.
19 Maja
 
19.01.05
19:59
(Растерянно...)Проверить, открылась форма или нет (операция завершилась с ошибкой). Я неправильно/нелогично действую?
20 Матрейя
 
19.01.05
20:04
19. Если в обработке ошибки нет и открытие не помещено в транзацию - то всегда откроется.
21 Maja
 
19.01.05
20:04
ВК- это что? - использование внешних компонент? Мне это пока не надо, хочу работать на стандартной 1С без расширений. Я конечно могу вместо кол передать и получить обратно ТЗ, в которой сама форма обработки установит флаг успешного выполнения и кол, но хочется докопаться до сути, да и не хочется лишних движений типа разложения полученной ТЗ на возвращаемые значения... Может, в описании оператора ОткрытьФормуМодально - ошибка?
22 Maja
 
19.01.05
20:07
Я бы так не сказала, а если я допишу некорректный код в обработку в процедуру ПриОткрытии() и забуду его откорректировать? Может и не открыться
23 Матрейя
 
19.01.05
20:07
21. Возвращает - после исполнения метода. А модальное открытие перехватывает исполнение алгоритма.
24 Матрейя
 
19.01.05
20:08
22. Передавай список значений. Успех=Спис.Получить("Работала")
25 АЛьФ
 
модератор
19.01.05
20:08
2(19) Логично. Только этот метод всегда вернет ноль, т.к. когда доходит до присваивания модальное окно уже закрыто (из определения модальности).
Если надо проверять нажата в обработке кнопка "Ок" или пользователь решил отменить ввод, надо или глобальную процедуру использовать, или сделать что-то типа такого:

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

// в обработке
Процедура ПриОткрытии()
 // ... всякие проверки на корректность открытия обработки опускаю ...
 // получаем текущее значение
 РеквЧисло = Форма.Параметр.Получить("Значение");
КонецПроцедуры

Процедура Ок() // вызывается по нажатию кнопки "Ок"
 // устанавливаем флаг выбора
 Форма.Параметр.Установить("ВыборСделан",1);
 // устанавливаем новое значение
 Форма.Параметр.Установить("Значение",РеквЧисло);
 Форма.Закрыть(0);
КонецПроцедуры
26 NiGMa
 
19.01.05
20:08
Модально-то это правильно, конешно... нам же хочется чтобы было как бы ВвестиЧисло() - а оно модальное...

А вот почему 0 возвращает - не знаю.

Я сам такое делал - но немного иначе. Открытие формы не проверял. Возвращал 2 значения: собственно число и признак успешного завершения ввода (взводится функцией в поле ввода).
При модальном окне ОбработкаОжидания() не работает, к сожалению - и таймаут сделать не удалось :(
27 Матрейя
 
19.01.05
20:09
Кол="ФФФ";
//затем открываем форму модально и передаем кол
Если кол="ффф" Тогда
не открывалась!
28 NiGMa
 
19.01.05
20:14
(27) Неудобно это.
Обычно хочется значение по умолчанию передать.
29 Матрейя
 
19.01.05
20:16
28. Все возможные способы я уже перечислил.(18,24,27). Остался последний: Попытка-Исключение
30 Maja
 
19.01.05
20:46
Всем спасибо, видимо буду делать все-же через ТЗ..
31 Матрейя
 
19.01.05
20:48
30. Есть более изящное решение (если по сабжу 0)
32 NiGMa
 
19.01.05
20:51
(31) Решение - в студию!!!
33 Матрейя
 
19.01.05
20:53
32. Я не буду отвечать на тематические вопросы до тех пор, пока не увижу подпись "Последний Будда" под своим оригинальным ником.
34 Матрейя
 
19.01.05
20:54
http://www.forum.mista.ru/topic.php?id=26263&
Но особо страждущим могу ответить по электронной почте matreya@mail.ru
35 427
 
19.01.05
21:15
хм... Да Света вообще отвечать не может, ибо .....
и читает только религиозную литературу...
36 Матрейя
 
19.01.05
21:19
35. Кретинка, ламерша, курица. Питух.
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.