|
Проверяемые реквизиты формы обработки. Кир Пластелинин, Мультук, Калиостро, vis, Kongo2019, vicof, Fedor-1971, Chameleon1980, trooba, Ненавижу 1С, lirt82, Crusher, arsik, phabeZ, 2S, yurikmellon2, who respawn, Бычье сердце, Web00001, Доминошник, Легионер, Ногаминебить, runuts, Prog_man, nick86, spiller26, maxar, АгентБезопаснойНацио, d4rkmesa, shuhard, DemonShinji2, RVN, Garykom, Fregat, takefive
| ☑ | ||
|---|---|---|---|---|
|
0
lirt82
27.03.26
✎
09:47
|
Всем привет, есть самописная обработка которая программно создает документы в базе. У обработки есть форма с вкладками, на вкладке "Настройка" расположены реквизиты которые заполняет пользователь и далее данные этих реквизитов используются при создании документов, в процедуре создания новых документов есть проверка на заполненность реквизитов с вкладки "Настройка", код процедуры ниже.
Как можно код проверки на заполненность реквизитов оптимизировать (меньше строк кода)? напрм. только один раз написать строку кода СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru='Заполните поле %1 на закладке ""Настройка"".'"), ПолеОшибки) или другие варианты. &НаКлиенте Процедура СоздатьДокументыРегистрации(Команда) ТекстОшибки = ""; Если Не ЗначениеЗаполнено(Объект.ДатаОплатыЗаНерезидента) Тогда ПолеОшибки = """Дата оплаты за нерезидента"""; ТекстОшибки = ТекстОшибки + Символы.ПС + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru='Заполните поле %1 на закладке ""Настройка"".'"), ПолеОшибки); КонецЕсли; Если Не ЗначениеЗаполнено(Объект.Субконто2) Тогда ПолеОшибки = """Подразделение для затрат"""; ТекстОшибки = ТекстОшибки + Символы.ПС + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru='Заполните поле %1 на закладке ""Настройка"".'"), ПолеОшибки); КонецЕсли; Если Не ЗначениеЗаполнено(Объект.Субконто1) Тогда ПолеОшибки = """Статья затрат"""; ТекстОшибки = ТекстОшибки + Символы.ПС + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru='Заполните поле %1 на закладке ""Настройка"".'"), ПолеОшибки); КонецЕсли; Если Не ЗначениеЗаполнено(Объект.Счет) Тогда ПолеОшибки = """Счет учета затрат"""; ТекстОшибки = ТекстОшибки + Символы.ПС + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru='Заполните поле %1 на закладке ""Настройка"".'"), ПолеОшибки); КонецЕсли; Если Не ЗначениеЗаполнено(Объект.ОсновнаяСтавкаНДС) Тогда ПолеОшибки = """Основная ставка НДС"""; ТекстОшибки = ТекстОшибки + Символы.ПС + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru='Заполните поле %1 на закладке ""Настройка"".'"), ПолеОшибки); КонецЕсли; Если Не ЗначениеЗаполнено(Объект.ОсновнойВидОборота) Тогда ПолеОшибки = """Основной вид оборота"""; ТекстОшибки = ТекстОшибки + Символы.ПС + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru='Заполните поле %1 на закладке ""Настройка"".'"), ПолеОшибки); КонецЕсли; Если Не ЗначениеЗаполнено(Объект.ОтражатьДокументыВНалоговомУчете) Тогда ПолеОшибки = """Отражать документы в налоговом учете"""; ТекстОшибки = ТекстОшибки + Символы.ПС + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru='Укажите способ отражения в поле %1 на закладке ""Настройка"".'"), ПолеОшибки); КонецЕсли; Если Не ЗначениеЗаполнено(Объект.ДокументыПоступления) Тогда ТекстОшибки = ТекстОшибки + Символы.ПС + НСтр("ru='Выполните команду ""Заполнить ""Поступление товаров"""".'"); КонецЕсли; Если ЗначениеЗаполнено(ТекстОшибки) Тогда ОбщегоНазначенияКлиент.СообщитьПользователю(ТекстОшибки); Иначе СоздатьДокументыРегистрацииНаСервере(Команда.Имя); КонецЕсли; КонецПроцедуры .....а где правильнее с точки зрения разработкиисоздавать реквизиты обработки? непосредственно на форме или в объекте |
|||
|
1
Мультук
гуру
27.03.26
✎
09:46
|
(0)
&НаКлиенте Процедура СоздатьДокументыРегистрации(Команда) реквизитыДляпроверки = ПолучитьРеквизитыДляПроверки(); ПроверитьЗаполнение(реквизитыДляпроверки); КонецПроцедуры Вариант 1
&НаКлиенте
Функция ПолучитьРеквизитыДляПроверки()
список = Новый СписокЗначений;
список.Добавить("ДатаОплатыЗаНерезидента", "Дата оплаты за нерезидента");
//и так далее
Возврат список;
КонецФункции
Вариант 2 Как-то еще получить список реквизитов |
|||
|
2
trooba
27.03.26
✎
10:04
|
(1) В список значений лучше Для ккаждого реквизит из Этаформа.ПодчиненныеЭлементы цикл ...
|
|||
|
3
Кир Пластелинин
27.03.26
✎
10:10
|
(0) для реквизитов установить свойство "проверка заполнения" в значение "выдавать ошибку". Если есть реквизиты, которые требуют условную проверку заполнения, то им так же устанавливается это свойство, но в таком случае алгоритм проверки реализуется или в хендлере ОбработкаПроверкиЗаполнения МО, или в ОбработкаПроверкиЗаполненияНаСервере МФ. Реквизиты, которые по итогу не требуют проверки удаляются из коллекции проверямых - см. ОбщегоНазначения.УдалитьНепроверяемыеРеквизитыИзМассива
|
|||
|
4
lirt82
27.03.26
✎
10:21
|
(3) это подходит для документов, справочников в событие ПриЗаписи формы элемента, а у меня обработка.
|
|||
|
5
Кир Пластелинин
27.03.26
✎
10:29
|
(4) чой та?
|
|||
|
6
Кир Пластелинин
27.03.26
✎
10:44
|
(4) как пример
|
|||
|
7
trooba
27.03.26
✎
11:10
|
(6) Это реквизит объекта, а не формы. Если у него именно реквизиты формы- не прокатит
А, не у него в коде от объекта код. Тогда да, все ок. |
|||
|
8
Кир Пластелинин
27.03.26
✎
11:22
|
(7) так и у реквизитов формы есть такое свойство и обработчик
|
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |