на тему рефераты Информационно-образоательный портал
Рефераты, курсовые, дипломы, научные работы,
на тему рефераты
на тему рефераты
МЕНЮ|
на тему рефераты
поиск
Анализ и оценка надежности и эффективности АИС "Бюджет"
p align="left">Например, в формы месячной отчетности внесены изменения бюджетной классификации Приказ Министерства финансов РФ от 25.12.2008г. N 145н. Тогда создается скрипт на ABL, который выглядит следующим образом:

<?xml version="1.0" encoding="windows-1251" ?>

- <registry>

- <node path="%root%">

- <node path="Объекты">

- <node path="Интерфейсы">

- <node path="{EC6083A1-BC20-4FC8-AAFF-20399B48497A}">

- <node path="Выпадающие меню">

- <node path="Меню принятия/отмены принятия">

- <node path="Принять отчеты">

<value type="3" name="Действие">УстановитьДатуПринятия</value>

<param value="Действие" type="3" name="crc32">$E5CA2E34</param>

<param value="Действие" type="3" name="version">36.044.79</param>

<value type="3" name="Картинка">Галочка</value>

<param value="Картинка" type="3" name="crc32">$3605C21A</param>

<param value="Картинка" type="3" name="version">36.044.79</param>

</node>

- <node path="Снять принятие">

<value type="3" name="Действие">СнятьДатуПринятия</value>

<param value="Действие" type="3" name="crc32">$FED06E36</param>

<param value="Действие" type="3" name="version">36.044.79</param>

<value type="3" name="Картинка">Обновить</value>

<param value="Картинка" type="3" name="crc32">$BEC3BCE7</param>

<param value="Картинка" type="3" name="version">36.044.79</param>

</node>

</node>

</node>

- <node path="Действия">

- <node path="КонтрольКлассификации">

<value type="7" name="Код программы">включить '\Библиотеки\LibRu.lib'; включить '\Библиотеки\Forms.lib'; включить "Бюджет\Объекты\Контроль\Скрипты\События\КонтрольКлассификации"; включить '\Макросы\КИ\ПоддержкаПроекта'; включить 'project'; константы кПутьККонфигурации = "Бюджет\Объекты\Настройки\Консолидация\КонтрольКлассификации"; кКонфигурация = "Конфигурация"; // берем либо выделенные, либо текущую запись функция ПолучитьВыделенныеИлиТекущую(СеткаВвода: СеткаДанных; Данные: СтатическиеДанные): СтатическиеДанные; начало если СеткаВвода.ЕстьВыделенныеСтроки тогда результат := СеткаВвода.ПолучитьВыделенныеСтроки иначе начало // ничего не выделено, тогда занесем в выделенные текущую запись мастера результат := СоздатьСтатическиеДанные; результат.ПрисвоитьПоля(Данные); результат.Открыть; результат.СкопироватьЗапись(1, Данные); конец; конец; // функция ПроверитьКорректностьКлассификацииДанных(Данные: СтатическиеДанные; Конфигурация: СтатическиеДанные): Целое; переменные ИмяПоляДляКонтроля: строка; Классификация: строка; ТипПроверки: Целое; ТипКлассификации: Целое; начало результат := да; ИмяПоляДляКонтроля := Конфигурация.Поле('ControlField').КакСтрока; ТипПроверки := Конфигурация.Поле('ControlType').КакЦелое; ТипКлассификации := Конфигурация.Поле('ClsType').КакЦелое; Данные.Вначало; пока не Данные.ВКонце и результат делать начало Классификация := Данные.Поле(ИмяПоляДляКонтроля).КакСтрока; результат := ПроверитьКлассификацию(Классификация, ТипПроверки, ТипКлассификации); Данные.Следующая; конец; конец; // проверка отчета на корректность классификации функция ПроверитьКорректностьКлассификацииОтчета(КодОтчета: Целое; КодФормы: Целое; Конфигурация: СтатическиеДанные): Целое; переменные ФормаВвода: IBaseForm; НомерДетализации: Целое; ДанныеДетализации: СтатическиеДанные; начало результат := да; Конфигурация.SetScope(МассивИз(КодФормы)); если Конфигурация.ЧислоЗаписей > 0 тогда начало // загружаем детализацию ФормаВвода := ПостроитьФормуВвода(КодОтчета, КодФормы, nil); ФормаВвода.ShowDataEx(sdoNotShow + sdoStatic); // проверяем все контроли Конфигурация.ВНачало; пока не Конфигурация.ВКонце и результат делать начало НомерДетализации := Конфигурация.Поле('DetailNumber').КакЦелое; ДанныеДетализации := ФормаВвода.StaticSets(НомерДетализации); если ДанныеДетализации.ЧислоЗаписей > 0 тогда результат := ПроверитьКорректностьКлассификацииДанных(ДанныеДетализации, Конфигурация); Конфигурация.Следующая; конец; ФормаВвода.ClearStatics; конец; конец; // загрузка конфигурации из реестра функция ПолучитьКонфигурацию: СтатическиеДанные; начало результат := СоздатьДанныеИзРеестра(кПутьККонфигурации, кКонфигурация); результат.IndexFieldNames := 'FormID'; конец; // проверка набора отчетов функция ПроверитьНаборОтчетов(Выделенные, Заголовок, Конфигурация: СтатическиеДанные): Целое; переменные КлассификацияКорректна: Целое; КодОтчета: Целое; КодФормы: Целое; начало КлассификацияКорректна := да; результат := 0; Выделенные.ВНачало; пока не Выделенные.ВКонце делать начало КодОтчета := Выделенные.Поле('ID').КакЦелое; если Заголовок.Locate('ID', КодОтчета, 0) тогда начало КодФормы := Заголовок.Поле('TYPEDFORM').КакЦелое; КлассификацияКорректна := ПроверитьКорректностьКлассификацииОтчета(КодОтчета, КодФормы, Конфигурация); // записываем результат проверки если КлассификацияКорректна тогда начало Заголовок.Поле('ControlMessage').КакСтрока := ''; Заголовок.Поле('ControlResult').КакЦелое := -1; конец иначе начало Заголовок.Поле('ControlResult').КакЦелое := 10; Заголовок.Поле('ControlMessage').КакСтрока := 'Есть ошибки бюджетной классификации'; результат := результат + 1; конец; конец; Выделенные.Следующая; конец; конец; переменные ф: ФормаВвода; Заголовок, Выделенные, Конфигурация: СтатическиеДанные; КоличествоОшибок: целое; начало Ф := ПолучитьФормуВвода; Заголовок := Ф.Заголовки.Таблица; если не Заголовок.Active или (Заголовок.ЧислоЗаписей = 0) тогда ВызватьОшибку('Нет данных для проверки'); // считываем конфигурацию для проверки Конфигурация := ПолучитьКонфигурацию(); попытка // набор отчетов для проверки Выделенные := ПолучитьВыделенныеИлиТекущую(Ф.Заголовки.Сетка, Заголовок); попытка КоличествоОшибок := ПроверитьНаборОтчетов(Выделенные, Заголовок, Конфигурация); обязательно УдалитьОбъект(Выделенные); конец; обязательно УдалитьОбъект(Конфигурация); конец; // сообщаем результаты проверки если КоличествоОшибок = 0 тогда Сообщение('Ошибок ввода классификации не найдено') иначе Сообщение(Формат('Найдено %d документов с ошибочной классификацией', КоличествоОшибок)); конец.</value>

<param value="Код программы" type="1" name="AccessCount">23</param>

<param value="Код программы" type="2" name="AccessDate">39377,8330395718</param>

<param value="Код программы" type="3" name="crc32">$17DD9440</param>

<param value="Код программы" type="3" name="version">36.044.79</param>

<param value="Код программы" type="3" name="Export">DIMAN2\dzimitchev\16.02.2009 16:44:59</param>

<value type="4" name="Отладка">0</value>

<param value="Отладка" type="3" name="crc32">$26D930AC</param>

<param value="Отладка" type="3" name="version">36.044.79</param>

</node>

- <node path="КопироватьОтчет">

<value type="7" name="Код программы">включить '\Библиотеки\LibRu.lib'; включить '\Макросы\КИ\Запросы'; включить 'project'; /* Для получения запросов на заголовок и детализацию используются функции из модуля Запросы.ТекстПолногоЗапросаФормы и Запросы.ТекстЗапросаДеталиФормы соответственно Эти функции генерируют запросы для выборки и вставки полей с условием */ функция КопироватьДетализацию(КодНовогоОтчета, КодОтчета, КопироватьСуммы: Целое); переменные Данные: СтатическиеДанные; ЗапросВыборки, ЗапросВставки: строка; начало Данные := СоздатьСтатическиеДанные; попытка Данные.СоединитьБД; Данные.CachedUpdates := да; ТекстЗапросаДеталиФормы(ЗапросВыборки, ЗапросВставки, Формат('utypedformsdetail.recordindex=%d', КодОтчета)); Данные.Запрос := Формат('[PUMPDATA]{%s} [INSERTDATA]{%s}', ЗапросВыборки, ЗапросВставки); Данные.Открыть; Данные.ВНачало; пока не Данные.ВКонце делать начало Данные.Поле('recordindex').КакЦелое := КодНовогоОтчета; Данные.UpdateStatus := usInserted; Данные.Следующая; конец; Данные.СохранитьИзменения; обязательно УдалитьОбъект(Данные); конец; конец; функция КопироватьЗаголовок(КодОтчета: Целое): Целое; переменные Данные: СтатическиеДанные; ЗапросВыборки, ЗапросВставки, ЗапросИзменения: строка; начало Данные := СоздатьСтатическиеДанные; попытка Данные.СоединитьБД; Данные.CachedUpdates := да; ТекстПолногоЗапросаФормы(ЗапросВыборки, ЗапросИзменения, ЗапросВставки, '550', Формат('utfc.id = %d', КодОтчета)); Данные.Запрос := Формат('[PUMPDATA]{%s} [INSERTDATA]{%s}', ЗапросВыборки, ЗапросВставки); Данные.Открыть; результат := ГенерироватьДиап('g_shared'); Данные.Поле('DocNumber').КакСтрока := 'Копия ' + Данные.Поле('DocNumber').КакСтрока; Данные.Поле('ID').КакЦелое := результат; Данные.Поле('AcceptDate').Очистить; если не Данные.Поле('DocStateref').Пустое тогда Данные.Поле('DocStateRef').КакЦелое := (Данные.Поле('DocStateRef').КакЦелое цел 10) * 10 + 01; Данные.UpdateStatus := usInserted; Данные.СохранитьИзменения; обязательно УдалитьОбъект(Данные); конец; конец; переменные Заголовки: СтатическиеДанные; ф: ФормаВвода; КодОтчета, КодНовогоОтчета: целое; начало //задача: скопировать текущую запись, номер документа заменить на "Копия <номер документа>", дату принятия игнорировать... ф := ПолучитьФормуВвода; если ф.ЕстьИзменения тогда ВызватьОшибку('Перед копированием отчетов надо сохранить все изменения!'); Заголовки := ф.Заголовки.Таблица; если Заголовки.ЧислоЗаписей = 0 тогда ВызватьОшибку('Нет отчета для копирования!'); КодОтчета := Заголовки.Поле('ID').КакЦелое; // копируем заголовок КодНовогоОтчета := КопироватьЗаголовок(КодОтчета); // копируем детализацию КопироватьДетализацию(КодНовогоОтчета, КодОтчета, ); // сохраняем изменения ф.СохранитьИзменения; Сообщение('Отчет был успешно скопирован!'); конец.</value>

<param value="Код программы" type="1" name="AccessCount">12</param>

<param value="Код программы" type="2" name="AccessDate">39405,7255468518</param>

<param value="Код программы" type="3" name="crc32">$D33877EC</param>

<param value="Код программы" type="3" name="version">36.044.79</param>

<param value="Код программы" type="3" name="Export">DIMAN2\dzimitchev\16.02.2009 16:44:59</param>

</node>

- <node path="ОбновитьКД">

<value type="7" name="Код программы">включить '\Библиотеки\LibRu.lib'; включить '\Библиотеки\Forms.lib'; включить '\Библиотеки\ConsSupport.lib'; включить '\Библиотеки\Reports.lib'; включить '\Макросы\КИ\ПоддержкаФормВвода'; включить 'project'; константы НаборПолей = 'КонсолидацияДетализация.КодЗаписи,КонсолидацияДетализация.КодСтрокиЦелое,КонсолидацияДетализация.Код30,КонсолидацияДетализация.Сумма0, КонсолидацияДетализация.Сумма1,КонсолидацияДетализация.Сумма2,КонсолидацияДетализация.Сумма3,КонсолидацияДетализация.Сумма4, КонсолидацияДетализация.Сумма5,КонсолидацияДетализация.Сумма6,КонсолидацияДетализация.Сумма7,КонсолидацияДетализация.Сумма8, КонсолидацияДетализация.Сумма9,КонсолидацияДетализация.Сумма10,КонсолидацияДетализация.Сумма11,КонсолидацияДетализация.Сумма12, КонсолидацияДетализация.Сумма13,КонсолидацияДетализация.Сумма14,КонсолидацияДетализация.Сумма15'; // функция СоздатьПредставление(КодДокумента: Целое; НомерДетализации: Целое): ПредставлениеДанных; переменные Раскладка: ITableInfoX; Ы: Целое; начало Раскладка := ПоддержкаКонсолидации.СоздатьРаскладку(НаборПолей); Раскладка.Columns(0).Group := grpGroup; от Ы := 1 до Раскладка.Count -1 делать Раскладка.Columns(Ы).Group := grpNone; результат := ПоддержкаКонсолидации.СоздатьПредставлениеДанных(Раскладка); результат.Параметр('КонсолидацияЗаголовки.КодДокумента') := КодДокумента; результат.Параметр('КонсолидацияДетализация.НомерДетализации') := НомерДетализации; результат.Открыть; конец; // функция ПолучитьМатрицуДоходов(КодФормы: Целое): СтатическиеДанные; переменные ОписаниеФормы: ITypedForm; ФормаВвода: IBaseForm; начало ОписаниеФормы := МенеджерФормВвода.ФормаПоКоду(КодФормы); ФормаВвода := ПостроительФормВвода.BuildInputForm(-1, КодФормы); результат := ФормаВвода.StaticSets(0); конец; // функция ОбновитьЗаголовок(КодДокумента, КодФормы: Целое); переменные Детализация: ПредставлениеДанных; Доходы: СтатическиеДанные; Данные: СтатическиеДанные; начало если (КодФормы = 36100704) или (КодФормы = 36100706) или (КодФормы = 36101704) или (КодФормы = 36101404) или (КодФормы = 36100404) или (КодФормы = 36100406) тогда начало // получаем текущую матрицу доходов (по которой будем определять соответствие КД и кода листа Доходы := ПолучитьМатрицуДоходов(КодФормы); // создаем представление для обновления данных в БД Детализация := СоздатьПредставление(КодДокумента, 0); // меняем коды листа Данные := Детализация.Данные; Данные.Группировать(Доходы, 'Keys=Код30;Код30=Код30;КодСтрокиЦелое=КодСтрокиЦелое;default=false;insert=false'); // сохраняем изменения Детализация.СохранитьИзменения; конец; конец; // функция ОбновитьЗаголовки(Заголовки: СтатическиеДанные; ТолькоТекущая: Целое); переменные Код, КодФормы: Целое; начало если ТолькоТекущая тогда начало Код := Заголовки.Поле('ID').КакЦелое; КодФормы := Заголовки.Поле('TypedForm').КакЦелое; если Заголовки.Поле('AcceptDate').Пустое тогда ОбновитьЗаголовок(Код, КодФормы); конец иначе начало Заголовки.ВНачало; пока не Заголовки.ВКонце делать начало Код := Заголовки.Поле('ID').КакЦелое; КодФормы := Заголовки.Поле('TypedForm').КакЦелое; если Заголовки.Поле('AcceptDate').Пустое тогда ОбновитьЗаголовок(Код, КодФормы); Заголовки.Следующая; конец; конец; конец; переменные ф: ФормаВвода; Заголовки: СтатическиеДанные; Выделенные: СтатическиеДанные; начало ф := ПолучитьФормуВвода; Заголовки := ф.Заголовки.Таблица; если не Заголовки.Active или (Заголовки.ЧислоЗаписей = 0) тогда ВызватьОшибку('В заголовке нет данных'); если ф.Заголовки.Сетка.ЕстьВыделенныеСтроки тогда начало Выделенные := ф.Заголовки.Сетка.ПолучитьВыделенныеСтроки; попытка ОбновитьЗаголовки(Выделенные, нет); обязательно Интерфейс(Выделенные).Освободить; конец; конец иначе ОбновитьЗаголовки(Заголовки, да); Сообщение('Обновление завершено'); конец.</value>

Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9



© 2003-2013
Рефераты бесплатно, курсовые, рефераты биология, большая бибилиотека рефератов, дипломы, научные работы, рефераты право, рефераты, рефераты скачать, рефераты литература, курсовые работы, реферат, доклады, рефераты медицина, рефераты на тему, сочинения, реферат бесплатно, рефераты авиация, рефераты психология, рефераты математика, рефераты кулинария, рефераты логистика, рефераты анатомия, рефераты маркетинг, рефераты релиния, рефераты социология, рефераты менеджемент.