Опубликовано: 27.04.2022

Встроенный язык в «1С:Бухгалтерия 6.0»

Операторы и комментарии

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

Пример исходного текста кода формирования проводок:

Пример текста исходного кода

Как видно из вышеприведённого рисунка, каждый оператор в исходном тексте кода записывается на новой строке и предваряется символом «!» (восклицательный знак).

Все строки комментариев должны начинаться с символа «*» (звёздочка). Однако если комментарий начинается не с первой позиции в строке, звёздочке также должен предшествовать символ «!» (восклицательный знак).

Операторы языка, используемые в элементах диалоговых и ячейках печатных форм, не предваряются символом «!»(см. рис. ниже). Если необходима последовательность из нескольких операторов, они должны быть разделены символом «;» (точка с запятой). Исходный код в элементах диалоговых и ячейках печатных форм не комментируется.

Окно настроек типовой операции

Переменные

Для хранения промежуточных результатов вычислений в коде могут использоваться переменные. В именах переменных могут присутствовать строчные и прописные буквы, цифры и символ подчёркивания. Имя переменной должно начинаться с прописной или строчной буквы «П». Максимальная длина имени — 51 символ.

Имена переменным следует давать более короткие, но ёмкие по смыслу, дабы не возникало необходимости в использовании излишних комментариев к выполняемым действиям. То есть любая формула должна комментировать себя сама, например:

!П_СуммаКВыдаче=П_Начислено-П_Налог

Другой вариант записи:

!пСуммаКВыдаче=пНачислено-пНалог

Пример неудачного выбора имён:

!П01=П03-П02

Выражения числового типа

Выражения числового типа в исходном коде составляются из следующих элементов:

  • целых и дробных чисел (дробная часть числа записывается через точку);
  • знаков арифметических операций (+, , * и /);
  • круглых скобок;
  • переменных, имеющих числовые значения;
  • вызовов функций, возвращающих числовые значения (Ц(), ОКР() и др.);
  • макроимён, являющихся ссылками на реквизиты документов, реквизиты типовых операций, константы и т.п.

Пример записи числового выражения:

!П_Налог= ОКР(П_ОблагСумма*0.13\0)-ОБ70:{|2},68.1

Выражения строкового типа

Выражения строкового типа в исходном коде составляются из следующих элементов:

  • символьных строк, заключённых в двойные кавычки;
  • знаков конкатенации строк (+);
  • переменных;
  • вызовов функций (СОКРЛ(), ВЫД() и др.);
  • макроимён, являющихся ссылками на реквизиты документов, реквизиты типовых операций, константы и т.п.

Пример записи строкового выражения:

!П_Комментарий=СН{|2}+" ЕСН в части ТФОМС ("+П_ЕСН_ТФОМС_Ставка+"%)"

Поскольку тип выражения определяется интерпретатором языка по типу первого операнда, начинаться строковое выражение должно с операнда строкового типа. При необходимости (для явного указания типа выражения) в качестве первого операнда можно использовать пустую строку (""):

!П_Комментарий=""+П_Сумма+" руб."

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

Логические выражения

Логические выражения, результатом вычисления которых является значения «истина» или «ложь», используются в условных операторах и для организации циклов.

Простейшие логические выражения составляются из следующих элементов:

  • операндов, значения которых сравниваются. В качестве операндов могут выступать выражения числового или строкового типа (результат сравнения строковых операндов определяется алфавитным порядком);
  • знаков операции сравнения (<, >, <=, >=, = и <>).

Чтобы задать более сложное условие, результаты сравнений можно комбинировать с помощью знаков булевых операций НЕ, И и ИЛИ.

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

Пример записи логического выражения:

((ЗН|3-ЗН|2)=0)ИЛИ(ЗН|4>0)

Для операций со строками может также использоваться следующее логическое выражение:

Подстрока $ Строка

Данное выражение даёт «истину», если указанная подстрока содержится в указанной строке. Здесь Подстрока и Строка — выражения строкового типа.

Встроенные функции для работы с числовыми значениями

Получить целую часть числа позволяет встроенная функция Ц(). Результат получается путём простого отбрасывания дробной части.

Синтаксис:

Ц(Выражение)

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

Пример использования функции:

!П_Рублей=Ц(П_СуммаОклада)
!П_Копеек=П_СуммаОклада-Ц(П_СуммаОклада)
!П_Комментарий=""+П_Рублей+" руб. "+П_Копеек+" коп."

Округлить результат выражения до заданного количества знаков в дробной части позволяет встроенная функция ОКР().

Синтаксис:

ОКР(Выражение\КоличествоЗнаков)

где

  • Выражение — выражение числового типа, после вычисления которого, будет произведено округление результата;
  • КоличествоЗнаков — количество знаков в дробной части, до которого необходимо округлить результат.

Пример использования функции:

!П_Сумма=ОКР(П_Цена*П_Количество\2)

Примечание: Ранее «1С:Бухгалтерия 6.0» производила округления по правилу «1.5 как 1». Данное правило применялось при формировании отчетов, присваивании значений показателям макроязыка, а также при вычислении результата, возвращаемого функцией макроязыка ОКР().В настоящее время в программу введена возможность задания режима округления числовых величин для указанных выше случаев.

Для задания того или иного режима округления следует внести в секцию [Values] файла 1SBW.CNF параметр RoundMode. Данный параметр может иметь значения 0 или 1. Значение 0 соответствует правилу «1.5 как 1», а значение 1 — правилу «1.5 как 2». Правилом по умолчанию является «1.5 как 1». Правило по умолчанию применяется в случае отсутствия параметра RoundMode в файле 1SBW.CNF или в случае отсутствия самого файла.

Таким образом, для установки режима округления «1.5 как 2» фрагмент файла 1SBW.CNF должен иметь вид:

[Values]
RoundMode=1
 ...

Встроенные функции для работы со строковыми значениями

Удалить в строковом выражении незначащие пробелы слева (в начале результирующей строки) позволяет встроенная функция СОКРЛ().

Синтаксис:

СОКРЛ(Выражение)

где Выражение — выражение строкового типа.

Пример использования функции:

!П_Комментарий=СОКРЛ(СН{|2})+" ЕСН в части ТФОМС"

Удалить в строковом выражении незначащие пробелы справа (в конце результирующей строки) позволяет встроенная функция СОКРП().

Синтаксис:

СОКРП(Выражение)

где Выражение — выражение строкового типа.

Пример использования функции:

!П_Строка1=СОКРП(ВЫД(П_Строка1\5\10))

Выделить из строки подстроку указанной длины позволяет встроенная функция ВЫД().

Синтаксис:

ВЫД(Выражение\ДлинаПодстроки\ПозицияПервогоСимвола)

где

  • Выражение — выражение строкового типа;
  • ДлинаПодстроки — количество символов строки, которое необходимо выделить (это длина будущей подстроки);
  • ПозицияПервогоСимвола — позиция первого символа, который войдёт в результирующую подстроку.

Пример использования функции:

* Выясняем длину строки с ФИО
!П_ДлинаСтроки=СТРДЛИНА(П_СтрокаФИО)

* Выясняем количество символов в фамилии
* Для этого ищем позицию первого пробела
!ПорНомерСимвола=1
!ЦИКЛ ВЫД(П_СтрокаФИО\ПорНомерСимвола\1)<>" "
    !* Крутим цикл, пока не встретим первый пробел
    !ПорНомерСимвола=ПорНомерСимвола+1
!ВОЗВРАТ

* Выделяем подстроку с фамилией из строки ФИО
!П_Фамилия=ВЫД(П_СтрокаФИО\1\ПорНомерСимвола)
* Выделяем подстроку с именем и отчеством из строки ФИО
!П_ИмяОтчество=ВЫД(П_СтрокаФИО\ПорНомерСимвола+1\П_ДлинаСтроки-ПорНомерСимвола)

Узнать количество символов в строке позволяет встроенная функция СТРДЛИНА(). Пример использования функции был показан выше.

Синтаксис:

СТРДЛИНА(Выражение)

где Выражение — выражение строкового типа.

Получить строку заданного формата позволяет встроенная функция ФОРМАТ().

Синтаксис:

ФОРМАТ(Выражение\Формат)

где

  • Выражение — числовое или строковое выражение, результат которого будет приведён к строковому типу;
  • Формат — строковое выражение, результатом которого будут команды Т, Е, П, Ш и т.д. (подробнее об этих командах форматирования я расскажу чуть позже).

Встроенные функции для работы с датами

Прежде всего надо заметить, что во всех командах и функциях дата используется как строковое значение в формате "ДД.ММ.ГГ", где ДД — две цифры номера дня, ММ — две цифры номера месяца, ГГ — две последние цифры номера года.

Получить рабочую дату позволяет макроимя РДАТА.

Пример использования:

!П_Сегодя=РДАТА

Примечание: Рабочей датой является дата, установленная в окне «Общие параметры», которое можно вызвать через главное меню: «Сервис -> Общие параметры…». По умолчанию она совпадает с системной датой компьютера.

Общие параметры программы

Сравнить две даты позволяет встроенная функция ДАТАСРАВНИТЬ(). Возвращаемым значением функции является число:

  • 0 — если даты равны;
  • 1 — если первая дата больше (то есть является более поздней);
  • −1 (минус один) — если первая дата меньше (то есть является более ранней)

Синтаксис:

ДАТАСРАВНИТЬ(Дата1\Дата2)

где Дата1, Дата2 — макроимена, являющихся ссылками на реквизиты типа "Дата", либо выражения строкового типа, в результате вычисления которых получаются сравниваемые даты в формате "ДД.ММ.ГГ".

Получить предыдущую дату по отношению к указанной позволяет встроенная функция ДАТАПРЕД().

Синтаксис:

ДАТАПРЕД(Дата)

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

Получить следующую дату по отношению к указанной позволяет встроенная функция ДАТАСЛЕД().

Синтаксис:

ДАТАСЛЕД(Дата)

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

Пример использования:

!КВ
!пКонПер=ДАТАКОНПЕР
!пДатаБаланса=ДАТАСЛЕД(пКонПер)

Команды для организации диалога с пользователем

Вывести текстовое сообщение для пользователя в окне «Сообщения» позволяет команда СООБЩИТЬ.

Синтаксис:

СООБЩИТЬ Выражение

где Выражение — выражение строкового типа.

Пример использования функции:

!ЕСЛИ СКД41:{|2}Н<ЗН|3
   !* Если количество, которое надо списать, меньше
   !* остатка на складе, - списываем сколько осталось
   !П01=СКД41:{|2}
   !П02=СКД41:{|2}Н
   !СООБЩИТЬ "Недостаточно товара "+СН{|2}+". Списано "+П02+" "+СП{|2}.3
!КОНЕЦЕСЛИ

Вывести текстовое сообщение для пользователя в строке состояния позволяет команда СОСТОЯНИЕ.

Синтаксис:

СОСТОЯНИЕ Выражение

где Выражение — выражение строкового типа.

Пример использования:

!СОСТОЯНИЕ "Обрабатываются операции за "+пДАТА

Запросить у пользователя значение строкового типа позволяет команда ВВЕСТИ ТЕКСТ. Команда может быть очень полезна при формировании каких-то произвольных отчётов.

Синтаксис:

ВВЕСТИ ТЕКСТ ИмяПеременной ПОДСКАЗКА ТекстПодсказки

где

  • ИмяПеременной — имя переменной, которой будет присвоено введённое пользователем значение;
  • ТекстПодсказки — строковое выражение или текст в кавычках, который выводится в окне запроса на ввод параметра.

Пример использования команды:

!П_Заголовок="Введите фамилию и инициалы ответственного лица"
!ВВЕСТИ ТЕКСТ П_ФИО ПОДСКАЗКА П_Заголовок

Вид вызываемого диалогового окна на экране:

Диалог для ввода строкового значения

Запросить у пользователя значение числового типа позволяет команда ВВЕСТИ. Команда может быть очень полезна при формировании каких-то произвольных отчётов.

Синтаксис:

ВВЕСТИ ИмяПеременной ПОДСКАЗКА ТекстПодсказки

где

  • ИмяПеременной — имя переменной, которой будет присвоено введённое пользователем значение;
  • ТекстПодсказки — строковое выражение или текст в кавычках, который выводится в окне запроса на ввод параметра.

Пример использования команды:

!Е0
!П_Заголовок="Укажите количество строк на странице"
!ВВЕСТИ П_КоличествоСтрок ПОДСКАЗКА П_Заголовок

Примечание: Команды !Тn, !TTn и !En (подробнее о них я расскажу далее) влияют не только на формат вывода чисел, но и на ввод числовых значений. Это позволяет задать, например, ввод только целых числовых значений, как в примере выше.

Условные операторы

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

!ЕСЛИ Условие

!ИНАЧЕ

!КОНЕЦЕСЛИ

где Условие — логическое выражение, определяющее условия ветвления.

Примечание: Ветвь ИНАЧЕ может отсутствовать в данной конструкции при отсутствии на то необходимости. Например:

!ЕСЛИ (СП&.2>0)И(П01>0)
   !*       Дата;  Д;   К;    Сумма;   Текст;                     Субк Д; Субк К
   !ПРОВОДКА ЗН2; ЗН4; "02.1"; П01; "Амортизация за "+РПЕР+" "+СН&  ЗН5; &
!КОНЕЦЕСЛИ

Организация ветвлений внутри формул

Для организации ветвлений внутри формул, используемых, например, в элементах диалоговых и ячейках печатных форм, можно применять функцию ?() (см. рис. ниже).

Использование условного оператора в формуле

Синтаксис:

?(Условие\Выражение1\Выражение2)

где

  • Условие — логическое выражение, определяющее условия ветвления;
  • Выражение1 — числовое или строковое выражение, результат которого вычисляется и возвращается при истинности условия;
  • Выражение2 — числовое или строковое выражение, результат которого вычисляется и возвращается при ложности условия.

Пример использования:

ЗН|3=?((ЗН|3=0)И(ЗН|4>0)\ЗН|5/ЗН|4\ЗН|3)

Для организации сложных ветвлений все условные операторы могут многократно вкладываться друг в друга.

Циклы

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

!ЦИКЛ Условие

!ВОЗВРАТ

где Условие — логическое выражение, определяющее условие для начала итерации (повторения цикла).

Пример организации цикла на 20 итераций (повторений):

!пНом=1

!ЦИКЛ пНом<=20

   !пНом=пНом+1
   !* Выполняем какие-то действия
    . . .

!ВОЗВРАТ

Команда прекращения формирования документа

Для прекращения формирования выходной формы документа или отчёта можно использовать команду !СТОП.

Пример:

!ЕСЛИ ЗН|4=0
   !СООБЩИТЬ "Не указано количество товара!"
   !СТОП
!КОНЕЦЕСЛИ

Команды форматирования данных

Форматирование чисел

В тексте исходного кода, формирующего печатную форму, для задания формата вывода чисел могут использоваться следующие команды:

  • — выводить последующие показатели (значения переменных и макроимён) в тысячах с двумя знаками в дробной части;
  • !ТТ — выводить в миллионах с двумя знаками в дробной части;
  • — выводить в единицах с 2-мя знаками в дробной части (формат, используемый по умолчанию);
  • !Еn, !Tn, !TTn — выводить в соответствующих единицах с n знаками в дробной части.

Для каждого показателя (значения переменной или макроимени) формат его вывода запоминается при присвоении ему значения. Например, после выполнения участка кода, показанного ниже, программа запомнить, что значение переменной пКоличество является целым числом и его следует отображать в печатной форме без дробной части, а значение переменной пИтог — с двумя знаками в дробной части.

!Е0
!ВВЕСТИ пКоличество ПОДСКАЗКА "Укажите количество"
!Е
!пИтог=пЦена*пКоличество

При необходимости непосредственно в ячейке печатной формы можно указать и другой формат вывода показателей, задав его с помощью соответствующей команды, которая записывается через пробел после показателя, но без знака «!». Например:

Указание формата в ячейках формы

При задании формата вывода непосредственно в ячейке печатной формы кроме вышеперечисленных команд можно также использовать следующие команды:

  • П — выводить число в виде суммы прописью (рубли и копейки);
  • П0 — выводить число в виде суммы прописью (в рублях без копеек);
  • Ш — выводить число прописью (в штуках);
  • или =   — выводить число, используя в качестве разделителя целой и дробной части числа символ «–» или «=» (например: 25=00).

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

  1. Создайте копию с другим именем файла 1SBWLANG.CNF (этот файл прописи находится в основной директории программы), например, 1SBWUSD.CNF.
  2. Исправьте в этом файле по своим требованиям наименования денежных единиц, числительные, названия месяцев и т.д.
  3. В документах, в которых вы хотите выводить сумму с заданными вами наименованиями денежных единиц, числительными и т.д., используйте команду:
!ПРОПИСЬ "ИмяФайла"

где ИмяФайла — имя файла прописи, который Вы хотите использовать. При необходимости вместо строки с именем файла можно использовать строковое выражение, дающее в результате имя этого файла.

Чтобы задать или отменить разделение разрядов целой части числа используются команды:

  • !РАЗДЕЛЯТЬ — выводить числовые значения с разделителями;
  • !НЕРАЗДЕЛЯТЬ — отменить вывод числовых значений с разделителями.

Форматирование дат

Команда установки формата для дат существует только одна — П. Она предписывает выводить дату прописью.

Пример использования:

!пДатаПрописью=ФОРМАТ(ЗН2\"П")
!Если ВЫД(ЗН2\1\1) = "0"
   !* добавляем предшествующий 0 в дату прописью
   !пДатаПрописью="0"+пДатаПрописью
!КонецЕсли

Задание расчётного периода

В формах отчётов и документов, если расчётный период не указан явно с помощью соответствующей команды, подразумевается рабочий период, установленный в окне «Расчёт итогов» (см. рис. ниже). Данное окно можно вызвать на экран через главное меню программы: «Отчетность -> Расчет итогов…».

Окно 'Расчет итогов'

Как видно из рисунка, программа позволяет поддерживать расчёт итогов за два периода: основной и временный. В программном коде переключать режим вывода итогов с основного на временный и обратно позволяют команды:

  • !ВРЕМРАСЧ — установить режим работы с временным расчётом итогов;
  • !ОСНРАСЧЕТ — переключиться на основной расчёт.

В процессе выполнения отчёта можно также выполнить временный расчёт с произвольным периодом формирования итогов. Для этого используется команда:

!РАССЧИТАТЬ ИТОГИ С Дата1 ПО Дата2

или

!РАССЧИТАТЬ ИТОГИ С Дата1 ПО Дата2 БЕЗ АНАЛИТИКИ

где Дата1, Дата2 — строковые выражения, возвращающие даты в формате "ДД.ММ.ГГ".

Команды явного задания периода

Если периодом должен быть квартал, используются следующие макрокоманды:

  • !КВ — рассчитать за текущий квартал;
  • !КН — рассчитать за текущий квартал нарастающим итогом с начала года;
  • !КВn — рассчитать за квартал с номером n (n=1…4);
  • !KHn — рассчитать за квартал с номером n нарастающим итогом с начала года.

Если расчётным периодом должен быть месяц, то используются макрокоманды:

  • !Мn — рассчитать за месяц с номером n (n=1…12);
  • !MHKn — рассчитать за месяц с номером n нарастающим итогом с начала квартала;
  • !МНГn — рассчитать за месяц с номером n нарастающим итогом с начала года.

При необходимости номер месяца можно указывать и в пределах текущего квартала:

  • !МnКВ — рассчитать за месяц с номером n текущего квартала (n=1…3);
  • !МНКnКВ — рассчитать за месяц с номером n текущего квартала нарастающим итогом с начала квартала;
  • !МНГnКВ — рассчитать за месяц с номером n текущего квартала нарастающим итогом с начала года.

Если расчётным периодом должен быть год, используется команда !Гnn, где nn — две последние цифры года.

Примечание 1: Чтобы установить в качестве периода расчёта любой период другого года следует после переключения года установить период внутри этого года, например:

* Расчёт будет произведён за 3 кв-л 2019 года
!Г19
!КВ3

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

!Е0
!ВВЕСТИ пГод ПОДСКАЗКА "Введите две цифры года"
!ВВЕСТИ пКвартал ПОДСКАЗКА "Введите номер квартала"
!Г пГод
!КВ пКвартал

Примечание 3: Для задания расчётного месяца, квартала или года можно использовать также строковое выражение, содержащее дату в формате "ДД.ММ.ГГ". При этом будет установлен период, внутри которого находится эта дата. Выражение следует начинать с пустой строки ("") в качестве первого операнда.

* Расчётным периодом выбираем текущий месяц
!М ""+РДАТА

Макроимена для получения информации о текущем периоде

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

  • РПЕР — возвращает текущий период вывода итогов. Возвращаемым значением является строка, например, «2 Квартал 2022 г.»;
  • ДАТАНАЧПЕР — возвращает дату начала текущего периода вывода итогов;
  • ДАТАКОНПЕР — возвращает дату конца текущего периода вывода итогов.

Пример использования:

!КВ
!пКонПер=ДАТАКОНПЕР
!пДатаБаланса=ДАТАСЛЕД(пКонПер)

Макроимена для валют

Для ссылок на наименования валют в различных печатных формах можно использовать следующие макроимена:

  • ВНn — возвращает сокращённое наименование валюты под номером n;
  • ВКn — возвращает код валюты под номером n.

Для ссылки на курс валюты используются макроимена:

  • ВКУРСn — возвращает курс валюты под номером n на текущую дату;
  • ВКУРСnd — возвращает курс валюты под номером n на дату d.

Здесь дата d может быть любой строкой символов в кавычках (например, "18.04.19"), либо именем переменной, либо ссылкой на реквизит документа или расчёта, а номер валюты n — либо числом, либо ссылкой на реквизит документа или расчёта.

Макроимена для субконто

Цены, наименования и параметры субконто могут включаться в отчёты с помощью следующих макроимен:

  • СНn:m — возвращает наименование субконто вида n с номером m;
  • СЦn:m — возвращает цену субконто вида n с номером m;
  • СНn:m.k или СПn:m.k — возвращает значение параметра с номером k субконто вида n с номером m.

Здесь m — полный номер субконто. В нём перечисляются через двоеточие номера каждого уровня субконто. Например, 1:2:3 — субконто вида 1 с полным номером 2:3.

Макроимена для констант

Для получения значения константы в языке используется макроимя Кn, где n — номер константы — число от 1 до 99999.

Макроимена для итогов и оборотов по счетам

Получить сальдо и обороты по счетам за установленный расчётный период позволяют следующие макроимена:

  • СНДn — возвращает дебетовое сальдо на начало периода по счету n;
  • СНКn — возвращает кредитовое сальдо на начало периода по счету n;
  • СКДn — возвращает дебетовое сальдо на конец периода по счету n;
  • СККn — возвращает кредитовое сальдо на конец периода по счету n;
  • ДОn — возвращает дебетовый оборот по счету n;
  • КОn — возвращает кредитовый оборот по счету n;
  • ОБn,m — возвращает оборот за период в дебет счета n с кредита счета m.

Номера счетов в макроименах записываются так, как они указаны в плане счетов. Номера счёта и субсчёта записываются через точку (без кавычек), например:

!пСтрока627=СНК62.2+СНК62.22

Макроимена для итогов и оборотов по субконто

Для получения остатков и оборотов по конкретным объектам аналитического учёта (субконто) номер субконто следует указывать через двоеточие после соответствующего макроимени.

  • СНДn:s — возвращает дебетовое сальдо на начало периода по счету n по субконто s;
  • СНКn:s — возвращает кредитовое сальдо на начало периода по счету n по субконто s;
  • СКДn:s — возвращает дебетовое сальдо на конец периода по счету n по субконто s;
  • СККn:s — возвращает кредитовое сальдо на конец периода по счету n по субконто s;
  • ДОn:s — возвращает дебетовый оборот по счету n по субконто s;
  • КОn:s — возвращает кредитовый оборот по счету n по субконто s;
  • ОБn:s,m — возвращает оборот за период в дебет счета n по субконто s с кредита счета m;
  • ОБn,m:s — возвращает оборот за период в дебет счета n с кредита счета m по субконто s.

При использовании многоуровневых списков номера субконто различных уровней также записываются через двоеточие, например:

!пБалСтоимость=СКД01.01:1:1

В данном примере мы получаем балансовую стоимость для здания цеха №1 (см. рис. ниже), полный код которого 1:1.

Список субконто

Примечание: Для того чтобы в формулах можно было ссылаться на обороты по субконто, следует при настройке плана счетов поставить символ «+» в графе «Анализ оборотов» напротив тех счетов, по которым вы хотите использовать обороты по субконто с другими счетами (см. рис. ниже), а после этого выполнить основной расчёт итогов. Делать это следует только при наличии на то необходимости, так как все дополнительные возможности требуют дополнительных ресурсов.

План счетов

Макроимена для итогов и оборотов в валюте

Для ссылки на рублевый эквивалент по конкретной валюте следует после соответствующего макроимени (из описанных выше) поставить символ «~» (тильда) и затем номер используемой валюты. Для получения суммы в валюте следует, кроме того, поставить в конце символ «В» (русская буква «В»). Например: СНД52~1, СНК52~1В и т.п.

Макроимена для итогов и оборотов в натуральном выражении

Для получения остатков и оборотов по конкретным объектам аналитического учёта в натуральном выражении (в штуках, метрах и т.д.) следует использовать те же макроимена, что были описаны выше, но с добавлением в конце русской буквы «Н». Например:

!пЕдиницНаБалансе=СКД01.01:1:1Н

Макроимена для развернутого сальдо

Для активно-пассивных счетов, то есть счетов, для которых остатки по конкретным объектам учёта могут быть как дебетовыми, так и кредитовыми (например, счет 71 «Расчёты с подотчётными лицами»), обычное сальдо может не отражать фактических обязательств или средств предприятия. В бухгалтерском учёте такие счета называются счетами с развернутым сальдо.

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

  • СНДn:: — сумма дебетовых остатков на начало периода по всем конечным (то есть не имеющим подчинённых) субконто для счёта n;
  • СНКn:: — сумма кредитовых остатков на начало периода по всем конечным (то есть не имеющим подчинённых) субконто для счёта n;
  • СКДn:: — сумма дебетовых остатков на конец периода по всем конечным (то есть не имеющим подчинённых) субконто для счёта n;
  • СККn:: — сумма кредитовых остатков на конец периода по всем конечным (то есть не имеющим подчинённых) субконто для счёта n.

В отдельных случаях необходимо суммировать остатки не по всем конечным (не имеющим подчинённых) субконто, а только по субконто первого уровня вложенности (то есть без учёта подчиненных субконто). Например, при ведении на первом уровне субконто списка организаций, а на втором — сведений о договорах с этими организациями, сальдо можно рассчитывать по организациям, а не по отдельным договорам. Для вычисления таких сальдо используются следующие макроимена:

  • СНДn: — сумма дебетовых остатков на начало периода по всем субконто первого уровня для счёта n;
  • СНКn: — сумма кредитовых остатков на начало периода по всем субконто первого уровня для счёта n;
  • СКДn: — сумма дебетовых остатков на конец периода по всем субконто первого уровня для счёта n;
  • СККn: — сумма кредитовых остатков на конец периода по всем субконто первого уровня для счёта n.

Иногда отдельные дебиторы и кредиторы учитываются по различным субсчетам одного счёта (например, счета 67, 68, 69). Для вычисления развёрнутого сальдо по таким счетам следует использовать развёрнутое сальдо по субсчетам. Оно может быть получено с помощью макроимён:

  • СНДn. — сумма дебетовых остатков на начало периода по всем субсчетам счёта n;
  • СНКn. — сумма кредитовых остатков на начало периода по всем субсчетам счёта n;
  • СКДn. — сумма дебетовых остатков на конец периода по всем субсчетам счёта n;
  • СККn. — сумма кредитовых остатков на конец периода по всем субсчетам счёта n.

Команды для выбора счетов

Интерактивный выбор счетов

Вызов на экран диалога для интерактивного выбора конкретного счёта позволяют реализовать следующие команды:

  • !ВЫБРАТЬ СЧЕТ — предлагается выбрать счёт из списка счетов;
  • !ПОВТОРИТЬ СЧЕТ — предлагается повторно выбрать счёт из списка, после чего повторяются все действия от команды !ВЫБРАТЬ СЧЕТ до данной команды.

Вид диалога для выбора счета:

Диалог выбора счета

Вызов на экран диалога для интерактивного выбора конкретного субсчёта позволяют реализовать следующие команды:

  • !ВЫБРАТЬ СУБСЧЕТА СЧЕТА n — предлагается выбрать субсчёт из списка счетов;
  • !ПОВТОРИТЬ СУБСЧЕТ — предлагается повторно выбрать субсчёт из списка, после чего повторяются все действия от команды !ВЫБРАТЬ СУБСЧЕТА СЧЕТА до данной команды.

Диалог для выбора субсчёта отличается от диалога выбора счёта только отсутствием чекбокса «Обрабатывать субсчета». При вызове диалога для выбора субсчета текущей строкой сразу становится строка счёта n, указанного в команде.

Выбор счетов в цикле

Организовать цикл перебора всех счетов позволяют следующие команды:

  • !ВЫБРАТЬ СЧЕТ ВСЕ — открыть автоматическую выборку счетов (всех по порядку);
  • !СЛЕДУЮЩИЙ СЧЕТ — выбрать следующий счёта из выборки и повторить все действия от команды !ВЫБРАТЬ СЧЕТ ВСЕ до данной команды. Действия продолжаются до конца списка счетов.

Для управления пропуском субсчетов при обходе могут использоваться команды:

  • !ИСКЛЮЧАТЬ СУБСЧЕТА — исключает выбор субсчетов;
  • !ВКЛЮЧАТЬ СУБСЧЕТА — включает выбор субсчетов (режим по умолчанию).

Чтобы исключить выборку субсчетов с самого начала цикла, команда !ИСКЛЮЧАТЬ СУБСЧЕТА должна располагаться до команды !ВЫБРАТЬ СЧЕТ ВСЕ. А вот внутри цикла при необходимости выборку субсчетов можно включить и снова отключить.

Организовать цикл перебора всех субсчетов указанного счёта позволяют следующие команды:

  • !ВЫБРАТЬ СУБСЧЕТА СЧЕТА n ВСЕ — открыть автоматическую выборку всех субсчетов счёта n;
  • !СЛЕДУЮЩИЙ СУБСЧЕТ — выбрать следующий по порядку субсчёт и повторить все действия от команды !ВЫБРАТЬ СУБСЧЕТА СЧЕТА ВСЕ до данной команды. Действия продолжаются до конца списка субсчетов данного счёта.

Макроимена для доступа к текущему счёту

Получить информацию о текущем выбранном счёте позволяют следующие макроимена:

  • СЧ& — возвращает код текущего счёта;
  • ССЧ& — возвращает код текущего субсчёта;
  • СССЧ& — возвращает коды текущего счёта и субсчёта в формате «ХХ.ХХ»;
  • НСЧ& — возвращает наименование текущего счёта;
  • НССЧ& — возвращает наименование текущего субсчёта;
  • СЧСВ& — возвращает код вида субконто, закреплённого за счётом.

Для получения же итогов по выбранному счёту можно использовать макроимена, описанные выше для итогов, указывая в них вместо кода счёта и субсчёта символ «&» (ссылка на текущий счёт). Например: СНД&, ОБ&,20 и т.п.

Пример использования макроимён в цикле:

!ВЫБРАТЬ СЧЕТ ВСЕ
   !П_Счет=СССЧ&
   !П_НаименованиеСч=НСЧ&+" - "+НССЧ&
    . . .
!СЛЕДУЮЩИЙ СЧЕТ

Команды для выбора субконто

Интерактивный выбор субконто

Вызов на экран диалога для интерактивного выбора конкретного субконто позволяют реализовать следующие команды:

  • !ВЫБРАТЬ СУБКОНТО — предлагается выбрать из списка вид субконто и конкретное субконто из данного вида;
  • !ВЫБРАТЬ СУБКОНТО ВИД n — предлагается выбрать из списка конкретное субконто указанного вида. Здесь n — номер вида субконто (указывается как число или числовое выражение);
  • !ПОВТОРИТЬ СУБКОНТО — предлагается повторно выбрать субконто из списка, после чего повторяются все действия от команды !ВЫБРАТЬ СУБКОНТО до данной команды.

Вид диалога для выбора субконто, вызываемого командой !ВЫБРАТЬ СУБКОНТО:

Диалог выбора субконто

Вид диалога для выбора субконто, вызываемый командой !ВЫБРАТЬ СУБКОНТО ВИД n, отличается от показанного на рисунке выше отсутствием списка видов субконто.

Выбор субконто в цикле

Организовать цикл перебора всех субконто позволяют следующие команды:

  • !ВЫБРАТЬ СУБКОНТО ВИД n ВСЕ — открыть автоматическую выборку субконто (всех по порядку) указанного вида. Здесь n — номер вида субконто (указывается как число или числовое выражение);
  • !СЛЕДУЮЩИЙ СУБКОНТО — выбрать следующий субконто из выборки и повторить все действия от команды !ВЫБРАТЬ СУБКОНТО ВИД n ВСЕ до данной команды. Действия продолжаются до конца списка субконто;
  • !СЛЕДУЮЩИЙ ПОДЧИНЕННЫЙ СУБКОНТО — команда аналогична команде !СЛЕДУЮЩИЙ СУБКОНТО, но выбираются только субконто, подчинённые ранее выбранному субконто.

Для управления пропуском подчинённых субконто при обходе могут использоваться команды:

  • !ИСКЛЮЧАТЬ ПОДЧИНЕННЫЕ СУБКОНТО — исключает выбор подчинённых субконто;
  • !ВКЛЮЧАТЬ ПОДЧИНЕННЫЕ СУБКОНТО — включает выбор подчинённых субконто (режим по умолчанию).

Чтобы исключить выборку подчинённых субконто с самого начала цикла, команда !ИСКЛЮЧАТЬ ПОДЧИНЕННЫЕ СУБКОНТО должна располагаться до команды !ВЫБРАТЬ СУБКОНТО ВИД n ВСЕ. А вот внутри цикла при необходимости выборку подчинённых субконто можно включить и снова отключить.

Для установки порядка обработки субконто в цикле можно воспользоваться командами:

  • !СУБКОНТО В ПОРЯДКЕ КОДОВ — выбирать субконто в порядке возрастания кодов;
  • !СУБКОНТО В ПОРЯДКЕ НАИМЕНОВАНИЙ — выбирать субконто в алфавитном порядке (режим по умолчанию).

Команды установки порядка обработки вызываются до вызова команды !ВЫБРАТЬ СУБКОНТО ВИД n ВСЕ.

Макроимена для доступа к текущему субконто

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

  • СК& — возвращает код текущего выбранного субконто в формате «n:n» (коды подчинённых перечисляются через двоеточие);
  • СВК& — возвращает код вида и код выбранного субконто (перечисляются через двоеточие);
  • СН& — возвращает наименование выбранного субконто;
  • СЦ& — возвращает цену выбранного субконто;
  • СУ& — возвращает номер уровня выбранного субконто;
  • СНУ& — возвращает номер уровня выбранного субконто, если субконто не имеет подчинённых, иначе — 0;
  • СН&.m или СП&.m — возвращают значение параметра с номером m выбранного субконто.

Для ссылки на характеристики субконто вышестоящего уровня используются те же макроимена, но к ним добавляются следующие символы:

  • ^ — для ссылки на характеристики субконто предыдущего уровня;
  • ^^ — для ссылки на характеристики субконто уровня «через один наверх»;
  • ^n — для ссылки на характеристики субконто уровня n.

Например, если у нас товары в списке сгруппированы по группам, то наименование группы при выборе товара в цикле получаем следующим образом:

!ВЫБРАТЬ СУБКОНТО ВИД 8 ВСЕ
   !ЕСЛИ СУ&>1
      !пТовар=СН&
      !пТоварнаяГруппа=СН&^
       . . .
   !КОНЕЦЕСЛИ
    . . .
!СЛЕДУЮЩИЙ СУБКОНТО

Итоги же по выбранному субконто можно получить, используя макроимена описанные ранее для итогов, указывая в них вместо кода субконто символ «&» (ссылка на текущий субконто). Например: СНД01:&, ДО20:&.

Команды для выбора валюты

Интерактивный выбор валюты

Вызов на экран диалога для интерактивного выбора конкретной валюты позволяют реализовать следующие команды:

  • !ВЫБРАТЬ ВАЛЮТУ — предлагается выбрать из списка конкретную валюту;
  • !ПОВТОРИТЬ ВАЛЮТУ — предлагается повторно выбрать валюту из списка, после чего повторяются все действия от команды !ВЫБРАТЬ ВАЛЮТУ до данной команды.

Вид диалога для выбора валюты:

Диалог выбора валюты

Выбор валюты в цикле

Организовать цикл перебора всех валют позволяют следующие команды:

  • !ВЫБРАТЬ ВАЛЮТУ ВСЕ — открыть автоматическую выборку валют (всех по порядку);
  • !СЛЕДУЮЩАЯ ВАЛЮТА — выбрать следующую валюту из выборки и повторить все действия от команды !ВЫБРАТЬ ВАЛЮТУ ВСЕ до данной команды. Действия продолжаются до конца списка валют.

Макроимена для доступа к текущей валюте

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

  • ВН& — возвращает сокращённое наименование выбранной валюты;
  • ВК& — возвращает код выбранной валюты;
  • ВКУРС& — возвращает курс выбранной валюты на текущую дату;
  • ВКУРС&d — возвращает курс выбранной валюты на дату d. Здесь дата d может быть любой строкой символов в кавычках (например, «18.04.19»), либо именем переменной, либо ссылкой на реквизит документа или расчёта.

Для получения же итогов по счетам в рублёвом эквиваленте или в валюте используются описанные выше макроимена для итогов, в которых вместо номера валюты следует использовать символ «&» (ссылка на текущую валюту). Например: СНД52~&, СНК52~&В и т.п.

Другие статьи по схожей тематике