![]() |
|
Отмена ввода в УФ | ☑ | ||
---|---|---|---|---|
0
UFO
06.05.15
✎
16:09
|
Есть внешний отчет. В нем есть реквизит СкладыЦКПсобственные тип ТаблицаЗначений. В редакторе форм к реквизиту СкладыЦКПсобственные доабвляется колонка Склад, имеющая тип СправочникСсылка.Склады
В серверном модуле при открытии я добавляю в этот реквизит (ТЗ) три склада (они как бы предопределены). Пользователь должен будет или пользоваться этими складами или отредактировать их. Ну дык вот: есть обработчик события Процедура СкладыБУСобственныеПередОкончаниемРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования, Отказ) Данные = Элемент.ТекущиеДанные; Склад = Данные.Склад; Если ОтменаРедактирования Тогда Если НоваяСтрока Тогда Отказ = Истина; Отчет.СкладыБУСобственные.Удалить( Отчет.СкладыБУСобственные.Количество() - 1); //Иначе // Отчет.СкладыБУСобственные.Удалить( Элемент.ТекущаяСтрока - 1); КонецЕсли; КонецЕсли; //Отказ = ПроверитьСклад( Элемент.ТекущиеДанные.Склад); Сообщить( "СкладыБУСобственныеПередОкончаниемРедактирования"); КонецПроцедуры Я обратил внимание, что из ТЗ строчка то удаляется, а вот из ТаблицыФорм нихрена... и каждый раз нажимая добавить строку и отменяя в ТаблицеФорм данные не отменяются и так и идут по нарастанию, хотя в тз остается 3, и поэтому количество строк (я так думаю) не равны в таблицезначений и в таблицформ. Можно ли сделать нормальную отмену ввода строк без глюков, нажимая ESC или просто щелкая по другой строчке? |
|||
1
Fragster
гуру
06.05.15
✎
16:10
|
галку "изменять состав строк" сними.
|
|||
2
Fragster
гуру
06.05.15
✎
16:10
|
а код весь удали
|
|||
3
Fragster
гуру
06.05.15
✎
16:10
|
но вообще само по себе "Пользователь должен будет или пользоваться этими складами или отредактировать их" очень странно
|
|||
4
UFO
06.05.15
✎
16:11
|
Ничего странного, это сделано чтобы пользователю не добавлять в отчет склады, у нас их несколько десятков
|
|||
5
UFO
06.05.15
✎
16:12
|
Я сразу отобрал 3 основные.
|
|||
6
UFO
06.05.15
✎
16:12
|
Надо чтобы пользователь не добавил снова такой же которыйц есть и не добавлял пустых строк.
|
|||
7
UFO
06.05.15
✎
16:13
|
Так вот с пустыми строками у меня вышел затык
|
|||
8
UFO
06.05.15
✎
16:14
|
Первый ESC отрабатывает на ура. Но второй вываливается в ошибку что неверен параметр 1 на строчке Отчет.СкладыБУСобственные.Удалить( Отчет.СкладыБУСобственные.Количество() - 1);
|
|||
9
UFO
06.05.15
✎
16:14
|
Под отладчиком я увидел что количество строк в ТаблицеФорм и ТЗ не равны
|
|||
10
UFO
06.05.15
✎
16:15
|
С каждым нажатием на кнопку добавить количество строк в ТаблицеФорм не уменьшается когда отменяется ввод
|
|||
11
Fragster
гуру
06.05.15
✎
16:16
|
удали весь код.
|
|||
12
Fragster
гуру
06.05.15
✎
16:16
|
если ОтменаРедактирования - то НИЧЕГО не делай
|
|||
13
UFO
06.05.15
✎
16:16
|
И что?
|
|||
14
Fragster
гуру
06.05.15
✎
16:17
|
если нет - то выставляй отказ если дубль или пусто.
|
|||
15
Fragster
гуру
06.05.15
✎
16:17
|
всё
|
|||
16
Fragster
гуру
06.05.15
✎
16:17
|
вообще фигня это. пользователь один раз надобавляет нужные склады и пусть оно само сохраняется у него в варианте настроек
|
|||
17
Fragster
гуру
06.05.15
✎
16:18
|
а дубли и пусто можно игнорировать при самом формировании уже
|
|||
18
UFO
06.05.15
✎
16:19
|
При формировании это понятно, но хотелось бы пользователей заставить быть повнимательней
|
|||
19
UFO
06.05.15
✎
16:20
|
ЧТобы дубликаты сразу удалялись
|
|||
20
UFO
06.05.15
✎
16:25
|
Я хотел чтобы при добавлении строчки с таким же складом, чтобы пользователь не мог сохранить эту строчку и он ее или отредактирует или удалит
|
|||
21
GROOVY
06.05.15
✎
16:33
|
Вот это "Отчет.СкладыБУСобственные.Количество() - 1" нифига не последняя строка как могло бы показаться.
|
|||
22
UFO
06.05.15
✎
16:35
|
(21) Типа америку открыл.. это я и сам знаю.. это я пробовал все варианты в течение пары часов... по ходу дела свой обработчик написать нельзя..
|
|||
23
UFO
06.05.15
✎
16:37
|
ТЗ.количество() давало 3
Элемент.ТекущаяСтрока давало 4 |
|||
24
UFO
06.05.15
✎
16:38
|
во второй раз уже было
тз = 3 Элем = 5 и так далее... и я понял что в таблице форм данные не уменьшаются |
|||
25
GROOVY
06.05.15
✎
16:39
|
"и я понял что в таблице форм данные не уменьшаются" не правильно понял.
|
|||
26
UFO
06.05.15
✎
16:39
|
(25) а что ж тогда?
|
|||
27
GROOVY
06.05.15
✎
16:40
|
Текущая строка - это идентификатор строки, а не ее номер, как я намекал в (21).
|
|||
28
UFO
06.05.15
✎
16:40
|
Значит этот ид никак не связан с количеством?
|
|||
29
UFO
06.05.15
✎
16:41
|
А почему же он по ид удалять не хотел
|
|||
30
GROOVY
06.05.15
✎
16:41
|
(28) никак не связан.
|
|||
31
UFO
06.05.15
✎
16:42
|
Самый первый вариант был
Отчет.СкладыБУСобственные.Удалить( Элемент.ТекущаяСтрока); Почему первый раз отменялось а второй раз ошибку давало? |
|||
32
GROOVY
06.05.15
✎
16:48
|
Попробуй в параметр передать все же не число, а элемент коллекции. Юзай метод НайтиПоИдентификатору().
|
|||
33
GROOVY
06.05.15
✎
16:51
|
Что то вроде Реквизит1.Удалить(Реквизит1.НайтиПоИдентификатору(Элементы.Реквизит1.ТекущаяСтрока));
|
|||
34
UFO
06.05.15
✎
17:03
|
(33) Это получилось, но вот что хочу, хочу, чтобы когда пользователь нажимает на другой склад, у меня срабатывало как ESC, а не выдавало ошибку Значение не является значением объектного типа (Склад)
|
|||
35
UFO
06.05.15
✎
17:05
|
Нажимает на другой склад, находясь в режиме добавления
|
|||
36
UFO
06.05.15
✎
17:08
|
Я почему хочу этого добиться, потому что в реальном обработчике в конце обрабатывается список на поиск дубликатов.
|
|||
37
UFO
06.05.15
✎
17:08
|
А у меня до него доходит только если я ввожу все правильно
|
|||
38
UFO
06.05.15
✎
17:11
|
Я хочу исключить все ошибки пользователей. Чтобы не было шага влево шага вправо.
|
|||
39
UFO
06.05.15
✎
17:22
|
Оказалось все просто, ошибка возникала потому что в строчке
Данные = Элемент.ТекущиеДанные; Данные принимали значение Неопределено, когда пользователь в момент добавления щелкал в другом месте. Достаточно оказалось проверить на него. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |