Две простенькие функции для правильного учета сторно-записей и записей-перерасчетов

19.02.11

Разработка - Универсальные функции

Часто при подсчете дней по записям журнала расчетов "Зарплата" берется знак "+" или "-" в зависимости от признака сторно-записи. Но рано или поздно результат получится ошибочным.

Дело в том, что при повторном сторнировании дни должны быть учтены снова с плюсом. Предлагается простенькая функция, возвращающая всегда правильное значение:

//******************************************************************************
// глКоэффСторно(Знач ЗаписьЖР,Коэфф=1)
//
// Параметры: 
// ЗаписьЖР - ссылка на запись журнала расчетов
// ВозвращаемоеЗначение - если сторно, тогда вернет -1, иначе 1
//
Функция глКоэффСторно(Знач ЗаписьЖР,Коэфф=1) Экспорт
      Если ЗаписьЖР.Сторно = 1 Тогда
           Возврат глКоэффСторно(ЗаписьЖР.ПервичнаяЗапись,-Коэфф);
     КонецЕсли;
     Возврат Коэфф;
КонецФункции



Тогда вместо конструкции:

Дней = Дней + (ЖрнЗарплата.ДатаОкончания - ЖрнЗарплата.ДатаНачала + 1) * ?(ЖрнЗарплата.Сторно = 1,-1,1);

следует написать:

Дней = Дней + (ЖрнЗарплата.ДатаОкончания - ЖрнЗарплата.ДатаНачала + 1) * глКоэффСторно(ЖрнЗарплата.ТекущаяЗапись());

Предварительно, перед использованием функции глКоэффСторно() нужно отсеять записи перерасчета. Но с признаком "перерасчет" похожая ситуация. Поэтому ниже предлагается текст функции для определения записи-перерасчета:

//******************************************************************************
// глЭтоЗаписьПерерасчета(Знач ЗаписьЖР)
//
// Параметры: 
// ЗаписьЖР - ссылка на запись журнала расчетов
// ВозвращаемоеЗначение - если перерасчет, тогда вернет 1, иначе 0
//
Функция глЭтоЗаписьПерерасчета(Знач ЗаписьЖР) Экспорт
     Если (ЗаписьЖР.Перерасчет = 1) и (ЗаписьЖР.Сторно = 0) Тогда
          Возврат 1;
     ИначеЕсли (ЗаписьЖР.Сторно = 1) и (ЗаписьЖР.ПервичнаяЗапись.Перерасчет = 1) Тогда
          Возврат глЭтоЗаписьПерерасчета(ЗаписьЖР.ПервичнаяЗапись);
     КонецЕсли;
     Возврат 0;
КонецФункции

См. также

Библиотека процедур и функций для технологической платформы "1С: Предприятие 7.7"

Универсальные функции Платформа 1С v7.7 Россия Абонемент ($m)

В библиотеку собраны различные функции по работе с документами, журналами, типами данных, строками, датой и временем, таблицами значений, Excel, файлами, XML, JSON, Http-сервисами, SMTP серверами и т.п.

1 стартмани

22.12.2023    844    10    user706545_kseg1971    0    

4

1С 7.7 и новый 1С:Контрагент

Универсальные функции Платформа 1С v7.7 Конфигурации 1cv7 Россия Бесплатно (free)

Получение реквизитов контрагентов из 1С:Контрагент для старых конфигураций под 1с 7.7.

25.04.2022    1962    zhenyat    7    

6

Печать таблицы значений в 1С 7.7 при отладке

Универсальные функции Платформа 1С v7.7 Россия Бесплатно (free)

Функция выводит таблицу значений в табличный документ. (v7.7) Особенно полезно при отладке. Не нужно вносить изменения в код, вызываем функцию как вычисляемое выражение при останове. Если таблица обрабатывается в несколько этапов, можно вывести её после каждого и визуально проследить эволюцию.

30.06.2021    4581    Zoltan_Black    11    

2

Установка принтера по умолчанию для 1С 7.7

Универсальные функции Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

Установка принтера по умолчанию в 1С 7.7. Обработка может быть полезна в том случае, когда нужно установить принтер по умолчанию, а доступа к рабочему столу нет (например, терминальный режим без рабочего стола или remoteApp)

1 стартмани

13.02.2019    13447    4    alsen    3    

4

Формирование строки json в 1С: 7.7

Универсальные функции Платформа 1С v7.7 Конфигурации 1cv7 1С:Комплексная 7.7 Абонемент ($m)

Предлагается набор функций 1с 7.7 для формирования строки json стандартными средствами.

1 стартмани

10.12.2018    10274    malovandrey    6    

18

Как создать индикатор в 1С:Предприятии 7.7

Универсальные функции Работа с интерфейсом Платформа 1С v7.7 Конфигурации 1cv7 Россия Абонемент ($m)

В статье дано описание создания индикатора на форме в среде разработки 1С:Предприятие 7.7 исключительно типовыми средствами.

1 стартмани

27.09.2016    18749    2    HAMMER_59    6    

2
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
0. jack19 148 21.02.11 14:24 Сейчас в теме
Часто при подсчете дней по записям журнала расчетов "Зарплата" берется знак "+" или "-" в зависимости от признака сторно-записи. Но рано или поздно результат получится ошибочным.


Перейти к публикации

1. Nicholas 893 21.02.11 14:24 Сейчас в теме
Начинаю верить в судьбу, божий промысел и т.п.:
Для отчета по отпускам возникла необходимость написать подобную функцию, перед написанием решил почитать новости и...
Вот она, готовая функция!
Алилуя! :)
Оставьте свое сообщение