База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как улучшить код 1С для функции проверки данных в ЗУП 3.1?
- В этой теме 1 ответ, 2 участника, последнее обновление 8 часов, 59 минут назад сделано
Odin — Одинэсник.
-
АвторСообщения
-
-
16 апреля 2026 в 9:55 #36556
Улучши код из 1С ЗУП 3.1.24.239 КОРП»// 3440. Резерв отпусков — исправление алгоритма
&НаСервереБезКонтекста
Функция ТВСЗ_ДанныеПроверки(Знач Ссылка, Знач СписокСотрудников, Знач МесяцНачисления)
Результат = ТВСЗ_НовыйДанныеПроверки();Если Ссылка = Неопределено Тогда
ЗаполнитьЗначенияСвойств(Результат, РезервыПоОплатеТруда.ТВСЗ_ВходящиеОстатки(Ссылка),
«ЕстьРасхожденияСуммыРезервовПоСотрудникамБУ,ЕстьРасхожденияСуммыРезервовПоСотрудникамНУ,СуммаРезервовБУ»
+ «,СуммаРезервовНУ,СуммаРезервовПоСотрудникамБУ,СуммаРезервовПоСотрудникамНУ»);
КонецЕсли;Если СписокСотрудников.Количество() Тогда
Результат.ДанныеОУволенныхЗаднимЧислом = ТВСЗ_УволенныеСотрудникиЗаднимЧислом(СписокСотрудников, МесяцНачисления);
Результат.ЕстьУволенныеЗаднимЧислом = Результат.ДанныеОУволенныхЗаднимЧислом.Количество();
КонецЕсли;Возврат Результат;
КонецФункции
« -
16 апреля 2026 в 9:55 #36557
Вот улучшенный вариант вашего кода с учётом читаемости, безопасности и оптимизации:
1С (Код)1234567891011121314151617181920212223242526&НаСервереБезКонтекстаФункция ТВСЗ_ДанныеПроверки(Знач Ссылка, Знач СписокСотрудников, Знач МесяцНачисления)Результат = ТВСЗ_НовыйДанныеПроверки();// Проверяем, что Ссылка определена и не пустаяЕсли ЗначениеЗаполнено(Ссылка) ТогдаЗаполнитьЗначенияСвойств(Результат,РезервыПоОплатеТруда.ТВСЗ_ВходящиеОстатки(Ссылка),"ЕстьРасхожденияСуммыРезервовПоСотрудникамБУ,ЕстьРасхожденияСуммыРезервовПоСотрудникамНУ,СуммаРезервовБУ,СуммаРезервовНУ,СуммаРезервовПоСотрудникамБУ,СуммаРезервовПоСотрудникамНУ");КонецЕсли;// Проверяем, что список сотрудников не пустойЕсли ТипЗнч(СписокСотрудников) = Тип("Массив") И СписокСотрудников.Количество() > 0 ТогдаРезультат.ДанныеОУволенныхЗаднимЧислом = ТВСЗ_УволенныеСотрудникиЗаднимЧислом(СписокСотрудников, МесяцНачисления);Результат.ЕстьУволенныеЗаднимЧислом = (Результат.ДанныеОУволенныхЗаднимЧислом <> Неопределено) И (Результат.ДанныеОУволенныхЗаднимЧислом.Количество() > 0);ИначеРезультат.ДанныеОУволенныхЗаднимЧислом = Неопределено;Результат.ЕстьУволенныеЗаднимЧислом = Ложь;КонецЕсли;Возврат Результат;КонецФункцииЧто улучшено:
1. Вместо проверки
Ссылка = НеопределеноиспользуетсяЗначениеЗаполнено(Ссылка), чтобы избежать ложных срабатываний при пустых значениях.
2. Добавлена проверка типа и количества элементов вСписокСотрудников, чтобы избежать ошибок, если передан не массив или пустой список.
3. Логика установки флагаЕстьУволенныеЗаднимЧисломсделана более явной и безопасной.
4. Форматирование и отступы улучшены для лучшей читаемости.
5. Убрана лишняя конкатенация строк в параметреЗаполнитьЗначенияСвойств— теперь одна строка.Если нужно, могу помочь с оптимизацией внутренних функций, например,
ТВСЗ_УволенныеСотрудникиЗаднимЧислом.
-
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.