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

Из жизни горячей линии: «И давно у Вас задержки?
А чем Вы занимались до этого?»

Карикатура в номере: http://www.chance.ru/~zudin/gallery/bw/economic/011.htm


Приятная неожиданность (выпуск новой версии)

   Увидела свет (лучше бы она этого не делала) новая версия комплекса СБиС++ с номером 1.5. Кардинальных изменений в этой версии, пожалуй, и не произошло, но есть много приятных и не очень мелочей. В этом и следующих выпусках СБиС news постараемся рассмотреть все нововведения.


Улучшенная производительность

   Как утверждают разработчики, в новой версии значительно увеличена скорость переиндексации базы данных в формате “TBL”.
   Кроме того, “Jinnee.exe”, начиная с версии 1.7, должен быстрее конвертировать и оптимизировать базу данных. К тому же после оптимизации Btrieve базы данных её объём может значительно сократиться.


Закрывать окно внутри транзакции через ХХХ сек

   В окне “Конфигурация базы данных” появился новый параметр - “Закрывать окно внутри транзакции через ХХХ сек”. Чтобы было понятно, что этот параметр означает, и зачем он нужен, давайте рассмотрим пример из жизни.
   Допустим, Вы закрываете документ, в котором правило операции выдает некоторое сообщение (ну, например, “Привет!”) и ждет, когда Вы нажмете кнопочку “о'кей”. Вообще говоря, в этом нет никакого криминала, но процедура закрытия документа не делима, то есть она либо полностью выполняется, либо опять же полностью не выполняется. Знающие люди обозначают подобные процедуры страшным словом - транзакция.
   Теперь, представьте, что в середине процесса закрытия документа, программа приостанавливается и ждёт, когда же пользователь нажмет кнопку “о'кей”. А пользователь в это время пошёл покурить, кофе попить или ещё, какую нужду справить. База же данных находится в этот момент в несколько приподнятом состоянии (транзакция осталась не завершённой). Опять же ничего страшного нет, если с базой работает один человек. Когда же к базе обращается несколько пользователей, задержка выполнения транзакции чревата замедлением работы программы, зависанием станций и появлением ошибок в базе данных.
   Так вот, чтобы такого не происходило, через указанный в рассматриваемом параметре промежуток времени автоматически генерируется команда “Отменить”, что равносильно нажатию пользователем кнопки <Esc>. Окно закрывается, и процесс идёт дальше.
   На самом деле комплекс устроен так, чтобы по возможности в процессе транзакции не было ожиданий ввода. К сожалению не всегда это возможно, например, кроме уже описанной ситуации, то же самое получается при выводе сообщения об ошибке.


Новое в задаче “Кадры”

   В локальном меню штатного расписания появилась команда “Сформировать штатное расписание по должностям”. Как Вы, наверно, догадались, по этой команде штатное расписание формируется по справочнику должностей.
   Теперь в СБиС'е можно использовать единый общероссийский справочник городов и улиц.


Макрособесие

   В новой версии значительно доработана система выполнения макросов.
   Во-первых, для группы макросов и для отдельного макроса можно указать, сколько раз его повторять. Для этого нужно просто ввести нужное значение в соответствующее поле карточки макроса.
   Во-вторых, в командной строке СБиС'а можно указать, какой макрос выполнять при запуске комплекса. Делается это так:

sbis.exe /macro ИмяМакроса

   ИмяМакроса - имя макроса, которое опять же указывается в соответствующем поле карточки макроса.
   В-третьих, в меню теперь можно создавать кнопки, нажатие на которые будет вызывать на выполнение макрос. Для этого нужно сделать следующее.

  • укажите имя макросу, который будет выполняться;
  • откройте меню и переведите его в режим редактирования клавишей <Ctrl+F12>;
  • вставьте новую кнопку клавишей <Ins>;
  • в поле “Действие при нажатии кнопки” выберите значение “Выполнить макрос”;
  • в поле “Имя окна или макроса” укажите имя макроса, который нужно выполнить.

   В-четвертых, появилась возможность прерывать на время выполнение макроса, дождаться ввода нужной информации от пользователя, и продолжить выполнение макроса. Например, в процессе выполнения макроса нужно запросить у пользователя параметры выборки.
   Делается это так. Записывается последовательность клавиш, открывающая выборку и вызывающая окно “Параметры выборки”. Далее вставляется запись “Ожидание ввода”, после этого записывается всё остальное.


Печать полного названия раздела

   По многочисленным просьбам продвинутых пользователей, которых не пугают функции, переменные и объекты, затронем вопрос вывода в отчетах полного названия раздела.
   Вкратце опишем проблему - при построении отчетов возникает необходимость выводить полное название раздела, в котором находится запись. Например, при печати расходной накладной требуется вывести название склада и групп, в которых находится товар. Название группы, в которой товар находится доступно из переменной “Раздел”, но для того, чтобы добраться до всех вышестоящих групп придется потрудиться.
   Сделаем в файле “manager.pa0” заплатку расходной накладной с печатью полных разделов:

++Расходная накладная полный раздел.Расходная накладная (НДС включая)
+Строка
{
  Наименование=ПолныйРаздел("Склады","Наименование")+
               "."+Наименование;
  Напечатать("Шаблон.Строка");
}

   Заплатка с двумя строками расчета реализует поставленную задачу, но простота обеспечивается использованием функции “ПолныйРаздел”, поэтому рассмотрим функцию подробнее.
   Функция должна быть описана в файле с расширением “prg”, например, “sbis.prg”:

Функция ПолныйРаздел(Иерархия,Поле)
{
   # Определим переменные
   перем ПутьРаздел, НазваниеРаздел, Иерархия;
   ПутьРаздел = Поле;
   НазваниеРаздел = "";
   # ПутьРаздел – путь по связям к названию раздела
   # На каждом шаге цикла идет
   # переход к верхней иерархии,
   # например, "Склады>Наименование",
   # далее "Склады>Склады>Наименование"
   # Цикл продолжается до тех пор,
   # пока поле раздела иерархии не пустое
   Пока([Иерархия + ">" +ПутьРаздел])
   {
      НазваниеРаздел = "." +
         Текст([Иерархия+">"+ПутьРаздел],"в")+
         НазваниеРаздел;
      ПутьРаздел = Иерархия+">"+ПутьРаздел;
   }
   вернуть ПодСтрока(НазваниеРаздел,2,-1);
}

   Функция имеет два параметра: Иерархия – название поля перехода по разделам, определяется соответствующим реестром. Название иерархии можно выяснить с помощью программы “Jinnee” совершив несколько шагов:

  1. Открыть Джином словарь данных “!sbis.dic”;
  2. Найти соответствующий реестр, например “Складская картотека” или “Организации”;
  3. Открыть описание реестра и посмотреть название полей с типом “Иерархия”. В складской картотеке иерархия “Склады” или “Прайс-лист”, в организациях – “Организации”.

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


Новые формы:
задолженность за предоставленный кредит

   Обратите внимание на этот новый отчет задачи “Расчет зарплаты”. В нем выводится информация о кредитах, предоставленных сотрудникам. Форма строится через пункт меню “Внешние отчеты…” или из справочника сотрудников (группа “ВЕДОМОСТИ УДЕРЖАНИЙ”). Описание самого отчета находится в файле “uderjan.ffz”.


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