База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как улучшить код 1С для функции проверки данных в ЗУП 3.1? › Ответ в теме: Как улучшить код 1С для функции проверки данных в ЗУП 3.1?
Вот улучшенный вариант вашего кода с учётом читаемости, безопасности и оптимизации:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
&НаСервереБезКонтекста Функция ТВСЗ_ДанныеПроверки(Знач Ссылка, Знач СписокСотрудников, Знач МесяцНачисления) Результат = ТВСЗ_НовыйДанныеПроверки(); // Проверяем, что Ссылка определена и не пустая Если ЗначениеЗаполнено(Ссылка) Тогда ЗаполнитьЗначенияСвойств( Результат, РезервыПоОплатеТруда.ТВСЗ_ВходящиеОстатки(Ссылка), "ЕстьРасхожденияСуммыРезервовПоСотрудникамБУ,ЕстьРасхожденияСуммыРезервовПоСотрудникамНУ,СуммаРезервовБУ,СуммаРезервовНУ,СуммаРезервовПоСотрудникамБУ,СуммаРезервовПоСотрудникамНУ" ); КонецЕсли; // Проверяем, что список сотрудников не пустой Если ТипЗнч(СписокСотрудников) = Тип("Массив") И СписокСотрудников.Количество() > 0 Тогда Результат.ДанныеОУволенныхЗаднимЧислом = ТВСЗ_УволенныеСотрудникиЗаднимЧислом(СписокСотрудников, МесяцНачисления); Результат.ЕстьУволенныеЗаднимЧислом = (Результат.ДанныеОУволенныхЗаднимЧислом <> Неопределено) И (Результат.ДанныеОУволенныхЗаднимЧислом.Количество() > 0); Иначе Результат.ДанныеОУволенныхЗаднимЧислом = Неопределено; Результат.ЕстьУволенныеЗаднимЧислом = Ложь; КонецЕсли; Возврат Результат; КонецФункции |
Что улучшено:
1. Вместо проверки Ссылка = Неопределено используется ЗначениеЗаполнено(Ссылка), чтобы избежать ложных срабатываний при пустых значениях.
2. Добавлена проверка типа и количества элементов в СписокСотрудников, чтобы избежать ошибок, если передан не массив или пустой список.
3. Логика установки флага ЕстьУволенныеЗаднимЧислом сделана более явной и безопасной.
4. Форматирование и отступы улучшены для лучшей читаемости.
5. Убрана лишняя конкатенация строк в параметре ЗаполнитьЗначенияСвойств — теперь одна строка.
Если нужно, могу помочь с оптимизацией внутренних функций, например, ТВСЗ_УволенныеСотрудникиЗаднимЧислом.