Имя: Пароль:
1C
1С v8
Как отменить редактирование строки табличной части
0 Melcor
 
20.11.14
12:38
Доброго дня. Подскажатие Есть процедура АналогиНоменклатураПриИзменении() в которой я проверяю соответствие некоторым условиям при создании пользователем новой строки табличной части элемента номенклатуры, аналоги. Мне необходимо как-то удалять строку или отменять ввод новой при срабатывании условия. Спасибо.        

ЗапросАналог = Новый Запрос;
        ЗапросАналог.Текст =
        "ВЫБРАТЬ
        |    НоменклатураМинимальныйОстаток.МинОстаток
        |ИЗ
        |    Справочник.Номенклатура.МинимальныйОстаток КАК НоменклатураМинимальныйОстаток
        |ГДЕ
        |    НоменклатураМинимальныйОстаток.Ссылка = &ТекЭлеме
        |    И НоменклатураМинимальныйОстаток.МинОстаток > &Нуль";
        
        ЗапросАналог.УстановитьПараметр("ТекЭлеме", Элемент.Значение);
        ЗапросАналог.УстановитьПараметр("Нуль", 0);
        
        РезультатАналог = ЗапросАналог.Выполнить().Выгрузить();
        Если РезультатАналог.Количество()>0 тогда // есть мин. остаток
            сообщить("У товара "+строка(Элемент.Значение)+" прописан мин. остаток, как и у "+строка(ЭтотОбъект.Ссылка));
            //Здесь удаляем строку или отменяем редактирование
        КонецЕсли;
1 Рэйв
 
20.11.14
12:51
&Нуль - это пять с плюсом!:-)
2 zsergey
 
20.11.14
12:52
улыбнуло, я так тоже когда-то писал...
3 olegves
 
20.11.14
12:58
Кури ПередОкончаниемРедактированияСтроки
4 Melcor
 
20.11.14
12:58
(1) Там переменная будет, разная)
5 Melcor
 
20.11.14
13:00
(3) Все молчат, уже нашел, сижу, курю)
6 Рэйв
 
20.11.14
13:00
(4)то есть в параметр может и не 0 пойти?:-)
7 Melcor
 
20.11.14
13:16
(6) Угу
8 Melcor
 
20.11.14
13:18
Блин, в процедуре ПередОкончаниемРедактированияСтроки Отказ ставлю Истина, но строка остается в режиме редактирования, а надо, чтобы пропала полностью, подскажите что хоооооть такое-тоооо
9 olegves
 
20.11.14
13:21
(8) юзверь сам должен нажать ESC, чтобы отказаться от ввода, или поменять строку так, что она станет корректна
10 Melcor
 
20.11.14
13:21
(9) В этом и проблема, нажимаю ESC и процедура повторяется(
11 olegves
 
20.11.14
13:34
(10) посмотри значение параметра Отказ в отладчике, и подумай, для чего его добавили
12 Melcor
 
20.11.14
13:36
(11) Дык, Истина
13 Melcor
 
20.11.14
13:42
Вот код, что не так-то делаю?
Процедура АналогиПередОкончаниемРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования, Отказ)
        //проверим нет ли мн. ост у аналога, если есть не дадим его проставить
        ЗапросАналог = Новый Запрос;
        ЗапросАналог.Текст =
        "ВЫБРАТЬ
        |    НоменклатураМинимальныйОстаток.МинОстаток
        |ИЗ
        |    Справочник.Номенклатура.МинимальныйОстаток КАК НоменклатураМинимальныйОстаток
        |ГДЕ
        |    НоменклатураМинимальныйОстаток.Ссылка = &ТекЭлеме
        |    И НоменклатураМинимальныйОстаток.МинОстаток > &Нуль";
        
        ЗапросАналог.УстановитьПараметр("ТекЭлеме", ЭлементыФормы.Аналоги.ТекущиеДанные.Номенклатура);
        ЗапросАналог.УстановитьПараметр("Нуль", 0);
        
        РезультатАналог = ЗапросАналог.Выполнить().Выгрузить();
        Если РезультатАналог.Количество()>0 тогда // есть мин. остаток
            сообщить("У товара "+строка(ЭлементыФормы.Аналоги.ТекущиеДанные.Номенклатура)+" прописан мин. остаток, как и у "+строка(ЭтотОбъект.Ссылка));
            
            Отказ = Истина;
        КонецЕсли;    
КонецПроцедуры
14 Рэйв
 
20.11.14
13:46
(13)Если Не ОтменаРедактирования..
15 Melcor
 
20.11.14
13:52
(14) Ай, спасибо, друг!
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший