Программа для учета финансовых операций предприятия.

Программа FN предназначена для учета финансовых операций предприятия. Для дальнейшего использования наработанных данных предусмотрен их экспорт в 1С-бухгалтерию. Далее описывается внутреннее устройство программы FN в версии 0.01.

1.Описание структуры данных.

Программа FN при работе использует следующие таблицы с данными: из которых три таблицы заполняются извне и только читаются в FN:
KK_Cards Справочник контрагентов предприятия. Программа FN использует лишь три поля этой таблицы:
  • [sID] [int] - номер записи,
  • [sType] [tinyint] - все обработки ведутся по счетам у который sType=4,
  • [sName] [nvarchar] - имя владельца счета.
SY_Users База логинов пользователей. Текущий пользователь по этой базе определяется внешней переменной CurrentUser. Программа FN использует лишь четыре поля из этой таблицы:
  • [sID] [smallint] - номер,
  • [sFullName] [nvarchar] - полный логин,
  • [sKKID] [int] - ссылку на тыблицу владельцев счетов,
  • [sName] [nvarchar] - сокращенный логин.
SY_VarsContainerТаблица предпочтений пользователей. Непосредственно в финансовых расчетах не задействована - используется лишь при отображении логинов (полный/сокращенный). В программе FN версии 0.01 обрабатывается только переменная sVarID =2.

Следующие таблицы непосредственно ведутся в программе FN:
FN_KassUserТаблица назначения кассиров - многие ко многим - хранит кому именно разрешена работа кассиром и в каких именно кассах.
FN_ListAccountПеречень расчетных и кассовых счетов, ведущихся программой FN:
  • [ID] [int] - номер счета,
  • [sName] [nvarchar] - наименование счета,
  • [Type] [int] - ссылка на таблицу типов счетов,
  • [LimitKassa] [money] - предел заказа наличных в кассе без подписи администратора,
  • [LimitOver] [money] - предел отрицательной суммы на счету, при которой возможен перевод денег без подписи администратора,
  • [sSum] [money] - текущая сумма счета,
  • [KKID] [int] - ссылка на владельца счета,
  • [Bron] [money] - сумма забронированных (но не полученных) денег в кассе,
  • [IsClosed] [bit] - признак "Счет закрыт"=1
FN_ListAccountTypeТипы счетов
  • [ID] [int] - номер,
  • [sName] [nvarchar] - наименование типа счета,
  • [OrdinalNo] [int] - не задействовано,
  • [Currency] [int] - валюта счета,
  • [IsKassa] [bit] - признак "Это касса" =1, по такому счету операции не выполняются мгновенно - их выполняет кассир.
FN_ListCurrencyВалюты, по которым могут проводится операции на счетах. Это квадратная матрица валют при трех валютах имеющая три столбца с наименованиями TO_x - соответственно при девяти валютах - столбцы будут c наименованиями от TO_1 до TO_9.

Если диагональ матрицы курсов не равна 1 - то такие данные не считаются корректными и процедуры завершаются аварийно.
  • [ID] [int] - номер валюты,
  • [sName] [nvarchar] - наименование,
  • [OrdinalNo] [int] - не задействовано,
  • [IsMain] [bit] - для единственной основной валюты =1, в эту валюту преобразовывается данные в жернале финансовых операций в поле Usum.
FN_ListEnaStatusСостояние операции. Связи с тем, что некоторые финансовые операции происходят не мгновенно (например, деньги забронированы, а кассир их еще не выдал или на них еще не получено разрешение) - для операций устанавливается статус:
  • [ID] [int] - собственно статус,
  • [sName] [nvarchar] - наименование,
  • [OrdinalNo] [int] - не задействовано,
  • [IsMayDelete] [bit] - операция может быть удалена из журнала бесследно,
  • [IsFinished] [bit] - операция полностью завершена,
  • [IsPrepared] [bit] - операция только подготовлена, но пока не исполнена или не одобрена администратором,
  • [IsPrinato] [bit] - операция разрешена администратором.
Обработка статуса №3 пока не задействована.
FN_ListLogTypeТип финансовой операции.
  • [ID] [int] - собственно тип,
  • [sName] [nvarchar] - наименование,
  • [OrdinalNo] [int] - не задействовано,
  • [IsKassa] [bit] - собственно пока единственный смысловой бит - кассовая/некассовая операция, т.е. исполняется мгновенно или кассиром.
FN_LogЖурнал финансовых операций. Собственно основной журнал финансовых операций:
  • [ID] [int] - уникальный порядковый номер финансовой операции,
  • [Udate] [smalldatetime] - учетная дата операции,
  • [Usum] [money] - учетная сумма операции в основной валюте,
  • [FormSum] [money] - сумма, заданная пользователем на форме FN_PersonalAccountUser,
  • [FormCur] [int] - валюта, заданная пользователем на форме FN_PersonalAccountUser,
  • [CrUser] [smallint] - создано пользователем (по базе SY_Users) - для тех случаев когда, например кассир, создает заявку для кого-то.
  • [CrDate] [smalldatetime] - дата создания документа,
  • [ExecUser] [smallint] - кассир, исполнивший документ,
  • [ExecDate] [smalldatetime] - дата исполнения документа,
  • [FromAccount] [int] - с какого счета поступают деньги,
  • [FromSum] [money] - сумма поступления в валюте счета,
  • [ToAccount] [int] - на какой счет поступают деньги,
  • [ToSum] [money] - сумма поступления в валюте счета,
  • [Type] [int] - тип финансовой операции по таблице FN_ListLogType,
  • [InRecord] [int] - не задействовано,
  • [EnaStatus] [int] - статус по таблице FN_ListEnaStatus
  • [EnaUser] [smallint] - пользователь (по SY_Users) разрешивший проводку,
  • [EnaDate] [smalldatetime] - дата разрешения проводки,
  • [sName] [nvarchar] - комментарий с описанием финансовой операции.
Для представления в удобочитаемом вида, для экспорта в 1С-бухгалтерию процедура FN_LogRead формирует представление этого журнала:
FN_SortFields
  • Эта таблица не используется в финансовых расчетах. Возникла из-за ограниченности контрола FlexGridST из библиотеки SPctlib.ocx, который в отличие от MSFlexGrid, не умеет отображать произвольные рекордсеты "на ходу" без предварительного обьявления колонок. Предварительное обьявление отображаемых колонок и выполняется в данной таблице. Соответственно, при каждом изменении столбцов данных, отображаемых в хранимых процедурах - необходимо модифицировать эту таблицу.
  • Аналогичная ситуация с таблицей #FN_TempLog1, которая также не используется в финансовых расчетах и также возникла из-за ограниченности контрола FlexGridST, который отличие от MSFlexGrid, не умеет сортировать данные в памяти без обращения к базе данных. Из-за этого данные приходится предварительно записывать в эту таблицу, а затем заново пересортировывать. Каждый раз при просмотре журнала операций эта таблица создается заново.
  • Помимо потери гибкости (необходимо предварительно объявлять поля данных), заметного торможения (из-за того, что контрол не умеет сортировать в памяти, генерируется дополнительный паразитный трафик с SQL-сервером) контрол FlexGridST неуправляем, и при двойном щелчке на строке начинает цикл ReadCell - приводящий к необходимости дополнительного паразитного обращения за строкой данных в базу - даже когда это в соответсвии с логикой программы не нужно совершенно. Из-за этого паразитного обращения в базу за данными было введено множество ненужных параметров в хранимые процедуры, которые должны обращатся в базу за отдельными записями (хотя они уже и так есть в памяти).
  • Контрол FlexGridST урезает не только возможности сортировки - при его использовании все обычные функциональные возможности MSFlexGrid (прочитать названия столбцов, поменять их, подсветить или отменить подсветку любой строки и т.д.) становятся недоступными.
  • Взамен сложности вызова (текст программы, выводящий данные в таблицу увеличился после введения этого контрола в 16 раз - с четырех строк до 64), потери гибкости, неуправляемости, генерации огромного дополнительного паразитного трафика обмена данными с базой и урезания стандартной функциональности - контрол FlexGridST якобы имеет дополнительные возможности - выделение нескольких строк (например для подсчета сумм) и возможность редактирования данных.
    Возможность выделения нескольких строк для подсчета сумм и для других целей реализована в модуле FN_Grid.MultiRows и занимает 14 строк - эта возможность использована на формах FN_KassAdmin и FN_PersonalAccountAdmin. А возможность редактирования выделенной строки в таблице предусмотрена стандартными средствами VB6 и дополнительного кода не требует вообще - как например это сделано на формах FN_PersonalAccountAdd и FN_Kurs.
  • Наконец, самая серьезная проблема FlexGridST - помимо сложности вызова, неуправляемости, генерации дополнительного паразитного трафика и урезанных функциональных возможностей - самая серьезная проблема FlexGridST - плотнейшая привязка логики программы к заведомо устаревшей и ныне не поддерживаемой технологии, проталкиваемой компанией микрософт с 1997 по 2002 год - АДО. Уже несколько лет назад эта технология признана тупиковой и не поддерживается.
    Даже литература по АДО датирована 1997-1998-1999 годом (Дженниннгс. Руководство разработчика баз данных на VB6 - 1999 год, Мак-Манус. Обработка баз данных на VB6 - 1999 год. Коннел.VB6. Введение в программирование баз данных - 1998 год.)
    С 2002 года Микрософт выпустила на рынок новую версию АДО - АДО.NET - и теперь только эта библиотека поддерживается компанией Микрософт (хотя год назад - 17.08.2004 - еще выпускались заплатки с пакетом исправления ошибок АДО).
    Уже несколько лет все новые прикладные разработки - например 1С бухгалтерия 8.0 - ведутся только с использованием АДО.NET.
    Введение FlexGridST в программу заводит всю разработку в тупик - привязывая ее к заведомо устаревшим и ныне давно забытым технологиям 1997-1998 года..., хотя конечно, и сегодня еще существуют люди, цепляющиеся за MS-DOS и идеи 1994-1995 года. Например, одну из программ под MS-DOS на клиппере в прошлом году закупил отдел лицензирования транспортных услуг Москвы...

Кроме FlexGridST (о котором сказано выше) при работе используется еще несколько контролов из библиотеки SPctlib.ocx: DateBoxST, NumBoxST, TextBoxST - которые не столь сильно функционально ограничены по сравнению со стандартными и не привносят так много недостатков в программу, как FlexGridST. Они могут быть легко заменены на стандартные - MaskedEdit, например - в том числе и на современные .NET-контролы, доступные через Web-интерфейс.

2.Описание форм.

В этой программы FN версии задействовано семь форм:
FN_PersonalAccountUserФорма выполнения расчетов пользователем.
FN_PersonalAccountKassaФорма работы кассира.
FN_KassAdminАдминистратор кассиров, назначающий логинам права быть кассирами в отношении многие-ко-многим.
FN_KursФорма для установки курса. Работает с произвольным числом валют.
FN_PersonalAccountAdminСостоит из двух вкладок - администратор счетов и администратор расчетов.
FN_PersonalAccountAddВариант формы администратора счетов. Вызывается непосредственно с формы FN_PersonalAccountUser при наличии соответствующих прав.
FN_PersonalAccountEditКарточка редактирования счета. Вызывается с таба управления счетами формы FN_PersonalAccountAdmin. В принципе имеет несколько вариантов запуска:
  • Редактирование существующего счета: поле Owner есть но недоступно для редактирования, в нем записан владелец счета
    Instr=1
    Arg1=<идентификатор (номер) счета>
    FCE.mCallSwitch Me, "FN_PersonalAccountEdit", 1, 1, Account, , , , , , , , , , , 54
  • Создание новой карточки: поле Owner доступно для редактирования, изначально не инициализировано
    Instr=3
    Arg1=0 или Missing
    FCE.mCallSwitch Me, "FN_PersonalAccountEdit", 3, 1, 0, , , , , , , , , , , 54
  • Создание новой карточки: поле Owner доступно и в нем изначально выбран владелец, указанный извне
    Instr=3
    Arg1=<идентификатор владельца>
    FCE.mCallSwitch Me, "FN_PersonalAccountEdit", 3, 1, Owner, , , , , , , , , , , 54

3.Описание контролов и модулей.

В состав программы FN входит один контрол:
MyNewControlИспользуется для работы с произвольным курсом валют на форме FN_Kurs
Примечание1. Функционально на формах с состоянием существуют еще подмаргивающие комбобоксы и ФлексГриды, привлекающие внимание пользователя - которые в версии 0.01 в отдельные контролы пока не выделены.
Примечание2. Модуль FN_Grid лучше было бы преобразовать в полнофункциональный контрол, самостоятельно работающий с данными, однако возникла проблема: хотя вызывающая программа передает Рекордсет, в контроле видится только одна коллекция Рекордсета - Fields.

и три модуля:
FN_GridСервис, расширяющий возможности стандартного MSFlexGrid. В версии 0.01 состоит из восьми методов:
  • DeleteSelectedRow(Tab1 As MSFlexGrid)
  • FillGrid(Grid As MSFlexGrid, tm As ADODB.Recordset)
  • LoadComboForFilter(Tab1 As MSFlexGrid, cbFilter As VB.ComboBox, ColumnName As String)
  • LoadComboForSorting(Tab1 As MSFlexGrid, cbSort As VB.ComboBox)
  • MultiRows(Tab1 As MSFlexGrid, tm As ADODB.Recordset)
  • SetSelectedRow(Tab1 As MSFlexGrid)
  • TabCursor(Tab1 As MSFlexGrid)
  • UnSelectedRow(Tab1 As MSFlexGrid)
FN_PrintПечать из программы FN вынесена в этот отдельный модуль.
API_RegistryНепосредственно для финансовых расчетов не используется. Используется для чтения/записи произвольных ключей реестра. Задействован в определении версии MDAC.

4.Описание хранимых процедур.

Весь доступ к данным осуществляется посредством 31 хранимой процедуры и двух функций:
Возвращает - RecordSet.
Возвращает - RecordSet.
Возвращает - флаг кассовая/некассовая операция.
FN_User_AccountCloseЗакрывает счет. Используется на формах FN_PersonalAccountAdmin, FN_PersonalAccountAdd. В параметре принимает:
@Account - номер закрываемого счета.
FN_User_AccountGetFreeNumberЭто сервис для открытия нового счета. Находит следующий свободный номер счета по порядку от 1. Параметров не требует. Используется на формах FN_PersonalAccountAdd, FN_PersonalAccountEdit.
Возвращает - номер.
FN_User_AccountReadИспользуется при редактировании данных счета. Используется на формах FN_PersonalAccountAdd, FN_PersonalAccountEdit.В параметре принимает
@Account - номер счета.
Возвращает - RecordSet.
FN_User_AccountReadAllИспользуется для чтения всех счетов пользователя. Используется на форме FN_PersonalAccountAdmin. Видит закрытые счета. В параметре принимает
@Owner - номер владельца счета по KK_Cards.
Возвращает - RecordSet.
FN_User_AccountReadFromOwnerДля той же цели, что и FN_User_AccountReadAll, однако имеет несколько сокращенный (пользовательский) формат и не видит закрытых счетов. Используется на формах FN_PersonalAccountAdd и FN_PersonalAccountUser. В параметре принимает
@Owner - номер владельца счета по KK_Cards.
Возвращает - RecordSet.
FN_User_AccountUpdateИспользуется для создания нового и обновления данных существующего счета. Используется на формах FN_PersonalAccountAdd, FN_PersonalAccountEdit. В параметрах принимает:
@Account int - номер счета, задается для существующего счета,
@ID int - номер счета, задается для нового счета,
@Type int - тип счета по базе FN_ListAccountType, в котором его вид (касса/не_касса, валюта и прочее).
@sName nvarchar(50) - наименование счета,
@LimitKassa int - предельный размер разового заказа денег в кассе без подписи администратора,
@LimitOver int - размер Овердрафта, т.е. минусового значения счета, который позволяет выполнить платежи без подписи администратора,
@KKID int - номер владельца счета по KK_Cards,
@NewRecord bit - если 1 - создание нового счета, если 0 - обновление данных существующего.
FN_User_ConvertИспользуется для конвертации валют по произвольному количеству валют, зарегистрированному в таблице FN_ListCurrency. Непосредственно с форм программы FN не вызывается. Используется в процедурах FN_User_LogUpdate и FN_User_LogSumAccount. Принимает на вход следующие параметры:
@FromVal int - номер валюты по FN_ListCurrency из которой производим конвертацию,
@FromSum money - сумма, которую конвертируем,
@ToVal int - номер валюты, куда конвертируем.
Возвращает:
@ToSum money OUTPUT - результат конвертации.
FN_User_CurrencyListВыводит список валют, зарегистрированных в FN_ListCurrency в удобочитаемом формате. Используется на форме FN_Kurs. При вызове принимает необязательный параметр:
@NumVal - номер валюты, если он задан то выводится таблица курсов только по одной валюте, если не задан - то вся матрица валют.
Возвращает - RecordSet.
FN_User_CurrencyUpdateУстанавливает новый курс валют. Используется на форме FN_Kurs. Принимает параметры:
@From nvarchar(10)- имя валюты из которой выполняется конвертирование,
@To nvarchar(10)- имя валюты, куда производится конвертирование,
@Kurs real - курс.
FN_User_EnableKassaIdForLoginИспользуется на форме администратора кассиров для определения касс, доступных на заданный логин. В параметрах принимает:
@Login - номер логина по SY_Users.
Возвращает - номер по KK_Cards.
FN_User_EnableLoginIdForKassaАналогично предыдущей прицедуре FN_User_EnableKassaIdForLogin, только наоборот - определить логины, доступные на заданную кассу. В параметрах принимает:
@Account - номер счета кассы.
Возвращает - номер по SY_Users.
FN_User_GetCurrencyCountИспользуется на форме FN_Kurs для определения количества валют, зарегистрированных в FN_ListCurrency (для последующего динамического создания необходимого количества контролов MyNewControl). Параметров не требует.
Возвращает - число валют в справочнике валют.
FN_User_GetOwnerForCurrentUserПолучает владельца (по таблице KK_Card) для пользователя известного по номеру по SY_Users. Используется на формах FN_PersonalAccountUser и FN_PersonalAccountAdd для предварительной загрузки на форму счетов, принадлежащих CurrentUser. Принимает параметр:
@SY_User - CurrentUser.
Возвращает - номер пользователя по KK_Cards.
FN_User_KassaDeleteПрименяется на форме FN_KassAdmin для запрета некоторому логину работать кассиром некоторой кассы. Принимает параметр:
@Account - номер счета кассы,
@Login - номер логина по SY_Users.
FN_User_KassaInsertВыполняет действие, противоположное FN_User_KassaDelete. Параметры те же.
FN_User_KassaListНа форме FN_KassAdmin получает список счетов типа Касса. Параметры не требуются.
Возвращает - RecordSet.
FN_User_KassaListForLoginНа форме кассира FN_PersonalAccountKassa позволяет выбрать перечень доступных касс. Принимает параметр:
@Login - CurrentUser
Возвращает - RecordSet.
FN_User_KassaReadQueueНа форме кассира FN_PersonalAccountKassa отбирает список документов, по которым кассир уже может выполнять операции. Принимает параметры:
@KassAccount int - если задано, то отбор только по конкретной кассе,
@LogID int - если задано, то в отборе участвует конкретный номер документа,
@IsPrinato bit - если 1, то отбор только утвержденных ордеров,
@IsFinished bit - если 1, то отбор только исполненных ордеров,
@Date1 smalldatetime - если задано, то отбор исполненных ордеров по конкретной дате.
Возвращает - RecordSet.
FN_User_LogAccountReadToЭта процедура формирует на форме FN_PersonalAccountUser список счетов куда переводятся деньги. Этот список отличается от списка откуда переводятся деньги - там не видно остатков по счетам, зато видны все возможные счета в зависимости от типа выбранной операции - кассовая/некассовая. Процедура принимает параметр:
@Kassa - кассовая/некассовая операция.
Возвращает - RecordSet.
FN_User_LogAssignПроцедура позволяет администратору разрешить финансовую операцию - на которую требуется его разрешение. Вызывается на форме FN_PersonalAccountAdmin. Принимает параметр:
@ID - номер документа, который подписывается.
FN_User_LogDeleteПозволяет удалить запись в журнале финансовых операций (если ее удаление разрешено) - например неподписанную администратором заявку в кассу. Используется на форме FN_PersonalAccountUser. Принимает параметр:
@ID - номер удаляемого документа.
Возвращает - код возврата, 0 - если удаление произведено.
FN_User_LogGetSortFieldsЭта процедура вызывается для использования совместно с FlexGridST на форме FN_PersonalAccountUser и считывает из таблицы FN_SortFields перечень столбцов, который будет отображать FlexGridST. Параметров не требуется.
FN_User_LogGetStatusЭто служебная процедура, вызываемая из FN_User_LogUpdate для расчета статуса вводимого в журнал документа. Имеет параметры:
@IsTypeKassa bit - тип записи в журнале,
@OverDraft bit - имеется ли Овердрафт,
@OverKassa bit - имеется ли превышение лимита по кассе,
@IsFromKassa bit - если деньги переводятся из кассы,
@IsToKassa bit - если движение денег производится в кассу,
Возвращает:
@Result int OUTPUT - рассчитанный статус, который будет вписан в журнал финансовых операций.
FN_User_LoginListПолучает список всех логинов в SY_Users (с учетом предпочтения). Используется на форме FN_KassAdmin. Параметров не требуется.
FN_User_LogIsMayDeleteОпределяет - может ли быть удалена запись в журнале финансовых операци FN_Log. Используется на форме FN_PersonalAccountUser. Принимает параметр:
@LogID - номер записи в FN_log.
Возвращает - номер записи или NULL.
FN_User_LogReadОсновная процедура, формирующая дружественное представление данных журнала финансовых операций FN_Log. Используется на формах FN_PersonalAccountUser, FN_PersonalAccountAdmin и при экспорте данных в 1С-бухгалтерию. Принимает параметры:
@Date1 smalldatetime - обязательный параметр, начальная дата отчета,
@Date2 smalldatetime - обязательный параметр, конечная дата отчета,
@CurrentUser int - обязательный параметр, номер пользователя по таблицу SY_Users. При формировании журнала используется для вывода представления пользователей полный/сокращенный.
@Owner int - отбор операций по одному владельцу,
@SortFields - поле сортировки (как в таблице FN_SortFields),
@ID int - задается ТОЛЬКО для чтения ОДНОЙ записи,
@Type int - отбор пи типу операций по таблице FN_ListLogType
@Status int - отбор по статусу операции по таблице FN_ListEnaStatus.
Возвращает - RecordSet.
FN_User_LogSetNewStatusПроцедура исполнения документа кассиром. Применяется на форме FN_PersonalAccountKassa. Принимает параметры:
@LogId - номер исполняемой записи в журнале,
@ExecUser - CurrentUser кассира.
FN_User_LogSumAccountПодсчитывает общую сумму в основной валюте на всех разновалютных счетах пользователя. Используется на форме FN_PersonalAccountUser. Принимает параметры:
@Owner int - номер пользователя по KK_Cards,
Возвращает:
@SumAccount money OUTPUT - результат подсчета сумма,
@SumBron money OUTPUT - результат подсчета - сумма забронированная к кассе.
Общая сумма принадлежащих пользователя средств - @SumAccount + @SumBron.
FN_User_LogTo_IsKassaЭта процедура, вызываемая на форме FN_PersonalAccountUser, при выборе типа операции - определяет, является ли выбранная операция кассовой - для последующего отбора счетов назначения, для которых допустимы выбранные операции. Принимает параметр:
@Type - выбранный на форме тип операции (в текстовом виде по таблице FN_ListLogType.
FN_User_LogUpdateЭта процедура, вызываемая на форме FN_PersonalAccountUser - единственная процедура, которая заносит финансовую операцию в журнал операций FN_Log. Принимает параметры:
@Udate - выбранная на форме учетная дата операции,
@FormSum - выбранная на форме сумма,
@FormCur - выбранная на форме валюта,
@CrUser - пользователь, создавший запись по таблице SY_Users - CurrentUser
@FromAccount - номер исходного счета,
@ToAccount - номер счета назначения,
@LogType - тип финансовой операции по таблице FN_ListLogType
@InRecord - номер заказа (не задействовано в дальнейшей обработке)
@sName - комментарий, введенный на форме.
Возвращает - двадцать кодов возврата, каждый из которых связан с конкретным запретом выполнения финансовой операции.
FN_User_Mimimum_InitПроцедура минимальной инициализации справочников для возможности начала работы программы FN.
FN_User_GetUserNameФункция, формирующая полное либо сокращенное имя пользователя, в соответствии предпочтениями, записанными в SY_VarsContainer. Используется в процедурах FN_User_LoginList и FN_User_LogRead. Принимает параметры:
@SY_ID int - номер логина пользователя, для которого мы хотим получить имя,
@CurrentUser int - номер логина текущего пользователя.
Возвращает - имя указанного пользователя в соответствии с выбранными предпочтениями текущего пользователя.
FN_User_LoadVarЭта функиция используется в функции FN_User_GetUserName и возвращает значение заданной переменной в текстовом виде с учетом умолчаний по таблице SY_VarsContainer. Принимает параметры:
@SY_ID int - номер пользователя, для которого мы возвращаем переменную,
@NumVar as int - номер переменной, которую мы возвращаем,
@IfEmpty as - умолчание, если заданная переменная на задана ни для пользователя №1 (по SY_Users) ни для текущего пользователя.
Возвращает - текстовое значение указанной переменной.

Работа с данными минуя эти процедуры не производится. Имеется лишь одно нарушение этого принципа - использование программы LoadListFromDB, которая грузит Combo-боксы на формах непосредственно по именам полей в базе, минуя представления данных, заданные процедурами.

5.Интеграция программы FN в SVA.

Работа программы FN невозможна вообще без минимальной инициализации справочников, поэтому в состав программы включена процедура минимальной инициализации справочников. Также для работы программы FN необходимо определить логины, которым даны следующие права:
53 Право выполнять расчеты по личному счету
54 Право администрировать расчеты
55 Право администрировать расчетные счета пользователей
57 Право назначать кассиров

Вызов программы производится путем добавления в ToolBar на форме MainMDI кнопки tbtDropDown:
1РасчетыFN_USER
2КассаFN_KASSA
3КонтрольFN_ADMIN
4Курс валютFN_KURS
5Права на кассыFN_KassAdmin
и соответствующей
обработкой событий Тулбара.



Comments ( )
Link to this page: //www.vb-net.com/wanted/FN_doc/Index.htm
< THANKS ME>