Как стереть строку из табличной части документа

Новая тема
"Постановка задачи:<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>Пожалуйста, помогите"
"Для нового элемента при выборе из подбора<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>"
После удаление строки обновляй выборку "ВыбратьСтроки()".
"Я бы не стремилась именно УДАЛЯТЬ строку из ТЧ при возможной ошибке. Ибо ошибившись, надо будет забивать удаленную строку заново, вместо того, чтобы просто подправить количество. А если редактирование? и случайно 102? и все ичезло? а номенклатуру не помню?<br>Мое предложение: обнулять Количество пока оно не будет удовлетворять условию (не больше 100) с выводом соответствующего Предупреждения, а при записи дока проверять ТЧ на нулевые значения количества. Если есть, то опять же Предупреждение и возвращение на форму.<br>Но уж если ОЧЕНЬ хочется именно удалить то, предлагаю делать это в предопределенной процедуре:<br><br>Процедура ПриОкончанииРедактированияСтроки()<br> Если Количество > 100 Тогда <br> Предупреждение("Неверное количество!!!");<br> УдалитьСтроку();<br> КонецЕсли;<br>КонецПроцедуры<br><br>Конечно придется заполнить все реквизиты ТЧ до конца (если у вас после Количества идет еще что-то типа Цена,Сумма и т.д.),но зато вы гарантированно удалите строку. "
Тогда еще вариант - поставить формат реквизита "число 2.0. :)
Отличный вариант!!! :) Полностью поддерживаю!!!
Самый разумный вариант использовать для заполнения табличной части обработку подбора, в которой и контролировать ввод количества, не позволяя указать заведомо большое значение. при этом метод интерактивного ввода новой строки зарубить и вместо него вызывать обработку подбора.<br><br>Остаётся обработать режим редактирования уже введённой строки в котором обрубать значение до предельного в случае когда при окончании редактирования в реквизите количество задано заведомо запредельное значение.<br><br>Затирание введённой строки значально являетя неправильным методом, так как способствует занижению скорости ввода данных и соответственно понижению уровня юзабельности, что с точки зрения разработки является неприемлимым. Ну и конечно при обработке ошибки ввода количества должно обязательно выдаваться поясняющее сообщение.

Читают тему

(гостей: 1)

Быстрый переход