CбИС++ «БИТ»
   О ПРОГРАММЕ   
   О КОМПАНИИ   
   ЗАГРУЗИТЬ   
   ДОКУМЕНТАЦИЯ   
   · Руководство пользователя 
   · СБиС news
   · Статьи
   · Функции
   ПРАЙС-ЛИСТ   
   ВАКАНСИИ   
   АВТОМАТИЗАЦИЯ ТОРГОВЛИ   
СБиС news №19/03.12.98

Ну, наконец-то!!!

   Да, да! Вышла эта самая долгожданная версия 1.4, пользуйтесь, если сможете!


Переход на версию 1.4 с более ранних версий СБиС++'а (ретроспектива)

   Поскольку версия 1.4 комплекса СБиС++ была значительно переработана по сравнению с более ранними версиями, при переходе на новую версию следует знать и помнить о следующем.

Изменение формата таблиц

   К сожалению, в новой версии пришлось изменить формат заголовка локальных таблиц и индексов, то есть файлов “*.tbl” и “*.mcx”, а также “*.dic” и “*.rs”.
   В связи с этим при любом обращении к этим файлам программ sbis.exe версии 1.4 и jinnee.exe версии 1.6 происходит преобразование заголовков. Соответственно после этого старые версии упомянутых программ уже не смогут прочитать преобразованные файлы. Помните про это и ни в коем случае не мешайте старый jinnee c новым, холодное с горячим, пиво с портвейном и т.д.

Конвертация данных из задачи кадры

   В новой версии значительно, если не сказать хуже, изменилась задача “Учет кадров” (об этом чуть позже). Так вот, в связи с этим при переходе на новую версию придется сделать следующие манипуляции с базой данных.

  1. Скопировать в каталог с базой данных все новые словари включая словарь convert.dic (проверить, чтобы отсутствовал словарь macro.dic и присутствовал словарь global.dic)
  2. Сконвертировать базу данных новым Jinnee'ом.
  3. При этом:
    1. Таблицу KATEG совместить с таблицей CLASS.
    2. В таблице “Классификаторы” совместить поля:
       Категории-Сотр   Категории-Сотрудники 
       Категория   Название 

    3. В таблице “Сотрудники” совместить поля:
       Категории-Сотр   Категории-Сотрудники 

    4. В таблице “Сотрудники(расширение)” совместить поля:
       Национальность   Нац2 

  4. Запустить sbis.exe с параметром /convert
  5. Удалить словарь convert.dic и заново сконвертировать базу данных Jinnee'ом.
  6. Проверить целостность базы данных тем же Jinnee'ом.

   А еще проще запустить файл convert.bat из подкаталога CONVCADR. Он должен все сделать сам при условии, что база будет находиться в подкаталоге DB. В противном случае следует в файле convert.bat заменить DB на название требуемого каталога.
   После этого не забудьте:

  1. После выполнения процесса конвертации ОБЯЗАТЕЛЬНО проверить базу данных Jinnee'ом.
  2. Проверить правильность переноса информации, перечисленной ниже.
  3. Обо всех ошибках в процессе конвертации немедленно оповестить автора (Волкова Дмитрия).

   Зачем все это делалось? Если не произвести конвертацию, то будет потеряна, следующая информация:

  1. Национальность.
  2. Специальность.
  3. Семейное положение.
  4. Категории (весь справочник).
  5. Приказы на изменение штатного расписания.

   Так что, если в базе не было этой информации или она не важна, можно и не производить вышеупомянутую процедуру.

Права пользователя

   Как уже упоминалось в 15-ом выпуске СБиС news, в новой версии значительно переработана система разграничения прав пользователей. Очень советую прочитать вышеупомянутый выпуск заново. Кроме того, в природе существует статья, описывающая новую систему разграничения прав. Эту статью Вы можете скачать, либо с нашего web-сайта (www.tensor.ru/sbis, раздел “Статьи”), либо взять в фирме “Тензор”.
   В процессе конвертации базы данных в новую версию никаких дополнительных телодвижений в связи с правами делать не требуется, но после конвертации, скорее всего, придется заново установить права пользователей.

Конвертация таблицы “Связи параметров”

   При конвертации базы данных в версию 1.4 обратите внимание на таблицу соответствия полей таблицы “Связи параметров”. Поле “Тип параметра” нужно поставить в соответствие полю “тип параметра”, а поле “Значение|Деньги” совместить с полем “Значение|Строка” (ничего страшного, что тип полей разный).


Использование функций “Следующий” и “Предыдущий” для перебора записей

   С версии 1.4 комплекса СБиС++ вводится несколько новых функций для работы с таблицами базы данных. Эти функции предназначены для работы с БД на достаточно низком уровне, поэтому их использование предполагает хорошее знание внутренней структуры БД комплекса и понимание принципов ее функционирования. Также для правильного использования новых функций требуется хорошее понимание понятия “Объект” встроенного языка комплекса. Опишем эти функции последовательно, по мере усложнения принципа их работы. Ввиду того, что функции “Следующий” и “Предыдущий” действуют одинаково, а вся их разница заключается в направлении выбора, мы будем рассматривать только первую функцию. Все, что будет сказано о функции “Следующий”, относится также и к функции “Предыдущий”.

Объект(‘Имя таблицы’)

   Эта функция создает объект, соответствующий записи указанной таблицы. Первоначально этот объект не содержит каких-либо реальных данных – все его поля пусты. Они будут заполнены при использовании функций “Следующий” или “Предыдущий”.

Следующий(Объект1,Объект2,‘Имя связи’)

   Эти функции предназначены для выбора записей, связанных с уже имеющейся. Здесь “Объект1” соответствует записи из основной таблицы, а “Объект2” – записи из связанной таблицы. Между этими таблицами должна существовать связь с именем “Имя связи” – третий параметр функции. Последний параметр обычно можно опускать – в этом случае автоматически будет подобрана подходящая связь.
   Для иллюстрации работы этой функции приведем пример реального отчета с поясняющими комментариями. Этот отчет печатает список организаций и для каждой из них показывается список ее представителей. Для построения отчета нам потребуется информация, что все представители находятся в таблице “Частные лица”. Наш новый отчет будет базироваться на уже существующем (в sbis.rpt) отчете “Организации”.

++Организации (полный список с представителями).
Организации (полный список).У

   Первым делом необходимо создать объект, в который по мере выбора будут помещаться данные о каждом представителе. Так как представители хранятся в таблице “Частные лица”, объект также создаем на основе этой таблицы.

.пПредставитель = Объект("Частные лица");

   Для работы отчета нам необходимо переопределить раздел отчета “Строка”. В нем и будет выполняться вся работа по извлечению данных о представителях. При печати реестра организаций нам доступен объект ‘Лицо’ – данные о печатаемой организации.

+Строка
{
   Напечатать("Организации (полный список).Строка");
   пЗаголовокПредставитель = "";
   Пока( Следующий(Лицо,пПредставитель))
   {
      Если(!пЗаголовокПредставитель)
         Напечатать("ЗаголовокПредставитель");
      Напечатать("Представитель");
   }
}

   В приведенном выше разделе отчета используется цикл “Пока( Следующий(Лицо, пПредставитель) )”. Он будет продолжаться до тех пор, пока в таблице, соответствующей объекту ‘пПредставитель’ (это “Частные лица”) есть записи, связанные с объектом ‘Лицо’ (т.е. сами представители). Для каждого представителя будет напечатан раздел отчета “Представитель”, а перед началом печати списка представителей для каждой организации – раздел “ЗаголовокПредставитель”. Ввиду простоты этих разделов, мы не будем их здесь приводить.

Следующий( Объект, ‘Иерархия’ )

   Эта функция несколько отличается от описанной ранее. Сразу можно заметить, что у нее только один параметр типа ‘Объект’, поэтому эта функция будет работать только с одной таблицей – той, которая соответствует указанному объекту. Она берет просто следующую запись в указанной иерархии. С помощью этой функции можно перебрать все записи в таблице, входящие в указанную иерархию. Вообще, имя иерархии обычно можно не указывать, т.к. в таблице она, как правило, одна. Указать ее имеет смысл в тех местах, где их несколько – примером может служить таблица “Складская картотека”, в которой есть две иерархии (“Склады” и “Прайс-лист”).
   Однако перебор записей по иерархии не всегда означает перебор всех записей таблицы, т.к. некоторые записи могут вообще не входить ни в какую иерархию. Но иногда может быть полезно перебрать вообще все записи. В этом случае в качестве второго параметра можно указать просто пустую строку (””).


<<< Предыдущий выпуск | Архив выпусков | Следующий выпуск >>>