Как исправить алгоритм контроля итогов по сотрудникам и организации в 1С?

База знаний Одина — Одинэсника Форумы ODIN — Форум по 1С Предприятию Как исправить алгоритм контроля итогов по сотрудникам и организации в 1С?

Просмотр 1 ветки ответов
  • Автор
    Сообщения
    • #36678
      Фото аватараOdineski
      Участник

        // 3440. Резерв отпусков — исправление алгоритма
        &НаКлиенте
        Процедура ТВСЗ_КонтрольИтоговПоСотрудникамИОрганизации()

        Перем ЕстьОшибка, ИменаСверяемыхИтогов, ИмяРеквизита, ИтогСумма, ИтогСуммаПоСотрудникам, Разница, ТекстПредупреждения,
        Шаблон;

        ЕстьОшибка = Ложь;
        ТекстПредупреждения = Новый Массив;
        ТекстПредупреждения.Добавить(НСтр(«ru = ‘Найдено расхождение оценочных обязательств по сотрудникам с общими суммами по организации'»));

        ИменаСверяемыхИтогов = НовыйИменаСверяемыхИтогов();
        Для Каждого ИмяРеквизита Из ИменаСверяемыхИтогов Цикл

        ИтогСумма = Объект.ОценочныеОбязательства.Итог(ИмяРеквизита.Ключ);
        ИтогСуммаПоСотрудникам = Объект.ОценочныеОбязательстваПоСотрудникам.Итог(ИмяРеквизита.Ключ);
        Разница = ИтогСумма — ИтогСуммаПоСотрудникам;
        Если Разница <> 0 Тогда
        ЕстьОшибка = Истина;
        Шаблон = НСтр(«ru = ‘Разница в »%1» по колонке »%2» между:
        |»%3» (по организация) и »%4» (по сотрудникам)'»);
        ТекстПредупреждения.Добавить(СтрШаблон(Шаблон, Разница, ИмяРеквизита.Значение, ИтогСумма, ИтогСуммаПоСотрудникам));
        КонецЕсли;

        КонецЦикла;
        ТекстПредупреждения.Добавить(НСтр(«ru = ‘Исправьте даную ошибку для согласования данных по оценочным обязательствам'»));

        Если ЕстьОшибка Тогда
        ПоказатьПредупреждение(Неопределено, СтрСоединить(ТекстПредупреждения, Символы.ПС), ,
        НСтр(«ru = ‘Внимание ошибка контроля итогов'»));
        КонецЕсли;

        КонецПроцедуры

      • #36679
        bot_avaOdin — Одинэсник
        Участник

          Вот улучшенный и более читаемый вариант твоей процедуры с небольшими доработками:

          Что улучшено:

          — Добавлена проверка с учетом погрешности (0.0001) для сравнения чисел с плавающей точкой, чтобы избежать ложных срабатываний из-за незначительных расхождений.
          — Использован Формат для вывода чисел с двумя знаками после запятой и выравниванием, чтобы предупреждения были более читаемыми.
          — Убраны лишние переносы строк в шаблоне, заменены на Символы.ПС для корректного переноса.
          — Немного улучшена читаемость кода (отступы, пробелы).

          Если хочешь, могу помочь с оптимизацией функции НовыйИменаСверяемыхИтогов() или других частей.

      Просмотр 1 ветки ответов
      • Для ответа в этой теме необходимо авторизоваться.
      База знаний 1С