|   |   | 
| 
 | УТ 11.4 Отключить обязательную проверку в реквизитах с помощью расширения | ☑ | ||
|---|---|---|---|---|
| 0
    
        letovd 14.07.22✎ 13:21 | 
        Ребят, добрый день.
 Нужно откорректировать несколько дублей "Приобретений услуг и прочих активов" годовалой давности. Решил это сделать с помощью "корректировки приобретения" указав нулевую сумму. Так как Товары.Цена и Товары.Сумма проверяются на заполнение, решил подключить расширение конфы, добавить процедуру модуля объекта документа "корректировка приобретения" в расширение и добавил две строчки перед процедурой: &Перед("ОбработкаПроверкиЗаполнения") Процедура РасшО_ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты) // Вставить содержимое метода. ПроверяемыеРеквизиты.Удалить(ПроверяемыеРеквизиты.Найти("Товары.Цена")); ПроверяемыеРеквизиты.Удалить(ПроверяемыеРеквизиты.Найти("Товары.Сумма")); КонецПроцедуры Задача выполнена, так как не программирую, хотел уточнить, имеет ли место быть такая доработка? Решение проблемы адекватное вообще получилось? Или на костылях? | |||
| 1
    
        6awkup_true 14.07.22✎ 13:24 | 
        Если вдруг реквизиты удалят или переименуют, то твой код выдаст ошибку, т.к. если не найдет реквизит - будет неопределено. лучше сделать проверку на то, что реквизит найден. если проверка пройдена - удалять     | |||
| 2
    
        6awkup_true 14.07.22✎ 13:27 | 
        а еще твоим кодом отключается проверка на весь столбец. если нужно выборочно(в одной строке проверять, а в другой нет), то код не подходит     | |||
| 3
    
        letovd 14.07.22✎ 13:53 | 
        (1) Понял, нужна обработка ошибки, забыл про это, спасибо!
 (2)Слушай, правильнее было бы выборочно, если в строке статья расходов имеет номер "N", надо подумать как это сделать | |||
| 4
    
        letovd 14.07.22✎ 13:58 | 
        (1) Исправил
 &Перед("ОбработкаПроверкиЗаполнения") Процедура РасшО_ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты) // Вставить содержимое метода. РеквизитЦена = ПроверяемыеРеквизиты.Найти("Товары.Цена"); РеквизитСумма = ПроверяемыеРеквизиты.Найти("Товары.Сумма"); Если (РеквизитЦена <> Неопределено) И (РеквизитСумма <> Неопределено) Тогда ПроверяемыеРеквизиты.Удалить(ПроверяемыеРеквизиты.Найти("Товары.Цена")); ПроверяемыеРеквизиты.Удалить(ПроверяемыеРеквизиты.Найти("Товары.Сумма")); КонецЕсли; КонецПроцедуры | |||
| 5
    
        letovd 14.07.22✎ 13:59 | 
        Ой, забыл с методе удалить вставить переменные, ну суть в общем такая     | |||
| 6
    
        6awkup_true 14.07.22✎ 14:03 | 
        (4) &Перед("ОбработкаПроверкиЗаполнения")
 Процедура РасшО_ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты) // Вставить содержимое метода. РеквизитЦена = ПроверяемыеРеквизиты.Найти("Товары.Цена"); Если не РеквизитЦена = Неопределено тогда ПроверяемыеРеквизиты.Удалить(РеквизитЦена); КонецЕсли; РеквизитСумма = ПроверяемыеРеквизиты.Найти("Товары.Сумма"); Если не РеквизитСумма = Неопределено тогда ПроверяемыеРеквизиты.Удалить(РеквизитСумма); КонецЕсли; КонецПроцедуры | |||
| 7
    
        letovd 14.07.22✎ 15:06 | 
        (6) Спасибо, так действительно красивее     | |||
| 8
    
        6awkup_true 14.07.22✎ 15:09 | 
        (7) не красивее. если у тебя один параметр найдет, а второй нет, то вообще ни у одного не отключит проверку. найденный все равно будет проверяться     | |||
| 9
    
        letovd 14.07.22✎ 15:24 | 
        (8) Слушай, в (2) полезный совет, но я боюсь использовать контекст "Вместо", я читал, что это опасно с кривыми руками...     | |||
| 10
    
        6awkup_true 14.07.22✎ 15:32 | 
        Если использовать вместо в типовой конфе, то тебе нужно перетащить весь код из процедуры в свою и доработать. если перед, то может быть ситуация, что ты удалил реквизиты, а потом в типовой функции прошла проверка на их наличие и их снова добавило)     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |