Надійні Ь ПРОГРАМ М

Ми розглянемо один аспект надійності ймовірність отримання очікуваного результату Нижче ми обговоримо ряд заходів, що дозволяють підвищити цю ймовірність і, отже, надійність обчислень

821 ПЕРЕВІРКА ДАНИХ

У будь-якій задачі ми плануємо одержати деякий результат Так, натиснувши на іконку , Розміщену в діалозі форми списку ЖЗ Зарплата_2, ми розраховуємо отримати відомість перерахування в банк для обраного співробітника або підрозділу

Видимих ​​перешкод для отримання такого результату немає, і якщо немає помилок у розрахунках і коді, формуючому відомість, то буде вірний і документ У той же час в програму, що виводить відомість, можна додати функцію, яка перевіряє, чи точно порахований розмір перераховується в банк суми Помилка, як ми вже зазначали (розд 7101), може виникнути, коли після скасування ручної правки небудь запи-

сі, що має залежні ВР, виконаний її перерахунок (іконка панелі інструментів

ЖЗ), при цьому атрибут Розрахована залежних ВР залишається рівним одиниці, а користу

ватель забуває виконати їх перерахунок (Нагадаємо, що ВР ВБанк_2 залежить від усіх інших ВР)

Код такий перевірочної функції простий:

/ / Виконує порівняння розмірів перерахувань в банк Повертає нуль,

/ / Якщо перерахування вірні, і відмінне від нуля число в іншому випадку

/ / При помилку функція видає відповідне попередження функція СовпаденіеПеречісленій (співр, перераховано)

// перераховано = Ціла частина (Початкове сальдо + Усі нарахування Всі утримання) перем ВР, банк

банк = перераховано

/ / Відкриваємо вибірку розрахунків обєкта, зареєстрованих в поточному періоді ВибратьПеріодПоОбекту (співр)

поки ПолучітьЗапісь () = 1 цикл ВР ВідРасч

якщо (ВРВходітВГруппу (ГруппаРасчетовВсеНачисления_2) = 1) або (ВР = ВідРасчетаНачСальдо_2) тоді

банк = банк результат

іначеЕслі ВРВходітВГруппу (ГруппаРасчетовВсеУдержания_2) = 1 тоді банк = банк + результат

КонецЕсли

конецЦікла / / Поки

повернення Цел (банк) / / Беремо цілу частину результату КонецФункции / / СовпаденіеПеречісленій

Тоді приведена в розд 7173 процедура СтрокаВТекст, що додає рядок у відомість перерахувань в банк, прийме наступний вигляд:

/ / Додає у відомість рядок під номером ном і коригує значення змінної всього

процедура СтрокаВТекст (співр, текст, ном, всього)

/ / Відкриваємо вибірку розрахунків обєкта, зареєстрованих в поточному періоді ВибратьПеріодПоОбекту (співр)

поки ПолучітьЗапісь () = 1 цикл

якщо відРасч = ВідРасчетаВБанк_2 тоді всього = всього + Результат

/ / Форматуємо дані відповідно до заголовком табличній частині відомості текстДобавітьСтроку (Формат (ном, С5) + : +

Формат (ОбектНаіменованіе, С27) + : + Формат (ОбектКод, С9) + : + Формат (Результат, 4102) + : + Формат (ОбектКод, С9))

перервати КонецЕсли

конецЦікла / / Поки

/ / Додаємо виклик перевіряє функції СовпаденіеПеречісленій якщо СовпаденіеПеречісленій (співр, Результат) про 0 тоді

Повідомити (Помилка в розмірі перерахувань співробітника + сотрНаіменованіе) Попередження (Помилка в розмірі перерахувань співробітника +

РазделітельСтрок + сотрНаіменованіе) КонецЕсли

КонецПроцедури / / СтрокаВТекст

Такий підхід, правда, теж має недолік Адже якщо зміниться алгоритм розрахунку перерахувань в банк, то код доведеться міняти у двох місцях: у ВР ВБанк_2 і у вищенаведеній функції СовпаденіеПеречісленій Дублювання коду, втім, можна уникнути, якщо розмістити його в глобальному модулі

Джерело: Бартеньев О В 1С: Підприємство: програмування для всіх Базові обєкти та розрахунки на одній дискеті М: Діалог-МІФІ, 2005 464 с

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*