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

 Из жизни горячей линии: 
Вот у Вас тут написано –
«…сопровождение до 10 часов…». А после обеда можно?


А СБиС всё хорошеет и хорошеет

   Продолжим начатую в предыдущем выпуске тему – “новое в версии 1.5 популярнейшего бухгалтерского комплекса СБиС++”. Итак…


Оплата по всем документам сделки

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

  1. 01.01.99г. предприятие выписало счет на оплату товара1 и товара2 на сумму 500р;
  2. 05.01.99г. по этому счету поступила частичная оплата на сумму 450р, в т.ч. за товар1 50р, за товар2 400р;
  3. 10.01.99г. и 15.01.99г. была оформлена отгрузка.

   В версии 1.3 и раннее взаиморасчеты с покупателем в рассмотренном примере можно было проследить только по исходящим счетам, а оплата в документах отгрузки не отражалась, т.е. оплата учитывалась только по прямым связям.
   В версии 1.4 в конфигурации системы добавлен новый флаг "Оплата по всем документам сделки". В случае его установки программа просматривает и распределяет оплату по всем документам, т.е. расходные накладные окажутся оплаченными.


Журналы лиц и прайс-листов

   В последних версиях СБиС'а появились два новых журнала – журнал лиц и журнал прайс-листов. Об их назначении, я надеюсь, будет рассказано в ближайших выпусках. Пока же, обратите внимание, что эти журналы имеют номера 3 и 4. Поэтому, если у Вас в разделе “Прочие журналы” были разделы под такими номерами, то перед переходом на новую версию обязательно их измените, например, на 5 и 6.


Диалог с пользователем в отчетах и операциях

   Иногда требуется в отчетах и правилах операций организовать достаточно сложный диалог с пользователем, например, запросить несколько вариантов построения отчета или какие-то дополнительные параметры.
   Для реализации подобных запросов уже существовали функции “Спросить”, “Сообщить”, “ДаНет” и “СпроситьДаты”. Но и этого некоторым оказалось мало! Для таких привередливых пользователей были сделаны ещё две функции: “Меню” и “Диалог”.

Меню(”Строка1\nСтрока2”)

   В качестве параметра в функцию “Меню” передаётся текстовая строка, содержащая список пунктов меню. Пункты меню разделяются специальным символом – “\n” (перевод строки). Количество пунктов ограничивается только общей длинной строки – 255 символов.
   При выполнении функции “Меню” программа выводит окно со списком пунктов, указанных при вызове функции. Если количество пунктов превышает количество строк на экране, окно будет с прокруткой.
   Пользователь может либо выбрать нужный пункт и нажать <Enter>, либо нажать <Esc>. В первом случае функция вернет номер выбранного пользователем пункта меню. Нумерация пунктов идёт с единицы. Во втором случае будет возвращён ноль.
   Совместно с функцией “Меню” удобно использовать конструкцию “ВыборПо”, например:

ВыборПо(Меню(”Налево\nНаправо\nПрямо”))
{
   выбор 1:
      Сообщить(”Жену потеряешь!”);
   выбор 2:
      Сообщить(”Наше дело правое, мы победим!”);
   выбор 3:
      Сообщить(”А эта дорога ведёт к храму?”);
   иначе
      Сообщить(”Правильно, чего рыпаться!”);
}

Диалог(”Имя диалога”)

   Для удовлетворения нужд ещё более изощренных пользователей была введена функция “Диалог”. Данная функция выполняет произвольное диалоговое окно, описанное в файле ресурсов.
   Сами понимаете, что прежде, чем воспользоваться этой функцией, нужно описать окно в файле ресурсов.

ИНФОРМАЦИЯ К РАЗМЫШЛЕНИЮ
Файл ресурсов
– специальная таблица, содержащая некоторые необходимые для программы данные. В частности в файле ресурсов хранятся описания практически всех интерфейсных элементов программы. По своей внутренней структуре файл ресурсов – это таблица, в каждой строке которой хранится имя ресурса, его тип (окно, меню, выборка и т.д.) и непосредственно сами данные. Таким образом, при обращении к любому элементу файла ресурсов обязательно указывается имя ресурса и, возможно, его тип.
В состав комплекса СБиС++ входит несколько файлов ресурсов – это файлы с расширением “*.rs”. Кроме того, пользователь может создавать “заплатки” на уже существующие файлы ресурсов. Для работы с файлами ресурсов служит программа “jinnee.exe”.

   Итак, сначала необходимо описать диалоговое окно. Для этого вызовите джинна (нет-нет, не из бутылки, а из каталога “JINNEE” программу “jinnee.exe”). Создайте файл ресурсов “sbis.rs1” (пункт меню “Проект/Файл ресурсов/Создать новый”). В этом файле создайте диалоговое окно (как всегда клавишей <Ins>). Укажите имя окна, например, “Запрос имени”. А уже в этом окне внесите строку ввода (опять клавишей <Ins>). У строки ввода укажите имя – “ИмяПользователя”. Теперь всё это дело сохраняем, нажимая <Alt+X>, и выходим из “Джинна”.
   Ну, вот теперь (наконец-то!) можно воспользоваться функцией “Диалог”. Например, чтобы выполнить наше окно, нужно написать так.

Диалог(”Запрос имени”);

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

ИмяПользователя = ”Новиков”;
Диалог(”Запрос имени”);
Сообщить(ИмяПользователя);

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

ИмяПользователя = ”Новиков”;
Если( Диалог(”Запрос имени”) )
   Сообщить(ИмяПользователя);
иначе # было нажато “Отменить”
   Ошибка(”У Вас что, имени нет?”);


Новинки в зарплате

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


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