|
УТ 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
|
Если использовать вместо в типовой конфе, то тебе нужно перетащить весь код из процедуры в свою и доработать. если перед, то может быть ситуация, что ты удалил реквизиты, а потом в типовой функции прошла проверка на их наличие и их снова добавило)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |