Техническое описаниеВстроенные функции, язык описания проводок, отчетов, печатных форм, документов и аналитических справочников.
Данный текст предназначен для тех, кто занимается установкой и настройкой программы ("внедрением"), подключением нестандартных справочников, групповых и сложных проводок и т.п. Описание работы с программой приведено в документе "Руководство пользователя".
Проектирование форм справочников и документов
Описатели объектов для экранных форм
Встроенные функции и константы
Проектирование печатных форм
Печать в Microsoft Word и Excel
Директивы принтера
Задание проводок
Аналитическая расчетная ведомость
Специальная настройка программы
Особые функции программы
Примеры
Практикум (проблемы и решения)
Описатели экранных формЭкранные формы представления и редактирования аналитических справочников и документов задаются в файлах-описателях, которые можно редактировать любым текстовым редактором или изменять при помощи программы "Генератор форм". "Главбух" работает со справочниками и документами исключительно через файлы описаний. Благодаря такому подходу легко разрабатываются и подключаются новые документы и аналитические справочники, становиться возможным учитывать требования Заказчиков к составу полей справочников и т.п.
Подключение описателей справочниковОписатели справочников в инсталляции содержатся в каталоге FORM. При подключении нового справочника, в зависимости от выбранного пользователем типа, подключаются следующие описатели:
тип справочника | описатель |
организации | orgdef.txt |
мат.ценности | matdef.txt |
курсы валют | valdef.txt |
сотрудники | sotrdef.txt |
простой | onedef.txt |
основные средства | osndef.txt |
товары | tovdef.txt |
Подключение описателей документовСписок документов содержится в файле DOCUMS.TXT. При запуске программа вначале пытается найти этот файл в текущем каталоге, и, если он не найден, ищет его в каталоге, указанном в настройках (закладка "Админист", параметр "Описатели"). Поэтому для рабочих мест с собственным перечнем документов этот файл должен быть расположен в их собственном каталоге, а в общем каталоге будет список документов, доступных всем рабочим местам.
Структура файла DOCUMS.TXT:Каждый документ описывается отдельной строкой, содержащей следующие параметры:
Код документа должен быть уникальным. Это всегда один символ, большая буква или цифра. Коды документов используются при формировании проводок непосредственно от документов, минуя базу операций (директива %MAKETRAN) и для указания документа-приемника при экспорте документов (директива I). Три значения кода зарезервированы для реестров документов товарно-материального блока:
V - расходные накладные,В настройках документов из поставки приняты следующие коды:
U - приходные накладные,
T - реестр счетов.
R- книга продаж,В имени файла можно задать маски для месяца и года, разбив таким образом реестр документов по месяцам или годам. Например, F:\DATA\NAK|M|Y.DBF задает в каталоге F:\DATA набор баз вида NAK0999.DBF, NAK1299.DBF и т.п., при открытии реестра программа выберет базу, соответствующую текущему месяцу и году.
A- платежное поручение,
G- платежное требование,
B- приходный кассовый ордер,
C- расходный кассовый ордер,
D- счет-фактура,
E- накладная.
Структура файла описанияСтроки файла описания содержат объявления или комментарии. Строки с комментариями начинаются со знака "/" Первый символ каждой строки - ключевой, он определяет объект на форме редактирования или списка, или задает директиву.
Описатели объектовОбъект описывается одной строкой, первый символ которой задает тип объекта, затем задается смещение левого верхнего угла слева, сверху, затем ширина, содержание объекта, после чего могут быть указаны необязательные параметры: тип значения и указатели по автозаполнению при создании нового объекта. Все параметры разделяются запятой, смещения задаются в пикселах.
визуальные объекты | директивы | ||
|
назначение |
|
назначение |
L | надпись, метка |
|
количество записей загрузки |
E | редактирование поля |
|
обработка изменения поля |
V | просмотр переменной или поля |
|
определение ключей поиска |
|
выбор из списка значений |
|
описание колонки реестра |
|
вызов справочника |
|
CREATE - создание поля |
|
рисунок, изображение |
|
DOUBLE- 2 экземпляра |
|
размеры формы |
|
CHILDBASE -подчиненная база |
|
цвет формы |
|
определение печатной формы |
|
логическое поле |
|
задание вариантов группировки |
|
размеры реестра |
|
определение ввода операции |
|
текст в длинном поле |
|
MAKETRAN проводки |
|
колонки сортировки | ||
|
экспорт в другую базу | ||
|
экспорт в другой документ | ||
|
IMPORTFILE импорт из файла | ||
|
CLASSIFIER классификатор | ||
|
UNIQUE уникальное поле | ||
|
CB директивы импорта (Клиент-Банк) | ||
|
EXTERNAL внешняя программа справочника | ||
|
TOVCODES, %TOVLABELS настройки для накладных ТМЦ | ||
|
SELMODE параметры для выбора из больших справочников |
LL - подпись. Задается текст надписи:
L,100,80,40,номер-здесь задано создание объекта типа "подпись" (Label), расположенного на 100 точек вправо от левого края формы и в 80 точек от верхнего, длиной 40 точек, с текстом "номер". Сразу после символа L можно задавать символы стиля подписи: B - подпись жирным шрифтом, I - текст подписи курсивом, U - текст подчеркнут. Например:
LB,100,80,40,сумма заказатекст подписи будет выделен жирным шрифтом: сумма заказа
LBI,100,96,60,всеготекст подписи будет выделен курсивом и жирным шрифтом: всего
EE - редактирование. Задается имя поля в базе или переменной:
E,150,80,160,NUM- здесь задано создание объекта для редактирования поля базы данных NUM. Редактирование производится в прямоугльнике с координатами левого верхнего угла 150 (слева) и 80 (сверху) длиной 160. Допустимы также модификаторы B, I, U, управляющие стилем шрифта в окне редактирования (см. описание L). Дополнительные возможности:
E,150,80,160,SUMC,X- редактируется поле SUMC, в котором хранится число с плавающей запятой в машинном представлении (8 байт). Возможные типы данных:
C - обычный символьный тип (по умолчанию)Для автоматического заполнения поля новыми значениями при вводе новой записи используются директивы, начинающиеся на "AUTO...". Например,
X - число с плавающей точкой в машинном представлении
D - дата (8 байт)
N - числовой тип в DBF-файлах
I - двухбайтное целое число (1..65535)
E,150,80,160,NUM,AUTONUMздесь редактируется поле NUM базы данных, при создании новой записи содержимое этого поля генерируется автоматически: берется значение этого поля в последней записи в базе данных и прибавляется единица (автонумерация). Возможные варианты автоматического заполнения:
NN - редактирование текста в длинном поле (как E, но на экран выводится не одна, а несколько строк текста из поля). Задаются координаты, размеры окна редактирования и имя поля:
N,150,80,160,80,NOTEздесь редактируется поле NOTE в прямоугольнике шириной 160 и высотой 80 пикселов (может поместиться от 3 до 4 строк текста).
JJ - редактирование логического поля. Формирует экранный элемент, который может находится в двух положениях: отмеченном и неотмеченном. Отмеченное положение означает, что соответствующее поле в базе данных принимает значение "T" (истина), неотмеченное - " " (пробел, означающий "ложь"). Перед именем поля задается наименование элемента:
J,180,161,138,товар с НДС,WITHPDVдополнительный параметр MARK позволяет использовать этот описатель для показа полей, в которых отмечается, что с документом сделаны проводки или производился экспорт в другой документ. В этом случае в поле пишется символ "*", что воспринимается как отмеченное значение и пробел в противном случае. Такой элемент может быть изменен только программой, поэтому он показывается как неактивный (пользователь не может его вручную изменить даже в режиме редактирования). Например:
J,180,161,138,документ проведен,CODE,MARK
VV - просмотр значения поля в базе или переменной. Задается аналогично "Е", но только для просмотра содержимого поля без возможности его изменения.
Если на какое-то поле нужно ссылаться в формулах вычислений, но его содержание не должно выводиться на экран, его следует описать с нулевой длиной.
В описанной таким образом переменной можно показать результат вычисления выражения. После имени переменной ставится запятая, затем знак "@", затем выражение, которое может включать любую встроенную функцию, имя поля и т.п., начинаться со знака "=". В формах редактирования аналитических справочников можно дополнительно использовать функции выборки из аналитических остатков:
AFUNC_S(счет; месяц; документ) - остаток на данном счете для текущего объектаи функции выборки из проводок:
AFUNC_SD(счет; месяц; документ) - дебетовое сальдо
AFUNC_SC(счет; месяц; документ) - кредитовое сальдо
AFUNC_S2(счет; месяц; документ) - остаток по сумме-2
AFUNC_K(счет; месяц; документ) - количественный остаток по объекту
AFUNC_SUMS(счет; месяц; документ) - себестоимость объекта (сумма остатка/количество)
AFUNC_D(счет; месяц) - дебет по заданному счету для текущего объектаво всех функциях первый параметр (счет) - обязателен, остальные параметры - необязательны. По умолчанию ищутся остатки за текущий месяц по всем номерам документов. Все параметры могут быть выражениями (например, счет может браться из поля базы данных, для вычисления месяца можно писать что-то вроде =@M-1, номер документа тоже можно брать из поля базы данных). Порядок задания объектов в файле описания имеет значение. Необходимо следить, чтобы в выражениях использовались только те объекты, описание которых предшествует строке с выражением.
AFUNC_C(счет; месяц) - кредит
AFUNC_I(счет; месяц) - количество по приходу
AFUNC_O(счет; месяц) - количество по расходу
Например, в карточке основного средства можно вывести остаточную стоимость объекта:
V,10,20,0,UCHSUM,@ AFUNC_S(SHET) - учетная стоимость на счете из поля SHET (невидимо)В карточке товара можно показать текущие остатки и цену хранения на складе:
V,10,20,0,AMSUM,@ AFUNC_SC(131) - начисленная амортизация на счете 131 (невидимо)
V,10,20,80,UCHSUM,@ =UCHSUM-AMSUM - разница (остаточная стоимость объекта)
V,100,120,80,KOL,@ AFUNC_K(281) - количество остатка
V,100,150,80,PRC,@ AFUNC_SUMS(281) - цена (себестоимость) товара
BB - выбор из списка значений поля или переменной. Задается имя поля в базе где хранится индекс и описание списка выбора.
B,150,80,160,GRUPPA,1-я группа,2-я группа,3-я группа,4-я группа- здесь в указанном месте формы будет создан объект для выбора одной позиции из четырех в списке. При выборе первой позиции в поле базы данных GRUPPA запишется "1", второй - "2" и так далее. Если после имени поля перед первым фиксированным значением поставить знак "!", то в базу будет записан не номер выбранной позиции (индекс), а само значение. Например,
B,150,80,160,SHET,!,103,104,105,106,107Здесь при выборе второй позиции в поле базы данных SHET будет записан текст "104".
B,150,80,160,GRUPPA,#A- в этом случае список для выбора будет создан из всех объектов справочника с кодом A. При выборе объекта из списка в поле будет скопирован номер соответствующего объекта;
B,150,80,160,GRUPPA,@- список выбора будет сформирован из всех возможных значений поля GRUPPA, уже имеющихся в базе. При выборе объекта в поле будет скопировано значение строки выбора (а не ее номер), список выбора последнего типа пользователь может пополнять.
AA - вызов справочника. Задается код справочника и указания по копированию полей из базы справочника в текущую базу данных.
A,306,88,23,#1,NAME=>ORGNAME,ACCOUNT_1=>ACCN- на форме создается кнопка шириной 23 пиксела с координатами 306 пикселов слева и 88 сверху. При нажатии пользователем на эту кнопку вызывается справочник с кодом "1". При выборе из справочника объекта, из базы справочника считывается соответствующая запись и содержимое поля NAME из нее копируется в поле ORGNAME редактируемой записи, аналогично поле ACCN заполняется значением поля ACCOUNT_1 из справочника. Курсор ввода при этом перемещается в окно редактирования последнего поля в списке копирования (в данном случае ACCN). Существует специальная функция @OBJNUM, возвращающая код выбранного из справочника аналитического объекта, который можно сохранить в соответствующем поле: ...,@OBJNUM=>ANUM
A,300,90,23,FSHET,=>STNAME,@OBJNUM=>STCODEЗдесь создана кнопка вызова справочника с координатами 300, 90 и шириной 23 пиксела. При нажатии на кнопку вызовется первый аналитический справочник, прикрепленный к счету, который пользователь должен занести в окно редактирования поля SHET (это поле обязательно должно быть описано в форме директивой E). После выбора объекта из справочника его название скопируется в поле STNAME, а код (номер записи в базе справочника) - в поле STCODE.
A,8,208,120,#1;организации,NAME=>ORG
DD - картинка, задаются координаты левого верхнего угла и размеры картинки (ширина и высота),затем - имя файла с картинкой:
D,360,36,124,80,em.bmpДля вывода динамических картинок (своя картинка для каждой записи базы документов или справочника) перед именем поля базы, в котором должно храниться имя файла с картинкой, нужно написать знак "%". После имени через пробел можно задать строку параметров, в которую могут входить знаки A - автоматическое выравнивание размеров картинки, S - растягивать картинку до заданных размеров. Например:
D,360,36,200,300,%PICTURE Sв этом примере предполагается, что в базе есть поле PICTURE, в котором хранится имя файла с изображением (поддерживаются форматы .BMP и .JPG), это поле должно быть описано также директивой E (с нулевой длиной, если не нужно видеть имя файла). Размер вывода 200х300, картинка всегда будет растягиваться, вписываясь в эти размеры.
F - форма, задаются размеры формы: ширина и высота
F
F,500,300
WW задает ширину окна реестра аналитических объектов или документов в пикселах. По умолчанию для справочников это 292, для документов - 604, однако может быть иным, если в настройках установлено сохранять расположение и размеры окон. Второй параметр (необязательный) задает высоту окна:
W 400,400
Директива WC задает ширину окна классификатора (если он присутствует). По умолчанию она равна 169 пикселам. Например:
WC 200
MM - задает максимальное количество записей, которое может быть считано в справочник или в реестр документов
M 100По умолчанию это число равно 300. Если в справочнике записей меньше, то в список выбора будут скопированы все записи из справочника. Если число записей больше, то для выбора из справочника нужно сделать запрос к базе данных. Для документов, если число записей в базе документов больше 300, в реестр будут считаны последние 300 записей из базы.
%SELMODE параметрыЗадает параметры выбора объекта из "большого" справочника (число объектов в котором больше величины, заданной параметром M). Для выбора объекта вводится запрос (код объекта, первые буквы наименования и т.п.), после чего производится поиск всех записей в базе справочника, удовлетворяющих запросу. Если в строке параметров присутствует буква E (латинская), опция запроса "искать по точному совпадению" будет выставлена по умолчанию (это удобно при выборе по коду объекта, например, по номенклатурному номеру товара). Если в строке параметров присутствует буква A (латинская), то, если в результате запроса был найден один единственный объект, он автоматически будет выбран (оператору не нужно дополнительно нажимать Enter или кнопку выбора). Пример:
%SELMODE AE
OO - задает реакцию на изменение пользователем какого-то поля в окне ввода. Задается имя поля, при выходе из редактирования которого нужно реагировать, и, через запятую - выражение.
O MFO_1,"MFO_1=>BNK_2- здесь при изменении поля MFO_1 значение этого поля будет скопировано в поле BNK_2.
O SUM,=SUM/6=>NDS- здесь при выходе из окна редактирования поля SUM (например, сумма накладной), в поле NDS будет помещена 1/6 суммы (сумма НДС). Текстовые выражения начинаются с двойных кавычек, числовые - со знака =. Если поле "реагирования" не задано, указанное выражение будет выполняться каждый раз при выводе карточки на экран или смене объекта (до начала редактирования):
O ,=SUM+NDS=>ALLSUMв этом примере предполагается, что в базе справочника или документа есть поля SUM и NDS, но отсутствует поле ALLSUM (для которого, тем не менее, задана форма вывода оператором "V"). В этом случае ALLSUM будет выполнять роль переменной, значение которой не сохраняется в базе данных, но может быть вычислено и выведено на экран при показе (редактировании) формы. Если вместо поля "реагирования" стоит знак "*", то выражение будет вычисляться при выходе из любого поля формы. Например,
O *,=SUM1+SUM2+SUM3+SUM4+SUM5=>SUMв этом случае сумма полей SUM1..SUM5 будет вычисляться и помещаться в поле SUM при каждом переходе из поля в поле. При вычислении выражений может оказаться полезной функция @ROUND(выражение,точность), вычисляющая результат с округлением с заданной точностью. Например:
O KOEF,@ROUND(SUM/KOEF,4)=>REZ1здесь в поле REZ1 будет записан результат деления значения полей SUM и KOEF с 4-мя знаками после десятичной точки.
O NDS,@IF(SUM/6-NDS>0.01;НДС вычислен неправильно!;)=>ShowMessageпри выходе из редактирования поля NDS программа вычисляет выражение SUM/6-NDS и, если оно превышает 1 копейку, выводит сообщение "НДС вычислен неправильно!", в противном случае ничего не происходит (пустое сообщение не выводится).
O PDVSEL,@IF(PDVSEL=0;"ПДВ+=SUM/6;PDV)=>PDVВ данном примере на экранной форме создан селектор PDVSEL (объект создан при помощи описателя B и может не иметь соответствующего поля в базе данных), который имеет два положения: "С НДС" и "Без НДС". Если пользователь активизирует селектор и выбирает "С НДС", в поле PDV вставляется текст "ПДВ " и значение поля SUM, деленное на 6 (НДС по ставке 20%), если пользователь выбрал "Без НДС", в поле PDV вставляется текст "Без ПДВ".
O PDVSEL,@IF(PDVSEL=1;"Без ПДВ;PDV)=>PDV
O PDVSEL,@IF(PDVSEL=0;PDV+"ПДВ+=SUM/6;PDV)=>PDVИ, наконец, имеется возможность добавить результат в любое место уже существующего текста. Для этого нужно поставить в этом месте курсор, а затем выбрать нужное положение селектора. Для этого используется дополнительная приставка @PASTE, организующая вставку результата в позицию курсора заданного поля через буфер обмена. Например:
O PDVSEL,@PASTE @IF(PDVSEL=0;"ПДВ+=SUM/6;)=>NOTEКстати, при этом в буфере обмена остается результат вычисления выражения. В качестве поля приемника можно использовать специальную функцию @EDITFLD, которая соотвествует полю, в котором находился курсор непосредственно перед вызовом данного обработчика. Например:
O SPRAV, @PASTE SPRAV=>@EDITFLDЗдесь используется объект SPRAV (также созданный описателем B), при выборе значения которого текст селектора вставляется в положение курсора того поля карточки документа, в котором находился курсор непосредственно перед тем, как пользователь нажал кнопку выбора селектора SPRAV.
CC - задает цвет формы
C $02DCD89BЧисло для задания цвета формы состоит из 4-х разделов по 2 шестнадцатеричные цифры. Первый разряд рекомендуется всегда задавать 02, следующие три разряда кодируют интенсивности цветов - синий, зеленый, красный.
SS - задания ключей для поиска. Можно задать до 4-х вариантов поиска в базе - название ключа поиска и номер поля в базе (поля нумеруются от 1).
S организация, 2- здесь вариант поиска называется "организация", при его выборе поиск заданной пользователем подстроки будет производиться в поле номер 2 базы данных.
S код ОКПО, 10- при выборе этого варианта строка поиск заданной строки будет производиться в поле номер 10.
S примечание, 8,9,10поиск в примечании будет вестись по содержанию трех полей базы данных: 8,9,10.
RR - описание колонки для реестра документов или списка объектов справочника. Задается заголовок колонки, ее ширина в пикселах, способ выравнивания, имя поля в базе данных. Способ выравнивания задается знаком:
< выравнивание влево- здесь описана колонка реестра с заголовком "номер", шириной 44 пиксела, с выравниванием по центру, колонка заполняется строками из поля NUME базы данных
> выравнивание вправо
- выравнивание по центру.R номер, 44, -, NUME
R сумма, 72, >, SUM- колонка с шапкой "сумма" шириной 72 пиксела с выравниванием вправо и задающим полем SUM
R дата, 72, -, DAT1,Dздесь описано поле типа "дата". Возможные типы полей:
REST | остатки по товару на складе |
RESERV | остатки по товару на складе с учетом выписанных счетов |
COST | учетная стоимость за единицу товара |
EDIZ | единица измерения товара |
R остатки, 60, >, REST, U
%CREATE%CREATE - задание описателя поля базы данных. Эти описатели необходимы для создания новой базы данных. Для каждого поля задается 4 параметра: имя поля, тип, длина и точность. Точность необходимо задавать для всех полей базы. Тип поля задается символом:
%CREATE NAME , C, 40, 0- здесь описано поле NAME символьного типа длиной 40 знаков
%CREATE SUM, N, 16,2- поле SUM числового типа длиной 16 знаков с двумя знаками после десятичной точки.
%DOUBLE (только для документов)%DOUBLE - разрешает для печатной формы возможность печати двух экземпляров на одном листе бумаги А4. После директивы (без пробела) может стоять знак + или -, определяющий, будет ли по умолчанию отмечен селектор печати двух экземпляров. Например, %DOUBLE- позволяет печатать два экземпляра (выводит на экран селектор выбора - 1 или 2 экземпляра), но по умолчанию будет печататься один.
P (только для документов)P - определение печатной формы (для документа). Задается наименование печатной формы и имя задающего файла. Имя нужно указывать полностью (включая подкаталог).
P платежное поручение = FORM\platwin.txt- здесь описана печатная форма с названием "платежное поручение" и задающим файлом platwin.txt из каталога FORM. Если задано печатных форм задано две или больше, пользователь их может выбрать из меню.
G (только для аналитических справочников)G - задание вариантов группировки данных. Задается название варианта и номер поля, по значениям которого производится группировка. Дополнительно могут быть заданы варианты расшифровки значений поля: списком или ссылкой на справочник.
G по городам, 8- здесь описан способ группировки с названием "по городам", группировка производится по значениям поля номер 8 базы данных справочника.
G по назначению, 4, ?; производственные; непроизводственные- описан способ группировки с названием "по назначению". Группировка производится по значениям поля номер 4, при этом записи со значением "1" в этом поле группируются с названием "производственные", записи со значением "2" - "непроизводственные". Если в поле стоит пробел или "0", то эти записи при выводе на экран будут сгруппированы с названием "?".
G по кодам, 3, #K- группировка с названием "по кодам" осуществляется по полю с номером 3. В этом поле хранятся коды (номера записей), которые расшифровывуются из справочника с кодом "K". Например, все записи, у которых в поле 3 текущего справочника стоит число 5, будут сгруппированы в группу с названием пятого объекта в базе данных справочника с кодом "K".
T (только для документов)T - определение для ввода операции по документу. Перечисляются поля, содержащие день операции (месяц - текущий), сумму, объект аналитического справочника, номер документа, примечание, отметку о совершении проводки,код журнала операций.
T DAY,SUM,NAME,NUM,NOTE,CODE,2в этом примере при нажатии на кнопку "ввод операции" появляется окно для ввода операции и проводок, заполненное информацией из текущего документа: день из поля DAY, сумма операции - из поля SUM, номер документа - из поля NUM, примечание - из поля NOTE. При вводе проводок, при выборе аналитического объекта из справочника, программа попытается найти в справочнике объект с именем из поля NAME и установить на нем курсор для выбора. Если операция будет сделана, в поле CODE запишется отметка (знак "*"). Сделанная операция будет помещена в журнал операций с кодом "2". Дополнительно (также через запятую) могут быть заданы настройки для генерации проводок в таком порядке: сумма (выражение для вычисления суммы, которое может включать константы и имена полей), количество (выражение), проводка (задается также, как и в дереве). Можно задать несколько проводок. Например,
T DAY,SUM,NAME,NUM,NOTE,,,SUM,50 %KSHETздесь поле отметки и код журнала операций не заданы (будут использованы значения по умолчанию), но задана одна проводка, в качестве суммы которой берется значение поля SUM, счет дебета "50", счет кредита берется из поля KSHET.
T DAY,SUM,NAME,NUM,KORG+NAME+OPER,TRANZ,0,SUM,,50[V,%KODNAZN] %KSHETздесь в полях базы документа содержится: DAY - день, SUM - сумма операции, NAME - имя подотчетного лица или организации, которые внесли деньги, NUM - номер ордера, KORG - код лица (табельный номер) или код ОКПО организации, OPER - наименование операции, TRANZ - поле отметки о сделанных проводках, KODNAZN - содержит код назначения из справочника, подключенного к счету 50, KSHET - содержит корреспондирующий счет (62, 71 и т.п.). В окне редактирования имеется описатель
A,290,66,20,#V,@OBJNUM=>KODNAZN,NAME=>NOTEорганизующий выбор из аналитического справочника видов платежей и сохраняющий код вида в поле KODNAZN и название вида в поле NOTE. Аналогичным образом можно было бы организовать передачу аналитической информации для корреспондирующего счета.
%BAN разрешить_редактировать; разрешить_добавлять; разрешить_удалятьТолько для документов. Определяет дополнительные ограничения на права пользователя на изменение данных в реестре документов, разрешая или запрещая редактирование записей, добавление новых и удаление ненужных документов. В качестве условий можно задавать константы TRUE, FALSE или список (через запятую) кодов операторов, которым будет разрешена соответствующая функция (должен быть включен режим идентификации оператора в настройках товарного блока).
%MAKETRAN,задание параметров для системы ввода проводок от документа. В отличие от описанного выше ключа "T" организует не передачу данных из документа в журнал операций и создание проводок от полученной операции, а непосредственное создание проводок от документа. Сделанные документом проводки можно просмотреть (клавиша F10), удалить (специальная клавиша на панели), отредактировать (повторное нажатие клавиши ввода проводок). При расшифровке проводок можно увидеть как краткую расшифровку (какой документ сделал проводку), так и весь документ полностью. Таким образом, база документов превращается в базу операций.
%MAKETRANF
QQ - задание номеров колонок для сортировки данных. Задается номер колонки в реестре, намерация с единицы. Можно задать два номера колонки (через запятую). Колонки по умолчанию сортируются как строки. Если колонка в реестре описана типом "N", данные сортируются как числа, т.е. получим (1,2,10) а не (1,10,2). Ширина колонок такого типа не должна превышать 32 знаков. Например,
Q 3,1строки в справочнике будут отсортированы по значениям в третьей колонке (для справочника курсов валют это дата). Если значения в третьей колонке совпадут, они будут отсортированы согласно значениям в первой колонке.
H (только для документов)H - задание функции пользователя (для выполнения операции экспорта из базы документов в произвольную базу пользователя). Формат задания:
H имя_пункта_меню;вид;путь_к_базе;поле_отметки;список_соответствия_полейгде
H передача оплаты;AL;\work\kassa.dbf;CODE1;NAME=>NAME,SUM=>SUM,CODE=>CODEIDДля экспорта в другой документ можно также вызывать внешний DLL. Например:
H передать данные на оплату;AL;(все в одну строку). Здесь вызывается функция ExpOpl из динамической библиотеки k3exp.dll, которой передается набор строк вида имя_поля_приемник = значение_поля_источника. Например, для записи, в которой значения полей равны:
@CALL k3exp.dll,ExpOpl;CODE;
NUM=>F_CODE_DOC,KORG=>F_CODE_ORG,SUM=>F_SUM,KSHET=>F_CRED,"30/1"=>F_DEB
NUM="125"в DLL-файл будет передан набор строк:
KORG="6548"
SUM="54.21"
KSHET="63/1"
F_CODE_DOC="125"
F_CODE_ORG="6548"
F_SUM="54.21"
F_CRED="63/1"
F_DEB="30/1"
I (только для документов)I - задание параметров для передачи из текущей базы документов в другую базу документов (используется, например, для выписки накладной по уже выписанному счету и т.п.). Формат задания:
I код_документа, признак, список_соответствия_полейкод_документа - уникальный для каждой базы документов код, задается в docums.txt. В товарном блоке можно экспортировать в расход (V), приход (U), счета (T), для экспорта в базу следующего месяца нужно ставить знак "+" сразу после кода, например, V+ - экспорт в реестр расходных товарных накладных следующего месяца. В этом параметре можно также задать директиву экспорта во внешний текстовый файл (см. описание дальше). Внутри параметра, после знака ";", может присутствовать имя поля, в котором будет делаться отметка об экспорте для предотвращения повторного экспорта. По умолчанию отметка делается в поле EXPORTED (если оно, конечно, присутствует в базе данных и содержится в описателе документа).
I B,X,NUM=>NOTE,DAY=>,MONTH=>в этом примере при нажатии кнопки "экспорт в другой документ" создается новый документ из базы документов с кодом "B", все поля активного документа переписываются в одноименные поля документа в базе "B", за исключением трех полей: содержимое поля NUM перепишется в поле NOTE, а поля DAY и MONTH в новом документе или останутся незаполеннными, или заполнятся по умолчанию, если в настройках присутствуют команды типа AUTODAY или AUTOMONTH.
Экспорт во внешний текстовый файлДля задания экспорта во внешний текстовый файл необходимо: для обычных документов параметр код_документа задать как %путь_и_имя_файла, а для документов товарного блока, для передачи всех позиций накладной, задать T%путь_и_имя_файла. Например, для обычного документа строка
I %D:\EXP\DATA.TXT;OTM,Xэкспорт в текстовый файл,DAY=>,MONTH=>создает в меню экспорта пункт с названием "экспорт в текстовый файл", при выборе которого значения всех полей документа сохраняются в файле D:\EXP\DATA.TXT в виде имя_поля=значение, причем поля DAY и MONTH очищаются. В документе в поле OTM делается отметка об экспорте, и когда пользователь пытается вторично экспортировать документ, выводится соответствующее предупреждение. Данные всегда добавляются в конец файла, в качестве разделителся документов вставляется символ прогона страницы и перевода строки. Экспорт во внешний текстовый файл может использоваться как для передачи данных документов в другие задачи, так и для последующего экспорта другими документами (например, из другого рабочего места).
%IMPORTFILE (только для документов)%IMPORTFILE имя_файла, параметры
%IMPORTFILE d:\exp\data.txt,DAЗдесь из внешнего файла D:\EXP\DATA.TXT осуществляется импорт всех записей в текущий реестр документов, по окончании работы исходный файл удаляется. Данная директива будет работать и для документов товарного блока (при условии, что экспорт в файл производился с включением номенклатуры накладных), но при этом не поддерживается автоматический импорт всего списка - для каждого документа необходимо явно выбрать проводку при сохранении.
%CHILDBASE (только для документов)%CHILDBASE имя_базы, ключевое_поле
%CLASSIFIER имя_базы_классификатора, поле_классификаторазадает связь с базой классификатора. В базе классификатора в первом поле хранится классификационный код. Это поле типа "C" длиной 2*n байт, где n - количество уровней классификатора (до 64 уровней). Во втором поле хранится название уровня.
%UNIQUE поле, наименование_полязадает поле в базе данных, содержание которого должно быть уникальным для каждой записи (например, номер документа для накладной, код ОКПО для организации и т.п.)
%UNIQUE NNUM, номер документадиректива вызова внешнего модуля для работы со справочником. Указывается имя внешней динамической библиотеки (DLL-файла), внутри которого должна быть экспортирована функция SELECT(integer):double; stdcall. Эта функция принимает текущее положение объекта (входной параметр - номер записи в базе) и возвращает номер записи, выбранной пользователем. Если пользователь отказался от выбора, функция возвращает ноль.
%TOVCODES код_организаций, код_менеджеров, код_прайсов (только для форм блока ТМЦ)задаются коды для справочников организаций, менеджеров (ответственных за сделку) и прайс-листов, которые будут использоваться при работе со счетами, приходными и расходными накладными товарно-материального блока. Директива может присутствовать в файлах t_fac.txt (счет), t_prih.txt (приходная накладная) или t_ras.txt (расходная накладная). Если директива отсутствует, или в ней заданы не все справочники, коды справочников берутся по умолчанию ("2" - организации, "3" - менеджеры, "P" - прайс-листы). Дополнительно (четвертый, пятый и шестой параметры) также можно задавать коды объектов по умолчанию (номера записей в соответствующих справочниках): код склада, код покупателя (получателя), код поставщика.
%TOVLABELS список_подписей (только для форм блока ТМЦ)задание списка подписей к экранным элементам счета, приходной или расходной накладной в подсистеме товарно-материального учета "Главбуха". В списке подписей через запятую перечисляются наименования экранных элементов формы. Пропуск (но не пробел) означает, что используется подпись по умолчанию. В тексте подписи нельзя использовать знак запятой. Порядок подписей понятен из примера, который устанавливает те же самые подписи, что и "прошиты" в самой программе:
%TOVLABELS Номер док-та, партия №, прайс, поставщик (откуда), менеджер, получатель (куда), примечание, срок оплаты, получил, доп.расходы, скидка, налог.накл.Если вместо элемента стоит знак "X" (большая латинская буква X), соответствующая подпись вместе с ее элементом редактирования будет скрыта от пользователя.
%CB командагде "команда" - команда на специальном языке описания алгоритма импорта выписки банка. Выписка банка читается строчка за строчкой, функциями выборки из текущей строки заполняются поля документа и проверяются условия окончания документа и завершения выписки. Пример программы приведен ниже (или, целиком файл настройки документа "выписка банка").
|
|
%FILENAME=имя_файла | задать имя файла с выпиской банка или шаблон для выбора из списка файлов |
%CODETABLE=параметр | выбор кодировки файла. По умолчанию - кодировка Windows 1251. Для ДОС-кодировки по украинскому ГОСТ параметр = DOS |
%ABSOLUTE=поле, строка, функция | заполнение поля документа, общего для всех импортируемых записей (например, дата выписки в шапке файла). Задаются: имя поля документа, номер строки в выписке банка, имя функции вырезки данных из строки |
%START=текст | позиционироваться на заданной строке для начала работы (например, выбор валюты в выписке по мультивалютному счету) |
%SHIFT=смещение | пропустить заданное количество строк перед первым документом |
%ENDSTRINGPOS=текст | признак конца группы документов, приводит к окончанию работы импорта |
%NEXTLINE | чтение следующей строки выписки |
имя поля=функция | заполнение полей документа функциями выборки из текущей строки выписки |
%APPEND поле=функция | добавление к значению поля результата функции выборки из текущей строки |
%IFEMPTY(функция) команда | Если результат функции есть пустая строка, будет выполнена следующая команда |
%IFNOSUBSTR(текст) команда | Если в текущей строке нет заданного текста (подстроки), будет выполнена следующая команда |
%IFEXP(условие) команда | Если условие выполнено, будет выполнена следующая команда |
%MONEY(поле) | преобразование текста в числовом поле (убирает разделители тысяч и т.п.) |
%MONEY100(поле) | то же самое, только сумма делится на 100 (когда в сумме нет разделителей копеек) |
%SKIP | текущий документ не будет включен в реестр (пропущен) |
%FINDAN(параметры) | поиск аналитического объекта в справочнике по коду (поиск организации по коду ОКПО). Задаются следующие параметры: код_справочника, поле_документа_с_кодом_ОКПО, поле_справочника_с_кодом_ОКПО, поле_документа_с_названием, поле_справочника_с_названием, поле_документа_с_аналитическим_кодом. Например: %FINDAN(2,OKPO,MFO_2,NAME,NAME,ANUM). Последний параметр не обязателен. |
%FINDADDAN(параметры) | поиск аналитического объекта в справочнике по коду (поиск организации по коду ОКПО). Если объект не найден, справочник автоматически пополняется. |
%CHECKNEWDOC условие | Если условие выполняется, начинается обработка нового документа (управление передается в начало программы, следующие операторы игнорируются) |
%NEWDOC | Начало нового документа (управление передается в начало программы) |
|
|
WORD(номер) | взять слово с заданным порядковым номером (слова разделяются пробелами) |
ITEM(символ,номер) | в строке с разделителем "символ" взять вхождение с заданным номером (по сути, то же, что и WORD, но с произвольным разделителем) |
CHAR(номер) | взять символ с заданным номером |
SUBSTR(смещение,длина) | вырезать подстроку с заданной позиции заданной длины |
STRING | возвращает всю текущую строку выписки |
|
|
CHAR(1)#SPACE | первый символ текущей строки - не пробел |
WORD(6)=КРЕДИТ | шестое слово в строке - "КРЕДИТ" |
ПРИХОД<SUBSTR(10,80) | в подстроке с 10 символа длиной не более 80 знаков встречается слово "ПРИХОД" |
%CB %FILENAME=a_*.txt
%CB %START=980 Українська гривня %CB %SHIFT=6 %CB DATE=WORD(1) %CB NUM=WORD(3) %CB %IFEMPTY(SUBSTR(31,16)) SUM=SUBSTR(54,70) %CB %IFEMPTY(SUBSTR(31,16)) TYP=1 %CB %IFEMPTY(SUBSTR(54,70)) SUM=SUBSTR(31,16) %CB %IFEMPTY(SUBSTR(54,70)) TYP=2 %CB %MONEY(SUM) %CB %NEXTLINE %CB %IFEMPTY(SUBSTR(2,6)) %NEXTLINE %CB %NEXTLINE %CB NAME=WORD(2)+WORD(3)+WORD(4)+WORD(5) %CB %NEXTLINE %CB %IFNOSUBSTR(ЕГРПОУ) %APPEND NAME=STRING %CB %IFNOSUBSTR(ЕГРПОУ) %NEXTLINE %CB OKPO=WORD(2) %CB %FINDADDAN(2,OKPO,MFO_2,NAME,NAME,ANUM) %CB %NEXTLINE %CB NOTE1=STRING %CB %NEXTLINE %CB %CHECKNEWDOC CHAR(1)#SPACE %CB NOTE2=STRING %CB %NEXTLINE %CB %CHECKNEWDOC CHAR(1)#SPACE %CB NOTE3=STRING %CB %NEXTLINE %CB %NEWDOC %CB %ENDSTRINGPOS=Обороти за день |
Иногда выписка клиент-банка приходит в виде DBF-файла, который формируется за каждый банковский день. Программа поддерживает чтение таких выписок, при этом вместо имени функции выборки нужно просто писать имя поля из базы выписки банка. В этом случае также можно использовать дополнительный условный оператор %IF(имя_поля=значение). Пример программы чтения выписки в виде DBF-файла приведен ниже:
%CB %FILENAME=C:\KLIENT\EXIT\*.dbf
%CB %CODETABLE=DOS %CB DATE=DATA %CB NUM=ND %CB SUM=S %CB %IF(DK=0) TYP="1 %CB %IF(DK=1) TYP="2 %CB %MONEY(SUM) %CB NAME=KL_NM_K %CB OKPO=KL_OKP_K %CB %FINDADDAN(2,OKPO,MFO_2,NAME,NAME,ANUM) %CB NOTE=TEXT1 %CB %NEWDOC |
@TAX( выражение )вычисление подоходного налога из суммы, определяемой выражением. Шкала налога берется из настроек (В главном меню: "Настройки" - "Установки", закладка "Константы").
@RATE( код_справочника , код_валюты , +)функция определения курса валюты. Например:
@IF( выражение сравнение выражение ; выражение1 ; выражение2 )условный оператор. Условие задается знаком "сравнение", который может быть одним из следующих: < > = #. Если условие выполняется, значением оператора становится результат выражения1, в противном случае - выражение2. Например,
@IF(KOL>6.AND.KOL<11;KOL;)Здесь условие выполняется, если значение поля KOL лежит в интервале от 6 до 11.
@Mтекущий месяц (активный в программе). Возвращает номер месяца 1..12.
@YEARтекущий год. Возвращает 4 цифры года: 1998, 1999, 2000...
@YEAR2Возвращает 2 последние цифры текущего года, например 99.
@Qтекущий квартал. Возвращает 1..4.
@WRKD(месяц)возвращает количество рабочих дней в заданном месяце текущего года. Месяц задается константой или выражением (например, @M-1). Для работы функции необходимо, чтобы пользователь задал календарь рабочих дней (хранится в файле CALEND00.TXT (в конце последние две цифры года) и редактируется через меню "справки"-"календарь", кнопка "раб.дни". Имя файла календаря и путь к нему могут быть изменены параметром CalPath в файле настроек GBW.SES).
@WRKH(месяц)возвращает количество рабочих часов в заданном месяце текущего года. Месяц задается константой или выражением (например, @M-1). Задание календаря рабочих часов производится так же, как и количество рабочих дней для функции @WRKD
@DAYSFROM(выражение или имя поля)возвращает число дней от даты, определяемой выражением, до даты ввода операции (проводки). Может использоваться при начислении амортизации ОС в зависимости от даты ввода ОС в эксплуатацию.
@MONTHSFROM(выражение или имя поля)возвращает число полных месяцев от даты, определяемой выражением, до последнего дня месяца, предшествующего месяцу ввода операции (проводки). Может использоваться при начислении амортизации ОС в зависимости от даты ввода ОС в эксплуатацию.
@YEARSFROM(выражение или имя поля)возвращает число полных лет от даты, определяемой выражением, до последнего дня месяца, предшествующего месяцу ввода операции (проводки). Используется в групповых проводках при начислении амортизации ОС в зависимости от даты ввода ОС в эксплуатацию.
ABS(выражение)возвращает абсолютное значение (модуль) числа, определяемого выражением
@ABS(выражение)
@INT(выражение)возвращает целую часть результата вычисления выражения в скобках (в виде строки). Выражение надо начинать со знака "=", т.к. оно должно иметь тип "число". Например, @INT(=SUM/6) вернет целую часть значения поля SUM, деленного на 6.
@CENT(выражение)возвращает дробную часть (копейки) результата вычисления выражения в скобках. Выражение задается также, как для функции @INT.
@ROUND(выражение,точность)вычисляет выражение и возвращает результат с заданном количеством знаков после десятичной точки.
@STRINGSNUM- для документов - возвращает количество заполненных строк из документа (позиций, в которых в полях с именем SUM1, SUM2 и т.д. не ноль);
@YEAROF(выражение)возвращает номер года из выражения типа "дата"
@YEAROF2(выражение)возвращает две последние цифры номера года из выражения типа "дата"
@MONTHOF(выражение)возвращает номер месяца из выражения, которое должно иметь тип "дата" (например, имя поля в базе данных типа "дата")
@DAYOF(выражение)возвращает день (число) из выражения типа "дата"
@MONTHNAME(выражение)название месяца, определяемого выражением. Возвращает строку: январь..декабрь
@MONTHNAMS(выражение)название месяца в родительном падеже. Возвращает строку: января..декабря
@DATEOF(выражение)возвращает дату словами (например, "28 ноября 1999") из выражения типа "дата"
@TODATE(выражение)преобразует дату в формате DBF (годмесяцдень) в день-месяц-год. Например, запись в базе данных вида 20010724 будет выведена как 24-07-2001
@CURDATEвозвращает текущую дату (а не дату операции или документа). Используется для впечатывания в распечатываемый документ.
@CURTIMEвозвращает текущее время. Используется для впечатывания в распечатываемый документ времени распечатки.
@CURDATETIMEвозвращает текущую дату и время. Используется для впечатывания в документ даты и времени распечатки.
@SUBST(имя_файла)возвращает текст из файла, который может содержать числа, текст или формулы для дальнейшего расчета. Может также применяться в описателе синтетических журналов-ордеров по группе счетов для задания списка счетов, не помещающегося в поле ввода
@FVAL(имя_поля)возвращает значения поля с заданным именем для текущей записи (функция определена в печатных формах документов)
@ANFVAL(поле_аналитики, имя_поля)Эта функция определена в печатных формах документов (справочников) и возвращает значение поля "имя_поля" для объекта аналитического справочника, определенного значением "поле_аналитики". Для текущего объекта вычисляется
@LINKFVAL(поле_связи_1,поле_связи_2,имя_связ_базы,имя_поля)функция определена в печатных формах документов и возвращает значение поля в связанной базе. Для текущего объекта вычисляется значение поля "поле_связи_1", затем в базе с именем "имя_связ_базы" ищется запись, имеющая в поле "поле_связи_2" такое же значение. Если такая запись найдена, возвращается значение поля "имя_поля" для этой записи.
@OBJFVAL(код, поле_объекта, имя_поля)возвращает значение поля "имя_поля" в базе справочника с кодом "код" для объекта с кодом, содержащемся в поле "поле_объекта" для текущей записи. Функция определена для аналитических справочников, документов и аналитических журналов-ордеров с ручным заданием. Если поле_объекта имеет тип C, значения предполагаются в машинном виде; для обычных числовых данных поле должно иметь тип N.
@OBJECTNUM(поле_аналитики)возвращает номер аналитического объекта из поля аналитики (3 знака, код справочника и 2 байта номера объекта в машинном представлении)
@CLASSNAMEвозвращает строку классификации текущего аналитического объекта (используется при формировании и печати аналитической расчетной ведомости и документов, если подключен классификатор). В аналитической расчетной ведомости можно указать детализацию (количество уровней классификации), например, @CLASSNAME(2)
@SUMP(выражение)сумма прописью для гривни. Вид написания и язык выбираются из настроек, закладка "общие". В печатных формах после этой функции через пробел может следовать дополнительный текст, например
Имеется возможность определить функцию суммы прописью и для других валют. При вызове функции суммы прописью для других валют вторым параметром передается трехзначный код валюты, например:
@SUMP(SUM1;RUR)язык суммы прописью и вид написания суммы прописью определяется настройками (закладка "общие", селекторы "сумма прописью" и "язык"). Программа поддерживает три наиболее популярные валюты: USD - доллары США, DEM - немецкие марки, RUR - российские рубли. Для других валют необходимо задать описание в специальном файле с именем VALNAMES.TXT в формате:
код_валюты;род_валюты;описатели_на_русском;описатели_на украинскомгде
род_валюты - литера M для валют мужского рода (рубль, доллар), W для валют женского рода (гривня, марка),Например, для российского рубля получим:
описатель - название валюты в разных склонениях в виде: сокращенное_наименование;наименование_копеек;склонение_1;склонение_2;склонение_3.
RUR;M;руб.;коп.;рубль;рубля;рублей;руб.;коп.;рубль;рубля;рублів;
функция по МФО банка возвращает его название (для банков Украины). Первые два параметра входные - имена полей МФО и расчетного счета. Если поле "название_банка" (в которое идет копирование) уже заполнено чем-то,
@MFOBANKNAME(мфо,счет)
@MFOBANKTOWNвозвращает город банка, определенный предварительно вызванной функцией @MFOBANKNAME
@SELECTDOC(код, поле_фильтра, значение_фильтра, поле_возврата)функция вызывает на экран реестр документов с кодом "код", отфильтрованный по заданному полю (в качестве значения фильтра можно задавать выражение или имя поля текущего документа). Пользователь выбирает двойным щелчком нужный документ из списка, после чего функция возвращает значение поля "поле_возврата" выбранного документа. Например, следующая строка при заполнении поля наименования клиента в платежном поручении вызывает книгу покупок, отфильтрованную по выбранному клиенту, и после выбора документа его номер впечатывается в поле примечания NOTE_4:
O POL_1, @SELECTDOC(P,NAME,POL_1,NUM)=>NOTE_4
@SLICE(выражение_строка; начало_вырезки; длина_вырезки)функция вырезки из строки заданной длины. Строка может быть задана выражением (не содержащим знаков ";"), начало и длина задаются константами. Например:
@SLICE(@MFOBANKNAME;1;10)- возвращает первые десять символов названия банка, вычисленного функцией @MFOBANKNAME.
GETSHET(выражение)из выражения, возвращающего счет (например, результат функции @DET_SHCRED и т.п.) вырезает и возвращает соответственно счет (без субсчета) или субсчет. Если счет не имеет субсчетов, функция GETSUBSHET вернет пустое значение
GETSUBSHET(выражение)
S(счет, месяц) - сальдофункции синтетических итогов. Вместо параметра "месяц" может стоять выражение, например M-1 (ссылка на предыдущий месяц). Параметр месяца может отсутствовать, в этом случае берется текущий месяц. Для функций оборотов вместо месяца можно задать интервал месяцев, например "1,6" - будут браться результаты за полугодие, с января по июнь.
SD(счет, месяц) - сальдо дебетовое
SC(счет, месяц) - сальдо кредитовое
D(счет, месяц) - дебет
C(счет, месяц) - кредит
A(счет_дебета,счет_кредита,месяц) - обороты по заданной корреспонденции
@SRD(счет, день, месяц)функция возвращает синтетический остаток на заданном счете на начало заданного дня заданного месяца текущего года. День и месяц могут быть заданы выражениями. Например, в печатной форме кассовой книги (из аналитического журнала с ручным заданием) можно сослаться на остаток в кассе на начало отчетного периода:
110 41 20 =@SRD(301,@DAYFROM,@M)
Функции вычисления аналитических данных @AF_???Эти функции возвращают аналитические остатки и обороты по счетам для конкретно указанного кода аналитики. Функции используются при составлении отчетов или в формулах для распределения затрат на проекты или продукцию. Это функции остатков:
@AF_S остаток на данном счете для текущего объектаи функции выборки из проводок (работают медленнее):
@AF_SD дебетовое сальдо
@AF_SC кредитовое сальдо
@AF_S2 остаток по сумме-2
@AF_K количественный остаток по объекту
@AF_SUMS себестоимость объекта (сумма остатка/количество)
@AF_D дебет по заданному счету для текущего объектаФункциям передаются до 4 параметров, первые два из которых обязательны. Параметры разделяются запятой:
@AF_C кредит
@AF_I количество по приходу
@AF_O количество по расходу
1 - счетНапример,
2 - объект (номер записи в аналитическом справочнике)
3 - месяц (по умолчанию берется текущий)
4 - 1 или 2 аналитика (по умолчанию 1)
@AF_S(109,1595) - сумма остатка на счете 109 для аналитического объекта с внутренним кодом 1595
@AF_D(79,1,@M-1) - оборот по первой (по номеру в базе) статье справочника доходов на счете 79 в предыдущем месяце
@AF_S(281,3,,2) - общая стоимость товаров (сч.281) на третьем складе в текущем месяце (2 - вторая аналитика, будет взята база подразделений или МОЛ и показаны остатки для третьей записи в ней)
? текст запросазапрос на ввод информации (коэффициент, сумма и т.п.). Можно также задать значение по умолчанию, которое пользователь может скорректировать:
? текст запроса %% выражениегде выражение - выражение для расчета суммы, которая предлагается в запросе по умолчанию. Например,
? введите НДС по накладной %% SUM1/6
SUM1 .. SUM99 (только для операций)ссылки на суммы, введенные или вычисленные на предыдущих уровнях дерева проводок. Например, если сумма операции была 100, то в результате
AFLD(код_справочника, имя_поля) (только для операций)возвращает значение имя_поля из базы данных, определенной кодом аналитического справочника (первый параметр) для аналитического объекта, выбранного пользователем. Например, если в справочнике товаров с кодом "T" в поле REALS хранится продажная цена, то функция
APRC(код_справочника, счет) (только для операций)возвращает стоимость выбранного аналитического объекта (за единицу) из остатков на счете, заданном вторым параметром. Необходимо, чтобы на счете велся аналитический учет по заданному справочнику. Для выбранного пользователем объекта берется сумма остатка на текущий месяц и делится на количество; если количество равно нулю, возвращается сумма остатка. Например,
ARKM(код_справочника, счет) (только для операций)возвращает сумму остатка на заданном счете по выбранному из справочника аналитическому объекту на текущий момент (конец месяца). Например,
ARNM(код_справочника, счет) (только для операций)возвращает сумму остатка на начало текущего месяца на заданном счете по текущему аналитическому объекту из справочника с заданным кодом (объект должен быть выбран пользователем или определен в контексте групповых проводок).
ARNQ(код_справочника, счет) (только для операций)аналогично предыдущим функциям, возвращает аналитический остаток на начало текущего квартала.
ARS2(код_справочника, счет) (только для операций)аналогично предыдущим функциям, возвращает аналитический остаток на текущий момент (конец месяца) для второй суммы в проводке (этот параметр может использоваться для хранения суммы проводки в валюте).
@A2SLD(счет) (только для операций)возвращает остаток на счете с двойной аналитикой. Первый аналитический объект выбирается пользователем или определяется контекстом групповых проводок, второй определяется автоматически из остатков (например, если первый объект - товар, то будет взят остаток товара на первом складе, где он есть). После выполнения функции становятся определенными результаты функций @A2OBJ и @A2CEX, возвращающих соответственно код аналитического объекта для первого и второго справочников для остатков, определенных функцией @A2SLD. Эта функция может использоваться, например, для автоматизации перемещения основного средства от одного мат.ответственного другому. Вот как выглядит ветка дерева проводок для решения этой задачи:
перемещениеПользователю не нужно вводить сумму операции и не нужно знать, на ком числится основное средство. Он просто выбирает основное средство из справочника и указывает ответственного, на которое его нужно переместить. Программа автоматически перемещает балансовую стоимость (01 счет) и начисленный износ (02 счет). При необходимости выдается запрос на пересчет файла остатков, или остатки пересчитываются автоматически (при установленной опции).
|----=@ ADDSUM(@A2SLD(01))
|----=01 01{@A2OBJ,@A2CEX}
|----=@ 0-@A2SLD(02)
|----=02 02{@A2OBJ,@A2CEX}
CLEARANэта функция возвращает ноль, но при этом она "очищает" список использованной аналитики, в результате чего для следующих проводок вновь будут вызываться справочники. Например, выполнить переброску с одной организации на другую можно таким образом:
SETN(выражение) (только для операций)возвращает результат вычисления выражения в скобках; от обычных скобок отличается тем, что результат выражения в дальнейшем помещается в поле "количество" для следующих проводок. Например,
SETS2(выражение) (только для операций)возвращает результат вычисления выражения в скобках; результат выражения в дальнейшем помещается в поле второй суммы в следующих проводках. Это поле обычно используется для хранения суммы проводки в валюте для операционного учета. Например,
SET(выражение) (только для операций)возвращает результат вычисления выражения в скобках. Используется для объединения в одном выражении нескольких запросов, например
ADDSUM(выражение) (только для операций)возвращает результат вычисления выражения в скобках; при этом полученная сумма прибавляется к общей сумме операции. Если первоначально общая сумма операции не была заполнена (равна 0.00), то при завершении операции она будет заменена на вычисленную в результате применения оператора ADDSUM и LOOP. В нижележащих ветвях дерева можно обратится к текущему значению этой суммы при помощи функции SUMOP. (SUM1 вернет сумму, введенную пользователем, без учета "добавок"). Используется, в основном, в групповых проводках и проводках для товарного блока.
#LOOP(код_справочника,выражение) (только для операций)Один из операторов генерации группы проводок, организующий цикл для выбора объектов из аналитического справочника. Блок проводок, отходящих от вершины с LOOP, будет выполнен столько раз, сколько пользователь выберет объектов из аналитического справочника "код_справочника" (пока он не нажмет "отказ"). Для каждого объекта
#DISTRIB(счет,вид,сумма) (только в операциях)вид групповой проводки, выполняющий распределение заданной суммы (может быть выражение или запрос) пропорционально группе уже сделанных проводок. Параметр "счет" задает счет, по которому будут отбираться проводки в группу. Распределение будет производиться по аналитическим объектам для этого счета. Параметр "вид"
1 - пропорционально сумме проводки, счет = счет дебета(в сумме-2 проводки может храниться стоимость реализации в товарном учете, при этом в сумме проводки хранится себестоимость). Например, пусть после группы проводок по оприходованию товаров (при помощи оператора #LOOP или #LIST) следует:
2 - пропорционально сумме проводки, счет = счет кредита
3 - пропорционально количеству проводки, счет = счет дебета
4 - пропорционально количеству проводки, счет = счет кредита
5 - пропорционально сумме-2 проводки, счет = счет дебета
6 - пропорционально сумме-2 проводки, счет = счет кредита
#LIST (только для операций в материальном блоке)организация цикла для позиций из подготовленной накладной (счета). Нижележащий блок проводок будет выполнен для каждой строки накладной, при этом можно пользоваться дополнительными функциями:
Суммой по умолчанию для расхода считается SUMR. Например:
@DATA(имя_поля) (для числовых данных)возвращает значение поля базы данных в виде числа. Функция может использоваться в групповых проводках (в принципе, можно просто написать имя поля, но через функцию @DATA будет чуть быстрее, и исключаются конфликты при совпадении имени поля с именем переменной или функции).
@CALL(имя_DLL_файла,имя_функции,параметр)вызов функции пользователя из внешнего DLL-файла. Указывается имя (и путь) DLL-файла, имя функции, которую нужно вызвать и параметр (например, имя поля, месяц, счет и т.п), который нужно передать. Функция должна принимать параметр типа Variant. Параметры передаются по значению (ByVal) слева направо (stdcall). Функция возвращает результат в виде
@имя_переменной (кроме операций)ссылка на переменную в генераторе отчетов или печатной форме
%имяссылка на параметры из настройки, определяющие реквизиты организации (закладка "константы" в установках). Возможные значения:
%НАИМЕНОВАНИЕ | название организации |
%ОКПО | код ОКПО |
%ГОРОД | город |
%БАНК | название банка |
%РАСЧ_СЧЕТ | расчетный счет |
%МФО | МФО |
%БАНК2 | название банка для 2-го счета |
%РАСЧ_СЧЕТ2 | расчетный счет номер 2 |
%МФО2 | МФО для 2-го счета |
%НАЛОГ_КОД | код плательщика НДС |
%НОМЕР_СВИД | номер свидетельства плательщика НДС |
%АДРЕС | адрес |
%ТЕЛЕФОН | телефон |
%ДИРЕКТОР | ФИО директора |
%БУХГАЛТЕР | ФИО главного бухгалтера |
@TCOL(номер колонки)эта функция используется только внутри цикла $LOOP и возвращает значение текущей строки в заданной колонке таблицы (колонки нумеруются от нуля). Функцию можно использовать в печатных формах аналитических расчетных ведомостей и в печатных формах товарно-материального блока.
@TCOLS(номер колонки)возвращает значение общей суммы (итога) по заданной колонке таблицы.
@TOV(имя_поля)функция используется внутри цикла $LOOP в печатных формах товарно-материального блока и возвращает значение заданного поля для текущей товарной позиции.
@TOVCLASS(количество_уровней)функция используется внутри цикла $LOOP в печатных формах товарно-материального блока и возвращает классификационную строку для текущей товарной позиции. В скобках можно задать необязательный параметр - количество уровней классификации, до которых нужно ограничить полную классификацию товара.
@TOVSUMSфункция используется внутри цикла $LOOP в печатных формах товарно-материального блока и возвращает стоимость хранения (учетную стоимость) объекта для методов учета "по среднему" и "по карточке"
В выражения могут входить также любые константы (числовые или строковые), описанные в окне "другие константы" закладок "константы" в установках программы. Константы описываются в формате имя = значение. Значением может быть и выражение, например, можно описать константуКонстанты
Настроечный файл печатной формы (отчета) должен начинаться с директивы
$MSWORDОбязательно должна присутствовать одна из следующих директив:
$TEMPLATE=имя_шаблона (создает новый файл на основании заданного шаблона (template))Могут быть использованы следующие директивы:
$DOCUMENT=имя_документа (открывает подготовленный документ)
$SHOW - показать окно программы MS Word (иначе оно будет невидимым)Пример файла настройки для печати текста договора (может вызываться из реестра документов "договоры"):
$PRINT - автоматически начать печатать документ
$PREVIEW - автоматически вызвать предварительный просмотр печатной формы документа
$CLOSE - закрыть документ Word без запроса на сохранение файла (напр., после печати)
$READONLY - если открывается существующий файл, он будет открыт только для чтения
$MSWORDПри нажатии на кнопку печать вызывается программа Microsoft Word, в ней создается новый документ по шаблону DOGOVOR.DOT, в который подставляются данные из текущей записи (договора), текст документа выводится на экран для редактирования, сохранения, распечатки.
$TEMPLATE=DOGOVOR
$SHOW
$TABSUMMARYВ файле Word такая таблица будет иметь три строки: в первой будут заголовки колонок, во второй - формулы для заполнения строк данных (эта строка будет размножена нужное количество раз) и в третьей строке задаются формулы для вывода окончательных итогов по отчету. При печати таблиц обязательно должна быть включена директива $SHOW. По умолчанию всегда используется первая таблица, найденная в шаблоне или документе. Если в шаблоне имеются несколько таблиц, номер нужной таблицы (в которую подставляются данные отчета) можно задать директивой
$TABNUM=порядковый_номер_таблицы_начиная_с_1Пример настроечного файла для печати отчета по амортизации основных средств из журнала с файлом задания osjur.txt:
$MSWORDВ каталоге FORM приведен пример файла OSN.DOC, путь к которому нужно задать в директиве $DOCUMENT.
$DOCUMENT=d:\reports\OSN.DOC
$SHOW
$TABSUMMARY
$TABNUM=1
$LOOP
$END
Замечание 1. Поскольку здесь в качестве отчета подключен не шаблон, а документ MS Word, необходимо помнить, что пользователь не должен сохранять отчет после его формирования, или сохранять его под другим именем (выбирать пункт меню "сохранить как"). В противном случае невозможно будет построить такой отчет повторно, т.к. вместо формул пропишутся результаты отчета. Чтобы избегнуть такой ситуации, можно сохранить этот файл в качестве шаблона и соответственно заменить директиву $DOCUMENT на $TEMPLATE.
Замечание 2. Поскольку для каждой строки отчета Word добавляет
новую строку в таблицу и вычисляет значения в каждой колонке, отчеты с
большим количеством строк (больше 1000) будут формироваться долго. Такие
отчеты можно печатать используя стандартный генератор печатных форм "Главбуха"
или копировать через буфер обмена в программы типа MS Excel.
Настроечный файл печатной формы (отчета) должен начинаться с директивы
$MSEXCELОбязательно должна присутствовать одна из следующих директив:
$TEMPLATE=имя_шаблона (создает новый файл на основании заданного шаблона (template))Могут быть использованы следующие директивы:
$DOCUMENT=имя_таблицы (открывает подготовленный файл электронной таблицы)
$NEW (создает новую чистую таблицу для вывода данных)
$SHOW - показать окно MS Excel (иначе оно будет невидимым)В тексте файла настройки в строках описания вывода в таблицу координаты имеют такое значение: первая цифра или буква - номер колонки (как в Excel : A -первая колонка, B -вторая, C -третья и т.д.), вторая цифра - номер строки, третья (длина вывода) служит для указания выводить результат в Excel или не выводить: 0 - не выводить, любое другое число - выводить. Можно использовать почти все директивы стандартного генератора печатных форм, циклы, команды смещеня $WRLN, $SHIFT и т.п. (смещение указывается в строках). Дополнительно введены директива $WRCL количество (смещение на заданное количество колонок вправо) и функции @ALLTABLEWITHTITLE и @ALLTABLE, которые можно использовать только в печатных формах аналитических журналов-ордеров с ручным заданием, и которые служат для вывода всего отчета (таблицы журнала). Задаются координаты левого верхнего угла, начиная с которого будут вставлены данные, соответственно с названиями колонок или без.
$PRINT - автоматически начать печатать документ
$PREVIEW - автоматически вызвать предварительный просмотр печатной формы документа
$CLOSE - закрыть таблицу без запроса на сохранение файла (напр., после печати)
$RUNMACRO имя_макроса - выполнить макрос с заданным именем
Пример файла настройки для печати отчета из журнала-ордера с ручным заданием:
$MSEXCELПри нажатии кнопки "печать" открывается пустая таблица MS Excel. Треться строка в клетке A1 печатает название отчета, четвертая и пятая строки в клетках A2 и B2 задают названия колонок таблицы. В цикле печатаются значения первой и пятой колонки журнала (в первой (A) и второй (B) колонках таблицы), начиная с третьей строки. Девятая строчка переводит вывод следующей строки журнала на одну строчку ниже в таблице. По окончании цикла печатаются итоги и выводится окно предварительного просмотра перед печатью. Пользователь нажимает печать и выходит из режима просмотра, при этом Excel автоматически завершает работу благодаря последней строке. Если необходимо напечатать отчет так, как он есть, вместо строк с 4 по 12 можно было написать одну строчку
$NEW
A 1 1 ведомость инвентаризации
A 2 1 название
B 2 1 остаток
$LOOP
A 3 1 X(0)
B 3 1 =X(4)
$WRLN 1
$END
A 3 1 итого
B 3 1 =XS(4)
$PREVIEW
$CLOSE
A 2 1 @ALLTABLEWITHTITLEЕсли необходимо полученный отчет сохранить в виде таблицы Excel, вместо последних двух строк нужно написать
$SHOWТогда Excel с таблицей остаются на экране и пользователь может вносить изменения, сохранять и распечатывать документ.
%PREC(число) (для генератора отчетов и печатных форм)определяет количество цифр после десятичной точки, которые будут выводится на экран для числовых значений. Например:
%ROUND(число)определяет число, до которого производится округление при вычислениях. Например, после директивы
%DECIMALPOINT знакустанавливает знак разделителя целой и дробной части в числах (вместо десятичной точки). Если знак не указан, устанавливается стандартный знак из установок Windows (по умолчанию).
$LANDSCAPEдирективы установки ориентации принтера: пейзаж или портрет. Эти директивы обязательно должны быть первыми в файле настройки и могут встречаться только один раз. Если ни одна из директив не присутствует, документ будет печататься с ориентацией, которая установлена в окне настроек принтера.
$PORTRAIT
$FONTSIZE размеризменение размера шрифта
$FONTSTYLE стильизменение стиля шрифта. Стиль задается буквой:
B - жирный
I - курсив
без параметра - обычный.
$FONTNAME имя_шрифтаизменение имени шрифта
$SPACEONвключение режима разбивки длинных строк до первого пробела (или точки, запятой...)
$SPACEOFFвыключение режима разбивки до пробела. Если строку не предполагается переносить, желательно использовать эту директиву.
$NO1000SEPARATORэта директива действует на весь документ, если она присутствует, во всех распечатываемых денежных суммах не будет присутствовать разделитель разрядов (тысяч), который по умолчанию присутствует
$BLANKONвключение режима бланка. Все следующие за этой директивой описания считаются элементами формы бланка и печатаются только в том случае, если в управляющем окне не указано печатать "только текст".
$BLANKOFFотключение режима бланка, следующие описания печатаются независимо от отметки в окне "только текст".
$PAUSEдиректива отладки, останавливает заполнение печатного документа и выводит информацию о предшествующей строке файла настройки (значение и результат формулы)
$PAUSE имя_переменной
директива отладки, останавливает заполнение печатного документа и выводит
значение заданной переменной
$NEWPAGEначинает печать новой страницы. После этой директивы прогоняется лист бумаги и последующие объекты будут выводиться на следующем листе бумаги.
$NOPRINTZEROсоответственно запрещают и разрешают печать нулевых значений, т.е. значений вида "0", "0.0", "0.00" и т.д.
$PRINTZERO
$SHIFT смещениезадает дополнительное смещение сверху от края страницы. Все следующие объекты будут печататься дополнительно смещенными вниз на заданную величину (в мм).
$LSHIFT смещениезадает дополнительное смещение слева от края страницы. Вместе с предыдущей директивой может использоваться для быстрой подгонки формы под конкретный принтер. Смещения могут быть со знаком минус. В качестве смещения можно задать выражение, например:
$LSHIFT @NUMP*10При печати в цикле каждая следующая строчка печатается со сдвигом 10 мм от предыдущей
$COLSHIFT смещение_вправо, смещение_вниз, число_колонокиспользуется внутри цикла для печати объектов цикла в несколько колонок (например, для печати наклеек, этикеток, карточек). Смещение вправо (в мм) задает расстояние между левыми границами колонок, смещение вниз - промежуток между строками, аналогично $WRLN, число колонок можно не задавать, по умолчанию оно равно двум. Если в цикле задана директива $COLSHIFT, директиву $WRLN задавать не нужно. Например:
$COLSHIFT 100,5,2
$PAGENUMвключение режима нумерации страниц. Номер проставляется вверху страницы.
$WRLN значениеувеличить дополнительное смещение на заданную величину в мм. Может использоваться в циклах или для упрощения описания (можно не вычислять смещение сверху для каждой строки отчета, а просто после окончания строки вставлять эту директиву)
$PAGE значениезадание длины печатной области страницы (в мм). Если в результате выполнения директивы $WRLN дополнительное смещение оказалось больше значения, заданного этой директивой, будет начата печать новой страницы.
$BACKGRND числовое_значениеопределение цвета фона для печати следующего текста. Используется для выделения отдельных строк документа. На черно-белых принтерах цвет имитируется серой маской, плотность которой зависит от числового значения цвета. Цвет задается числом, которое формируется также, как и цвет для экранной формы. Кроме того, используются следующие фиксированные значения для задания цвета фона: 0 - белый фон (никакого фона), -1, -2, ..., -6 (разные чистые цвета).
$SETPAGENUM число_или_выражениеустанавливает начальный номер страницы для функции определения номера текущей страницы @PAGENUM. Используется в случаях, когда нумерацию страниц в распечатке надо начинать не с единицы, а с другого числа, например, для периодически допечатываемых документов, в которых нумерация страниц ведется с начала года (типа кассовой книги).
$TITLEдирективы описания заголовка, который будет повторяться при печати документа на нескольких страницах. Операторы вывода заголовка обрамляются директивами $TITLE:
$TITLE OFF
$FOOTдиректива описания сноски (того, что печатается внизу страницы). Смещения сверху задаются в абсолютных значениях (SHIFT не учитывается). Например:
$LOOP условиедиректива цикла. Условие может отсутствовать, в этом случае цикл выполняется для всех строк отчета. Следующие после этой директивы строки (до директивы конца цикла $END) будут выполнены для каждой строки отчета (удовлетворяющей условию). Директива цикла может также использоваться в формах печати реестра документов. В печатных формах реестров документов рекомендуется использовать директиву $LOOPR. Например, для форм документов с дочерними базами $LOOP задает цикл по записям дочерней базы, а $LOOPR - цикл по списку отмеченных документов. Условие может содержать логические выражения, разделенные операторами .AND., .OR. и .XOR.
$LOOPR условие
$ENDдиректива конца цикла.
Пример:
10
10 5
N/N
15
10 25 фамилия
40
10 20 сумма
10
15 60 @LINE
$WRLN 5
$LOOP
10
10 4 @NUMP
15
10 25 X(0)
40
10 20 =X(4)
10
10 60 @LINE
$WRLN 5
$END
15
10 25 итого
40
10 20 =XS(4)
вначале описывается шапка таблицы, затем в цикле по всем строкам отчета
(условие не задано) печатается номер по порядку, фамилия из 0-вой колонки
и сумма из 4-й колонки, линия подчеркивания. Затем позиция вывода смещается
на 5 мм вниз и печатается следующая строка таблицы. После окончания
цикла печатается итоговая строка.
$LOOPX условиеСпециальный цикл, применяемый в реестрах товарных документов для объединения позиций (номенклатуры) всех выделенных документов. Может использоваться, например, для печати общей налоговой накладной для нескольких отмеченных расходных накладных (см. пример в файле Pnaktovx.txt). Программа создает специальный буфер - таблицу, в которую включаются строки для каждой номенклатуры из всех отмеченных документов. В первых колонках каждой строки повторяются данные из "шапки" документа - те, которые вынесены в реестр документов и видны в колонках в верхнем окне заголовков накладных. В следующих колонках помещаются данные номенклатуры, видимые в нижнем окне позиций накладной. Для ссылки на колонку внутри цикла используется функция @BUF(номер_колонки). Например, в шапке документа описаны: номер документа, дата, сумма, получатель. В окне товарных позиций показаны: код, название, единица измерения, количество, цена, стоимость, НДС, общая сумма. Пользователь выделил для печати два документа, в первом 3 товарных позиции, во втором - 4. В результате применения оператора $LOOPX будет напечатано 7 строк. Функция @BUF(1) для первых трех строк вернет номер первого документа, для следующих четырех строк - номер второго документа. Функция @BUF(6) будет возвращать название товара для каждой из семи товарных позиций. Очевидно, что при задании других колонок в реестре накладных нумерацию в @BUF нужно изменять.
@CONTпродолжает печать строки, которая не поместилась в результате выполнения предыдущей команды печати. Удобно использовать для переноса на несколько строк длинной строки суммы прописью. Для разбивки строки по пробелам
@LINEпечать горизонтальной линии одинарной ширины в точке с указанными координатами заданной длины
@VLINEпечать вертикальной линии одинарной ширины в точке с указанными координатами и высотой, определяемой параметром "длина"
@RECT(высота)печать прямоугольной рамки
@BOX(высота; текст)печать текста в прямоугольной рамке заданной высоты. Текст не может быть выражением или функцией. Если длина текста больше ширины вывода, он автоматически разбивается на несколько строк, при этом строки выравниваются в соответствии с директивой выравнивания.
@NOMEXEMPпечатает номер экземпляра ("1" или "2") для документов, позволяющих печатать два экземпляра на одном листе А4. (см. %DOUBLE)
@PICTURE(имя_файла)печать картинки из заданного файла типа BMP. Левый верхний угол картинки будет расположен в заданных координатах смещения слева и сверху, параметр "длина" задает ширину на листе (высота масштабируется автоматически). Имя файла может быть задано выражением (например, может браться из поля в базе данных)
@CLEAR(имя_переменной)очищает значение заданной переменной. Следует применять перед циклом, в котором заданная переменная используется рекурсивно
@SETVAR(имя_переменной;выражение)вычислить выражение и присвоить переменной его результат. Значение переменной вычисляется выражением по месту описания переменной. Данная функция позволяет присвоить переменной результат другого выражения. Такая функция может понадобится в печатных формах журналов-ордеров для вычисления промежуточных итогов. Ниже приведен пример печати промежуточных итогов для одинаковых значений колонки 1 аналитического журнала-ордера с ручным заданием. В переменной VAL запоминается предыдущее значение этой колонки, при его несовпадении с текущим значением печатается строка итога.
X | Y | L | выражение | переменная | - | примечание |
1 | 1 | 0 | @CLEAR(SUBTOTAL) | очистить промежуточную сумму | ||
1 | 1 | 0 | @UPDATE(@SETVAR(VAL;"X(1))) | установить начальное значение VAL на
первую строку столбца изменений |
||
$LOOP | начало цикла | |||||
70 | 33 | 40 | @IF("@VAL#X(1);итого по +@VAL;) | при изменении значения 1-го столбца предыдущее значение VAL будет отличаться от нового X(1) и тогда будут выполнены эти операторы | ||
110 | 33 | 20 | @IF("@VAL#X(1);=@SUBTOTAL;) | > | ||
1 | 1 | 0 | @IF("@VAL#X(1);@CLEAR(SUBTOTAL);) | очищаем промежуточную сумму | ||
1 | 1 | 0 | @IF("@VAL#X(1);$WRLN 5;) | - | заканчиваем вывод итога переводом строки | |
36 | 33 | 60 | X(3) | < | печатаем данные строки | |
96 | 33 | 14 | "X(1) | VAL | - | здесь определяется VAL, обновляем ее значение |
110 | 33 | 20 | =X(4) | SUM | > | сумма (для этой колонки вычисляются промежуточные итоги) |
1 | 1 | 0 | =@SUM+@SUBTOTAL | SUBTOTAL | накапливание промежуточных итогов | |
$WRLN 5 | перевод строки | |||||
$END | конец цикла | |||||
70 | 33 | 40 | @UPDATE(итого по +@VAL) | итоги для последних значений | ||
110 | 33 | 20 | @UPDATE(=@SUBTOTAL) | > | ||
$WRLN 5 |
@UPDATE(выражение)пересчитывает выражение в скобках. Используется при выводе переменных, значения которых были изменены во время цикла. В "Главбухе 2" вначале производится расчет всех формул, потом начинается печать. Во время выполнения цикла некоторые переменные могут менять свое значение, их пересчет производится автоматически. После окончания цикла формулы, использующие эти переменные, автоматически не пересчитываются и для обновления их результатов и необходимо использовать @UPDATE. Для примера см. расчет итогов по колонкам в настройке pnaktov.txt.
@RARE(выражение)результат выражения (переменная, имя поля, функция и т.п.) будет напечатан "вразрядку" (для впечатывания в табличку, например, для кода ОКПО в некоторых формах)
=51 76 | (д-т 51 к-т 76) |
=50 51 | (д-т 50 к-т 51) |
=(0.2)68/3 60 | (д-т 68/3 к-т 60, сумма проводки составляет 20% от введенной суммы операции) |
=~41 60такая проводка будет сделана только в случае ненулевой суммы (для счета 41 ведется количественный учет и количество, скорее всего, не равно нулю). Такое условие необходимо применять при задании проводок для приходования или списания материальных ценностей с использованием встроенных функций типа SUMS и SUMT. Например, для тары функция SUMS вернет ноль, но количество товара останется ненулевым. Аналогично для обычного товара SUMT вернет ноль, но количество будет ненулевым и проводка без условия "~" будет сделана, что приведет к двойному списанию количества.
Параметр "выражение_коэффициента" может быть:
описатели счетов дебета и кредита могут быть:
- константой: =(0.83333333)05 60
- ссылкой на курс валюты: =(USD)52 62/4
- запросом: =(?введи коэффициент)20 70
- выражением: =(1/6)68/6 76 или =(/USD)XX 00 (деление на курс валюты) и т.п.;
Вычислимые проводки имеют вид:
- просто счет/субсчет: =62/1 41
- с выбором субсчета: =20 68/? (будет вызвано меню из субсчетов 68-го счета)
- с указанием аналитики: =52 81[P,7] (будет сделана проводка по указанной статье использования прибыли (к счету 81 прикреплен справочник с кодом "P", объект с кодом 7 этого справочника представляет нужную статью))
- с выбором счета из справочника: =(0.6)%SHET 02/2 (действительно только для групповых проводок; в данном примере в базе данных аналитического справочника имеется поле SHET, в котором для каждого объекта хранится счет дебета, возможно, с аналитической частью)
- с указанием полной аналитики: =20{%VIDZATRAT,%OTDEL} 02 или =20{2,1} 02 (здесь задаются аналитические объекты для первого и второго справочников, подключенных к счету, коды справочников задавать не нужно; в первом случае номер статьи затрат (первый справочник на счете 20) берется из поля VIDZATRAT, код подразделения (второй справочник на счете 20) берется из поля OTDEL. Во втором случае коды затрат и подразделения явно заданы в проводке.
=@ выражение
отходящие от них вершины выполняют проводки с суммой, определенной заданным выражением. Для ссылки на результаты предшествующих вычислимых проводок используются переменные SUM1..SUM99
Операторы, порождающие группу проводок (групповые проводки):
=#ALL(код_справочника)
|----? условие1 .OR. условие2
|----? условие3
|----= выражение
|----=20 70
...
все ветки отходят от основной вершины задания операции. Может быть
задано несколько условий; условия в разных вершинах объединяются условием
"И" (AND), условия в одной вершине - "ИЛИ". В примере выше групповые операции
выполняются для тех объектов, для которых выполнено условие 3 и одно
из условий 1 или 2. Условия начинаются со знака "?" (а не "=") и должны
быть заданы подряд. Вершины с условиями могут отсутствовать, в этом случае
групповые проводки выполняются для всех объектов справочника. В условиях
можно использовать значения полей из справочника объектов и выражения из
остатков на счетах для текущего аналитического объекта.
Первая после условий вершина воспринимается как задающая выражение
расчета суммы для текущего аналитического объекта. Следующие вершины (и
подвершины, в отличие от ДОС-версии), задают проводки для текущего объекта.
Вычисленные для объекта суммы будут просуммированы в общую сумму операции.
Оператор #ALL определяет цикл по всем объектам аналитического справочника.
Для работы с остатками на счетах с двойной аналитикой (когда одни остатки
ведутся в разрезе других, например, товары в разрезе складов), используется
оператор #REST для цикла по всем остаткам заданного
счета. Есть три варианта оператора:
#RESTK(счет) - остатки по счету на конец текущего месяцадля ссылки на значения остатков (и оборотов) используюся специальные функции:
#RESTN(счет) - остатки по счету на начало текущего месяца
#RESTQ(счет) - остатки по счету на начало текущего квартала
A2S | сумма остатка | A2K | количество остатка |
A2D | дебет за месяц | A2P | приход (кол-во) за месяц |
A2C | кредит за месяц | A2R | расход (кол-во) за месяц |
описатели колонокОписатель аналитической расчетной ведомости (журнал-ордер типа "конструктор") позволяет сформировать множество различных отчетов, не прибегая к программированию. Для задания ведомости используется несколько команд для задания кода справочника, способа сортировки, периодов выборки данных, а также задаются описатели колонок таблицы, которые должны входить в отчет.
функции выборки данных
команды описания
специальные функции
отчет по проводкам
Описатели колонок имеют вид:
знак описание
заголовок ширина комментарий
(разделитель -знак табуляции ASCII(9)). Имеется три типа колонок: колонки
с данными из проводок (остатков), колонки с именами (полями из базы справочника),
колонки, значение которых вычисляется.
Например,
=A(60,51)
оплата пост. 86
описана колонка шириной 86 пикселов с заголовком "оплата пост.", в
которой по каждому объекту из заданного справочника будут выведены проводки
в дебет 60 счета с кредита 51.
"NAME название
140
колонка шириной 140 пикселов с заголовком "название", в которой для
каждого объекта будет выведено содержимое поля NAME в базе справочника.
=@ X(1)*1.2
сумма с НДС
в этой колонке отражается содержимое колонки номер 1, умноженное на
1.2 (нумерация колонок ведется с нуля, нулевую колонку рекомендуется задавать
имя объекта). В выражениях можно использовать стандартные функции и оператор
@IF.
Поле комментария может быть использовано для задания точности представления
чисел (для числовых колонок), для этого в этом поле должна присутствовать
директива %PREC(число_знаков_после_точки), например:
=@ X(4)/X(3)
цена 90 %PREC(5)
Здесь в колонке с надписью "цена" установлена точность расчета и вывода
на экран 5 знаков после десятичной точки.
В поле комментария можно также задать специальный тип строки - дата.
Это имеет значение при сортировке, тогда данные колонки сортируются не
как строки, а как даты. Например:
"DATEOPL
дата опл. 90 %DATE
Здесь в колонке отображается значение поле DATEOPL аналитического справочника
(должно иметь тип "дата" (D)) и сортировка в этой колонке будет производится
от более ранних дат к более поздним.
R(счет) | свернутое сальдо по счету на начало периода |
RD(счет) | дебетовое сальдо на начало периода |
RC(счет) | кредитовое сальдо на начало периода |
S(счет) | свернутое сальдо на конец периода |
SD(счет) | дебетовое сальдо на конец периода |
SC(счет) | кредитовое сальдо на конец периода |
D(счет) | дебет по счету за период |
C(счет) | кредит по счету за период |
N(счет) | количество на счете на начало периода |
K(счет) | количество на счете на конец периода |
I(счет) | общее количество дебетового оборота по счету за период (приход) |
O(счет) | общее количество кредитового оборота по счету за период (расход) |
A(счет1,счет2) | обороты в дебет счет1 с кредита счет2 за период |
D2(счет) | оборот второй суммы по дебету счета за период |
C2(счет) | оборот второй суммы по кредиту счету за период |
I2(счет) | приход второго количества по счету за период |
O2(счет) | расход второго количества по счету за период |
A2(счет1,счет2) | обороты в дебет счет1 с кредита счет2 по сумме-2 за период |
R2(счет) | свернутое сальдо по счету по сумме-2 на начало периода |
E(счет1,счет2) | обороты в дебет счет1 с кредита счет2 по количеству за период |
E2(счет1,счет2) | обороты в дебет счет1 с кредита счет2 по количеству-2 за период |
B | включает в отчет все записи из аналитического справочника |
KR(счет) | количество с учетом резервирования на конец периода
(работает только совместно с директивой @2AN#) |
NR(счет) | количество с учетом резервирования на начало периода
(работает только совместно с директивой @2AN#) |
Команды задания аналитической расчетной ведомости
|
код справочника |
|
период формирования отчета |
|
проводки, которые будут делаться из журнала |
|
колонка сортировки |
|
печатная форма |
|
ссылка на значения другой колонки |
|
ссылка на итоговое значение колонки с заданным номером |
|
фиксированные колонки |
|
разрешить редактирование данных колонки |
|
задание списка исключений (номера объектов второго справочника, обороты по которым будут исключены из отчета) |
|
задание параметров поиска в отчете |
|
интерфейс (чередование строк: выделение четных) |
|
группировка по первым 1 или 2 колонкам при печати |
|
включение режима "быстрый отчет" |
|
задание фильтра в режиме "быстрый отчет" |
USERCALC | описать функцию расчета пользователя |
#код_справочниказадается код аналитического справочника, по объектам которого будет строиться ведомость. Если вместо кода справочника задать символ "?", будет построена синтетическая ведомость (в отчете будет всего одна строка). Если задать код справочника "?" и заказать колонку с номером документа, будет построен отчет по номерам документов из проводок (в одну строку сольются проводки с одним номером документа). Если задать вместо кода справочника символ "*", будет построен отчет, в строки которого попадут все проводки, удовлетворяющие условиям выборки. Используя функции @NDOCUM, @NDATE, @DET_... можно построить расшифровки проводок и журналы специального вида, например, кассовую книгу.
M код_периодазадает период по умолчанию. Коды периодов: M - месяц; Q - кваратал; Y - с начала года. Можно задать несколько директив M, в этом случае пользователь получит возможность изменять период непосредственно из отчета. Если задан код периода D или T, то пользователь сможет задать в качестве периода интервал дней текущего месяца, при этом для кода D отчет по умолчанию строится за весь месяц (с дальнейшим уточнением пользователя), а для кода T отчет формируется только за один (текущий) день и также может быть уточнен пользователем.
$ X(5) 67/2 62/1с суммой из колонки номер 5 для каждого объекта (каждой строки таблицы, в которой в 5-й колонке не ноль) будут сделаны проводки в дебет 67/2 с кредита 62/1. После знака $ может следовать выражение, после которого через символ табуляции задается проводка (см. описание задания проводки в дереве операций). Дополнительно, через знак "|", можно задать выражение для вычисления количества в проводке, например: $ X(5)|X(6) 46 41 - здесь задаются проводки с суммой из колонки 5 и количеством из колонки 6.
$ OPERATION операция-1 31задается колонка, по которой будут сортироваться строки в таблице. Можно задать несколько (до пяти) колонок для сортировки:
$ ... проводки для операции - 1
$ OPERATION операция-2 31
$ ... проводки для операции - 2
S 3,4В этом случае данные будут отсортированы по третьей колонке (считая от единицы); строки, в которых значения третьей колонки совпадают, будут отсортированы по четвертой колонке. Сортировку таблицы пользователь может задавать сам в процессе работы с отчетом из меню по правой кнопке мыши.
P название=имя_файлазадается форма распечатки таблицы. Задающий файл строится по типу печатных форм в документах и отчетах, но может содержать дополнительные директивы и функции. Может быть задано несколько печатных форм. Ниже приведено описание дополнительных функций и директив для печатных форм аналитической расчетной ведомости.
X(номер)значение колонки с заданным номером (считая от нуля) для выделенной строки или переменной цикла
XS(номер)итоговое значение колонки с заданным номером
F числозадает количество колонок отчета, которые будут фиксированы (всегда видимы)
E номер_колонки, имя_базызадает номер колонки, данные которой пользователь может редактировать. Имя_базы - необязательный параметр, если он присутствует, введенные пользователем данные сохраняться в базе данных и будут восстановлены при следующем запуске журнала. Можно редактировать только числовые колонки (начинающиеся со знака "="), не рекомендуется редактировать колонки с функциями выборки данных. Для входа в режим редактирования нужно установить курсор на нужную клетку таблицы и нажать F4. Закончив ввод числа, нужно нажать Enter, чтобы таблица пересчиталась и для сохранения данных в базе. Например:
=@ 100 процент 70 X4 - процент выполнения планаздесь в четвертой колонке во всех строках по умолчанию всегда проставляется 100, но пользователь может изменять эти числа, при этом введенные значения не сохраняются при следующем запуске
E 4
E 4,KALDвведенные при редактировании четвертой колонки данные будут сохранены в базе данных KALD.DBF и при следующем входе в журнал-ордер будут восстановлены
E 4,CLD|M|Yданные будут сохранены в файлах, имя которых зависит от текущего месяца и года и имеет вид CLD<месяц><год>.DBF (например, CLD0299.DBF для февраля 1999). Это дает возможность сохранять введенные пользователем данные для каждого месяца отдельно. Невозможно использовать команду E одновременно с директивой @2AN# для вывода информации в разрезе двух аналитических справочников.
E 4,%SELF,KOEFв этом пример пользователь редактирует значения четвертой колонки, которые затем записываются в поле KOEF текущего аналитического справочника. Эта возможность удобна для табличной корректировки значений справочника, например, окладов, или для корректировки цен товаров (для прайс-листа).
H вариант_поиска_1;вариант_поиска_2;...;вариант_поиска_NЗадание параметров поиска - в каких колонках отчета пользователь может искать данные при нажатии на клавишу (или Ctrl-F). Вариант_поиска состоит из названия варианта и, через запятую, номера колонки в отчете (нумерация с нуля), в которой будет производится поиск. Например:
H документ,1;ФИО,3;примечание,6Здесь при вызове кнопки поиска пользователю будет предложено три варианта поиска нужной строки в отчете: по документу (искать в колонке 1), по ФИО (колонка 3) или по примечанию (в колонке 6). По умолчанию поиск производится по значениям первой (0-вой) колонки и, если присутствует, в колонке с номером документа.
L? список_кодов_объектовЗадание списка исключений по второй аналитике. В списке через запятую указываются коды (номера записей) объектов второй аналитики, обороты по которым должны быть исключены из отчета. Например:
UNITE номер_колонкиПосле построения отчета и сортировки вызывается процедура объединения данных в колонке с заданным номером.
GROUP номер_колонкиПосле построения отчета и сортировки вызывается процедура группировки данных в колонке с заданным номером.
NEWTECHВключение режима "быстрый отчет". Если режим включен, отчет формируется значительно быстрее. Для больших отчетов (порядка 10000 строк) ускорение составляет 3-4 раза. Однако, в этом режиме невозможно пользоваться группировками по значениям полей аналитического справочника или классификатору. Если такая группировка необходима, колонку со значением нужного поля или классификатора нужно включить в отчет и выполнить группировку из контекстного меню по нажатию правой кнопки мыши.
FILTER выражение фильтраЗадание дополнительного фильтра на данные отчета. Работает только при включенном режиме "быстрый отчет" (NEWTECH). Фильтр накладывается после выборки данных перед выводом на экран. Например, пусть в отчете о складских запасах в колонке 5 выведено количество, а в колонке 6 - стоимость товаров. Тогда фильтр вида
FILTER X(5)#0.AND.X(6)/X(5)>100выведет на экран только позиции с ценой за единицу более 100.
USERCALC название позиции меню; описатель функциидобавляет в контекстное меню по нажатию правой кнопки мыши дополнительный пункт с заданным названием. При выборе этой позиции меню производится расчет значения колонки таблицы согласно описателя функции. Описатель функции выглядит так: Xномер_колонки = выражение расчета. Например,
USERCALC рассчитать распределение средств; X5=X(2)*S(31)/XS(2)в этом примере в контекстное меню по правой кнопке мыши добавляется дополнительный пункт "рассчитать распределение средств". При выборе этой позиции меню пятая колонка таблицы заполняется новыми значениями, которые распределяют текущий остаток на расчетном счете (сальдо счета 31) пропорционально весам, взятым из второй колонки таблицы.
USERCALC рассчитать пропорционально количеству строк; X5=S(31)/(@STRINGSNUM-1)здесь сумма остатка на расчетном счете делится на количество строк в отчете и результат прописывается в каждой строке пятой колонки таблицы.
USERCALC рассчитать распределение средств; X5=@DISTRIB(X2,?введи сумму затрат)здесь при выполнении функции вызывается запрос на ввод суммы затрат, которая распределяется пропорционально весам из второй колонки таблицы. Результат помещается в пятой колонке, общая сумма значений пятой колонки будет в точности равна введенной сумме затрат, возможная ошибка округления будет добавлена в последней строке таблицы.
@NDOCUMномер документа (из проводки). Если такая колонка задана, отчет формируется с
[имя_поля]значение заданного имени поля для объекта в выделенной строке или для
@NUMLINEномер строки в отчете.
@NUMPномер по порядку в распечатке. При распечатке всех данных эта функция
@NAMEнаименование объекта аналитического справочника. При группировке возвращает
@NDATEдата первой проводки по данному документу (используется совместно с @NDOCUM для
@ANRESTNOTE(счет)примечание к остатку по объекту из строки по заданному счету (берется из остатков по счету, которые ведутся в аналитическом отчете по счету)
@ANRESTDATE(счет)дата возникновения остатка по объекту (берется из примечаний к остаткам по заданному счету)
@ANRESTTERMIN(счет)срок оплаты (погашения задолженности) по объекту (берется из примечаний к остаткам по заданному счету)
@JURNAMEназвание журнала-ордера, заданное пользователем в настройках журналов-ордеров
@GROUPNAMEпри группировке возвращает название способа группировки, иначе -пустая строка
@FILTERNAMEпри выборке (просмотре ведомости для выбранной группы объектов) возвращает
@DAYFROMвозвращают соответственно день начала и день конца периода, за который
@DAYTO
@PAGENUMвозвращает номер текущей (последней) страницы. Используется только в печатных
@PAGELINESвозвращает номер текущей (последней) строки, определяемой оператором $WRLN. С
@2AN# код_справочникаописывает колонку для вывода второй аналитики по заданному коду справочника. Например, для отчета по справочнику товаров (первый описатель #T) для вывода колонки с названиями складов, на которых находится товар, нужно написать
"@2AN# 8 склад 120(код справочника подразделений "8"). При этом в окно вариантов группировки добавляется вариант "склад", позволяющий сгруппировать и (или) отфильтровать остатки и обороты товаров по складам. Если в качестве основного кода задать "8", а для кода второй аналитики "T", то можно получить обратный отчет: остатки и обороты складов в разрезе товаров (можно выбрать нужный товар и посмотреть на каких складах он есть).
IGNOREEMPTYAN2которая объединит строки с незаполненной второй аналитикой с соответствующими им строками по первой аналитике (т.е. по тому же основному средству).
@PLACEMENT(список_счетов_остатков)выводит колонку со значениями второй аналитики в остатках по заданному счету на конец отчетного периода. Например, при учете основных средств одно ОС (первая аналитика) может числиться только на одном материально-ответственном лице (вторая аналитика). В этом случае в аналитическом отчете по справочнику основных средств функция @PLACEMENT для счета ОС может заполнить колонку "место хранения", или "материально-ответственное лицо". Например:
"@PLACEMENT(103,104,105,106,107,108)не следует применять этот описатель в случаях, когда один и тот же аналитический объект может храниться на нескольких складах (у разных материально-ответственных) или может находиться в остатках по нескольким счетам из списка. В этом случае будет показано первое найденное местонахождение (значение второй аналитики). Также как и для функции @2AN#, по значениям колонки можно делать группировки и фильтры из селектора группировки. Нельзя в одном журнале использовать одновременно функции @2AN# и @PLACEMENT.
@DET_OPNAMEфункции для выборки информации из расшифровки проводок. Используются только для журналов-ордеров с неопределенным аналитическим справочником (#?) и если в отчете присутствуют колонки с датой проводки и номером документа (@NDATE и @NDOCUM). В этом случае в строках отчета будут показаны суммы проводок, сделанных в данный день по данному документу. Функции расшифровки показывают для первой такой проводки (если их несколько), соответственно: @DET_OPNAME - название операции; @DET_OPNOTE - примечание к операции; @DET_OPDOK - номер операции (может отличаться от номера проводки).
@DET_OPNOTE
@DET_OPDOK
@DET_AN1DEBфункции выборки первой аналитики из расшифровки проводок. Используются только для журналов-ордеров с неопределенным аналитическим справочником (#?) и если в отчете присутствуют колонки с датой проводки и номером документа (@NDATE и @NDOCUM). Функции расшифровки аналитики показывают для первой проводки с нужной датой и номером, соответственно: @DET_AN1DEB - первую аналитику по счету дебета; @DET_AN1CRED - первую аналитику по счету кредита; @DET_AN1ALL - оба объекта из первой аналитики (если они есть).
@DET_AN1CRED
@DET_AN1ALL
@DET_AN2DEBфункции выборки второй аналитики из расшифровки проводок. Действуют аналогично функциям, описанным выше, но для объектов второй аналитики.
@DET_AN2CRED
@DET_AN2ALL
@DET_SHDEBфункции выборки счета из проводки. Используются только для журналов-ордеров с неопределенным аналитическим справочником (#?) и если в отчете присутствуют колонки с датой проводки и номером документа (@NDATE и @NDOCUM). Выводят соответственно счет дебета, счет кредита и корреспондирующий счет для заданного.
@DET_SHCRED
@DET_SHCORR(счет)
@EXTSPRFLD(код_справочника,выражение_или_код_объекта,поле_в_справочнике)эта функция возвращает заданное поле из справочника с заданным кодом. В отличие от функции @OBJFVAL, второй параметр задает не поле в базе аналитического справочника, а выражение, в т.ч. и произвольную колонку в таблице (X()), что дает возможность в отчетах по проводкам корректно отображать единицу измерения, как показано в примере ниже:
"@DET_AN1DEBFLD(EDIZ1) 0 // эту колонку не показываем; ее номер 5
"@EXTSPRFLD(Z,X(5),EDIZ) ед..изм 80 // вытаскиваем единицу измерения
#PROV функция_выборкиФункция выборки задает какие именно проводки будут выбраны для построения отчета: дебет заданного счета, кредит счета, обороты по заданному счету, обороты с дебета одного счета в кредит другого (например, соответственно: D(63/1), C(36), O(70), A(20/1,63/1)).
@DET_OPNAME | название операции, от которой сделана проводка |
@DET_OPNOTE | примечание к операции, по которой сделана проводка |
@DET_OPDOK | номер документа операции |
@DET_OPSUM | сумма операции |
@DET_OPWRKPLACE | название рабочего места, сделавшего операцию |
@DET_AN1DEB | аналитическая информация дебета (первая аналитика) |
@DET_AN1CRED | аналитическая информация кредита (первая аналитика) |
@DET_AN1ALL | аналитическая информация (первая аналитика) -объединение |
@DET_AN2DEB | вторая аналитика дебета |
@DET_AN3DEB | третья аналитика дебета (из документа - примечание к операции) |
@DET_AN2CRED | вторая аналитика кредита |
@DET_AN3CRED | третья аналитика кредита (из документа - примечание к операции) |
@DET_AN2ALL | вторая аналитика - объединение |
@DET_SHDEB | счет дебета |
@DET_SHCRED | счет кредита |
@DET_SHCORR(счет) | корреспондирующий счет к заданному (ищется в проводке) |
@DET_AN1DEBFLD(имя_поля) | значения поля из справочника аналитики дебета (первая аналитика) |
@DET_AN1CREDFLD(имя_поля) | значения поля из справочника аналитики кредита (первая аналитика) |
@DET_SUM | сумма проводки |
@DET_KOL | количество проводки |
@DET_SUM2 | сумма - 2 (в ТМЦ блоке - цена продажи) |
@DET_KOL2 | количество - 2 |
@DET_NDOK | номер документа проводки |
@DET_DATE | дата проводки |
@DET_ITEM | экземпляр задачи |
@DET_TASK | код задачи |
@DET_NUMOP | внутренний код (физический номер) операции, сделавшей проводку |
#PROV C(63/1) | |||
#EXCLUDE @DET_AN1DEB | |||
"@DET_AN2DEB | цех-получатель | 142 | |
"@DET_AN1CRED | поставщик | 136 | |
"@DET_AN1DEB | материал | 150 | |
=@DET_KOL | количество | ||
"@IF(X(3)#0;=X(5)/X(3);) | цена | %PREC(3) | |
=@DET_SUM | сумма | ||
"@DET_SHDEB | кор.счет | 60 | |
F 0
S 1,2,3 G 2 M P |
#EXTPROV A(23/1,20/1);A(23/2,20/1);A(23/1;20/2)Здесь будут отобраны проводки в дебет 23/1 или 23/2 с кредита 20/1 и проводки в дебет 23/1 с кредита 20/2. В остальном описание отчета такое же, как и для #PROV. В расширенном режиме можно использовать дополнительный фильтр, накладываемый на данные перед выводом на экран. Его можно задать директивой FILTER (условия задаются в терминах колонок, типа X(6)=0 (в числовой 6-й колонке ноль), "X(1)#'' (в строковой 1-й колонке не пустое значение; в этом примере первый символ - двойная кавычка, после знака "не равно" идут две одинарные кавычки, задающие пустую строку) и т.п.)