|
|
|
|
·
·
·
·
|
|
|
|
|
|
|
СБиС news №35/18.04.2000
|
Зарплата: расчетная ведомость
по отделам |
|
|
В версии 1.8 в параметрах построения
расчетной ведомости появился новый параметр - “По отделу”. Если он указан,
то будут выводиться только суммы по указанному подразделению, то есть
суммы будут фильтрироваться по полю “В отделе”. Таким образом, появилась
возможность получить ведомость начислений по конкретному подразделению в
разрезе сотрудников. |
|
Несколько добрых слов о
товарном отчете |
|
|
В версии 1.8 в СБиС'е появился новый
вид документа - товарный отчеты. Как его использовать:
- Вводим диапазон дат, за который формируется товарный
отчет.
- Устанавливаем склад, если он не определен ранее.
- Если это первый отчет, то вводим вручную начальное сальдо, для
следующих отчетов начальное сальдо берется с конечного сальдо
предыдущего отчета.
- Нажимаем кнопку "Сформировать отчет". В результате в отчет будут
занесены все приходные и расходные накладные, а также внутренние
перемещения за данный период, которые изменяют содержимое выбранного
склада.
Если среди них встретились незакрытые документы, то
вам представится возможность выбора: заносить или нет их в товарный
отчет.
- Заносим вручную документы других типов (акты инвентаризации, акты
переоценки, приходные кассовые ордера).
Если в дальнейшем изменялись документы, занесенные в
товарный отчет, то следует его открыть, нажать кнопку "Обновить" и снова
закрыть.
Обратите внимание на тот факт, что одни и те же документы
могут по ошибке многократно заноситься в товарные отчеты.
|
|
Несколько советов по ускорению
отчетов и операций |
|
|
Пристально проанализировав несколько
отчётов и правил операций, возникло непреодолимое желание дать несколько
советов по уменьшению времени построения отчётов и выполнения операций (у
нас же страна советов, а не баранов!).
Используйте функции вместо “Напечатать”
Зачастую в отчётах повторяющийся
фрагмент отчёта выделяется в отдельный раздел и вызывается функцией
“Напечатать”. Причём, частенько реально в этом разделе ничего и не
печатается, а просто производятся некоторые вычисления. Например:
++Отчет +Посчитать . А =
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 и выше. И на самом деле это только заготовка, реально строка
“Значение” будет печататься тоже в цикле, например, “ДляВсех(Лиц)”. Тем не
менее, общая идея должна быть понятна.
|
<<< Предыдущий выпуск | Архив выпусков | Следующий выпуск >>>
|
|