Как стереть строку из табличной части документа
01.07.2008
15:22
#1
"Постановка задачи:<br>есть документ с многострочной частью (типа накладной)<br>у него есть модуль формы.<br>в многострочной части есть несколько реквизитов<br><br>№№ номенклатура количество<br>п/п<br><br>1 Ложка большая 80 шт.<br>2 Чашка маленькая 50 шт.<br><br>надо: при ошибки в выборе количества (больше 100 шт.) выдавать окно ошибки и стирать последнюю строку (если документ новый) или восстанавливать ее (если редактируется уже существующий документ).<br>В свойствах реквизита "количество" указываю формулу контр_ошибк()<br><br>В модуле пишу процедуру:<br>процедура контр_ошибк()<br><br>...<br>если выбратьстроки()=1 тогда<br>пока получитьстроку()=1 цикл<br>если количество>100 тогда<br><br>предупреждение ("..");<br>удалитьстроку();<br><br>конецесли;<br>конеццикла;<br>конецесли;<br>конецпроцедуры<br><br><br>мне при выполнении документа, если я ввожу например 101 шт, мне выдается ошибка "невозможно удалить строку"<br><br><br>Пожалуйста, помогите"
01.07.2008
15:37
#2
"Для нового элемента при выборе из подбора<br>Процедура ОбработкаПодбора(ВыбТовар)<br> Кол=0;<br> Если ВвестиЧисло(Кол,"Введите количество",10,3)=1 Тогда<br> Если Кол>=100 Тогда<br> Возврат;<br> Иначе<br> НоваяСтрока();<br> //и т.д.<br> КонецЕсли;<br> //и т.д.<br><br>Для уже существующего элемента при вводе нового количества<br>Процедура ПриНачалеВыбораЗначения(Элемент)<br> Если Элемент="Количество" Тогда<br> СтароеКоличество=Количество;//СтароеКоличество <- Глобальная переменная текущего модуля<br> КонецЕсли;<br>КонецПроцедуры<br><br>Процедура ВыбКоличество()<br> Если Количество>=100 Тогда<br> Количество=СтароеКоличество;//СтароеКоличество <- Глобальная переменная текущего модуля<br> КонецЕсли;<br>КонецПроцедуры<br>"
01.07.2008
18:14
#4
"Я бы не стремилась именно УДАЛЯТЬ строку из ТЧ при возможной ошибке. Ибо ошибившись, надо будет забивать удаленную строку заново, вместо того, чтобы просто подправить количество. А если редактирование? и случайно 102? и все ичезло? а номенклатуру не помню?<br>Мое предложение: обнулять Количество пока оно не будет удовлетворять условию (не больше 100) с выводом соответствующего Предупреждения, а при записи дока проверять ТЧ на нулевые значения количества. Если есть, то опять же Предупреждение и возвращение на форму.<br>Но уж если ОЧЕНЬ хочется именно удалить то, предлагаю делать это в предопределенной процедуре:<br><br>Процедура ПриОкончанииРедактированияСтроки()<br> Если Количество > 100 Тогда <br> Предупреждение("Неверное количество!!!");<br> УдалитьСтроку();<br> КонецЕсли;<br>КонецПроцедуры<br><br>Конечно придется заполнить все реквизиты ТЧ до конца (если у вас после Количества идет еще что-то типа Цена,Сумма и т.д.),но зато вы гарантированно удалите строку. "
03.07.2008
00:33
#7
Самый разумный вариант использовать для заполнения табличной части обработку подбора, в которой и контролировать ввод количества, не позволяя указать заведомо большое значение. при этом метод интерактивного ввода новой строки зарубить и вместо него вызывать обработку подбора.<br><br>Остаётся обработать режим редактирования уже введённой строки в котором обрубать значение до предельного в случае когда при окончании редактирования в реквизите количество задано заведомо запредельное значение.<br><br>Затирание введённой строки значально являетя неправильным методом, так как способствует занижению скорости ввода данных и соответственно понижению уровня юзабельности, что с точки зрения разработки является неприемлимым. Ну и конечно при обработке ошибки ввода количества должно обязательно выдаваться поясняющее сообщение.
Читают тему
(гостей: 1)