Re: Помогите разобраться
Пользователь:
Gena (IP-адрес скрыт)
Дата: 04, November, 2011 23:08
Это кусочек, целиком это должно выглядеть так:
&uf('Av910^d#'f(val(&unifor('S1A'))-1,0,0))
&uf('A - юнифор, который выводит заданное повторение поля. Его синтаксис
&uf('Annn#mmm'), где nnn - поле или поле с подполем, а mmm номер повторения, которое надо вывести. Тоесть, такой вот формат будет выводить второе повторения поля 910 подполя ^d:
&uf('Av910^d#2')
Далее, &unifor('S1A') - это формат автосчетчика, он увеличивает на еденицу счетчик и выводит его, срабатывает при каждом вызове. Тоесть при следующем формате:
&unifor('S1A')/
&unifor('S1A')/
&unifor('S1A')/
&unifor('S1A')/
мы получим в ответ
1
2
3
4
Сразу примем во внимание, что это не числовое значение, а строчное!
Функция f(A,B,C) преобразует число в строку. В данном случае это нужно для того, что бы выполнить математическое действие. Так как &unifor('S выдает строку, то его надо преобразовать в число, это делается с помощью функции val(). А вся вместе конструкция f(val(&unifor('S1A'))-1,0,0)) выдает число, на единицу меньшее, чем выдал бы счетчик.
Из этого могу предположить, что происходит какое-то действие с местом хранения текущего экземпляра и предыдущего. Где-то так.