CбИС++ «БИТ»
   О ПРОГРАММЕ   
   О КОМПАНИИ   
   ЗАГРУЗИТЬ   
   ДОКУМЕНТАЦИЯ   
   · Руководство пользователя 
   · СБиС news
   · Статьи
   · Функции
   ПРАЙС-ЛИСТ   
   ВАКАНСИИ   
   АВТОМАТИЗАЦИЯ ТОРГОВЛИ   
СБиС news №35/18.04.2000
  • Зарплата: расчетная ведомость по отделам
  • Несколько добрых слов
  • Несколько советов по ускорению отчетов и операций
  • Печать таблицы с неизвестным количеством столбцов

    - Как в СБиСе вызвать список разработчиков?
    - А зачем? Киллеpу хочешь заказать?

  • Зарплата: расчетная ведомость по отделам Следующий раздел Предыдущий раздел В начало страницы

    В версии 1.8 в параметрах построения расчетной ведомости появился новый параметр - “По отделу”. Если он указан, то будут выводиться только суммы по указанному подразделению, то есть суммы будут фильтрироваться по полю “В отделе”. Таким образом, появилась возможность получить ведомость начислений по конкретному подразделению в разрезе сотрудников.

     

    Несколько добрых слов о товарном отчете Следующий раздел Предыдущий раздел В начало страницы

    В версии 1.8 в СБиС'е появился новый вид документа - товарный отчеты. Как его использовать:

    1. Вводим диапазон дат, за который формируется товарный отчет.
       
    2. Устанавливаем склад, если он не определен ранее.
       
    3. Если это первый отчет, то вводим вручную начальное сальдо, для следующих отчетов начальное сальдо берется с конечного сальдо предыдущего отчета.
       
    4. Нажимаем кнопку "Сформировать отчет". В результате в отчет будут занесены все приходные и расходные накладные, а также внутренние перемещения за данный период, которые изменяют содержимое выбранного склада.
       
      Если среди них встретились незакрытые документы, то вам представится возможность выбора: заносить или нет их в товарный отчет.
       
    5. Заносим вручную документы других типов (акты инвентаризации, акты переоценки, приходные кассовые ордера).

    Если в дальнейшем изменялись документы, занесенные в товарный отчет, то следует его открыть, нажать кнопку "Обновить" и снова закрыть.

    Обратите внимание на тот факт, что одни и те же документы могут по ошибке многократно заноситься в товарные отчеты.

     

    Несколько советов по ускорению отчетов и операций Следующий раздел Предыдущий раздел В начало страницы

    Пристально проанализировав несколько отчётов и правил операций, возникло непреодолимое желание дать несколько советов по уменьшению времени построения отчётов и выполнения операций (у нас же страна советов, а не баранов!).

    Используйте функции вместо “Напечатать”

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

    ++Отчет
    +Посчитать
    . А = 2*2;
    +Строка
    ...
    . Напечатать(”Посчитать”);
    ...

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

    ++Отчет
    {
       функция Посчитать()
       {
          вернуть 2*2;
       }
    }
    +Строка
    ...
    . А = Посчитать();
    ...

    Как показывают несложные опыты, кроме чисто эстетикоиделогических преимуществ такой метод дает выигрыш по скорости раза в полтора.

    Не забывайте указывать круглые скобки при вызове функций

    Давайте рассмотрим следующие две строки кода:

    Отладить; # первая строка
    Отладить(); # вторая строка

    В большинстве случаев выполнение обеих строк приведёт к одному и тому же результату - вызовется функция “Отладить”. Тем не менее, если написать так:

    Отладить = 0; Отладить; # первая строка
    Отладить(); # вторая строка

    … то функция “Отладить” будет вызываться только один раз - во второй строке.

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

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

    И несколько слов в заключение

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

     

    Печать таблицы с неизвестным количеством столбцов Следующий раздел Предыдущий раздел В начало страницы

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

    Реализовать такую печать можно с использованием символа с кодом 18. Если такой символ стоит в печатаемой строке, то перевод на следующую строку не производится. Рассмотрим пример. В нем задается массив с именем “А”, содержащий некоторые значения, его нужно распечатать в виде таблицы:


    ++Печать таблицы
    Параметр1 :ТЕКСТ 6
    Индекс, Массив[Индекс] :ТЕКСТ 5ц
    :ТЕКСТ в
    {
       Функция Таблица(Раздел, Массив, ...)
       {
          перем Параметр1 = Есть(Параметры[1])?Параметры[1]:"";
          перем Индекс;
          ДляВсех(Элементов(Массив,Индекс))
          Напечатать(Раздел);
          вернуть "";
       }
    }
    +Форма
    . А[1] = 1; А[2] = 4; А[3] = 9; А[4] = 16; А[5] = 25;
    ----------|^Таблица("Рамка",      А, "------" )           ^|--------
              |^Таблица("РамкаТекст", А, "| Печать заголовка")^||
       Индекс |^Таблица("Индекс",     А )                     ^|| Итого
    ----------|^Таблица("Рамка",      А, "------" )           ^|--------
     Значение |^Таблица("Значение",   А )                     ^||
    ----------|^Таблица("Рамка",      А, "------" )           ^|--------
    +Рамка
    ^Параметр1^
    +РамкаТекст
    ^Параметр1^
    +Индекс
    |^Индекс^
    +Значение
    |^Массив[Индекс]^
    

    ↕ в разделе “Рамка”, “РамкаТекст” и т.д. – символ с кодом 18 (не переводить строку). Вводится следующим образом – нажмите <Alt> и, не отпуская её, наберите на дополнительной цифровой клавиатуре 18.

    | до и после символа ^ при печати функции “Таблица” – символ с кодом 2 (разделитель ячейки)

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

     


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