Что нового в Инфо-Бухгалтер 8.507

1. Добавлен новый тип внутреннего языка ТИП_COM. С помощью объектов этого типа можно решать задачи взаимодействия программы Инфо-Бухгалтер с другими программными средствами, реализующими интерфейсы COM. COM является стандартной для среды Windows технологией. Эта технология поддерживается разнообразными средствами разработки от разных производителей. О COM и ее расширениях написано множество книг.

В программе Инфо-Бухгалтер поддержка COM позволит решить две основные задачи: - обеспечить взаимодействие с драйверами оборудования и приложениями, представленными в виде COM-классов; - предоставить независимым разработчикам средство расширения платформы Инфо-Бухгалтер путем создания собственных COM-классов.

Иллюстрацией решения первой задачи является возможность работы с фискальным регистратором ШТРИХ-КОМБО-ФР. Второе применение позволит на другом качественном уровне решать задачи расширения возможностей, в настоящее время решаемые с помощью функции ВЫЗОВ и оператора ВЫПОЛНИТЬ.

Для осуществления вызова методов и обращения к свойствам COM-объектов используется стандартный интерфейс COM IDispatch. ТИП_COM предоставляет четыре метода для: - создания COM-объекта, - вызова метода, - получения значения свойства, - установки значения свойства.

Метод СОЗДАТЬ_ЭКЗЕМПЛЯР позволяет создать COM-объект (экземпляр COM-класса) и подготовить информацию о заданном COM-интерфейсе (которых класс может реализовывать несколько).

СОЗДАТЬ_ЭКЗЕМПЛЯР( <библиотека типов>, <интерфейс>, <класс>, <опции> )

<библиотека типов> - строковое выражение, идентификатор (GUID) зарегистрированной библиотеки типов или путь к файлу библиотеки, содержащей описание интерфейса, заданного параметром <интерфейс>.

<интерфейс> - строковое выражение, идентификатор (GUID, он же IID) интерфейса COM, с которым планируется осуществлять работу.

<класс> - строковое выражение, идентификатор (GUID, он же CLSID) или идентификатор ProgId класса COM.

<опции> - строковое выражение, дополнительные параметры. Сейчас поддерживается только один параметр: USEDOC - включает возможность указания DocString COM-интерфейса вместо имен методов и свойств при вызовах. Разработчик COM-класса может специально задавать особые значения DocString, например, эквиваленты названий функций интерфейса на русском языке. При использовании этой опции возможность указания настоящих имен методов и свойств сохраняется.

Замечание. Когда параметры <библиотека типов> и <интерфейс> заданы как пустые строки, то используется интерфейс по умолчанию для указанного класса. В случае простых COM-классов достаточно указать только ProgId, который, в отличии от GUID, является читабельной строкой.

Пример.

об.СОЗДАТЬ_ЭКЗЕМПЛЯР( "", "", "MyLib.MyClass", "USEDOC" )

Метод ВЫЗВАТЬ позволяет вызвать метод COM-объекта (который должен быть предварительно создан методом СОЗДАТЬ_ЭКЗЕМПЛЯР).

ВЫЗВАТЬ( <имя метода> [ ( [ПЕРЕМ] <парам1> [, ...] ) ] [, <результат> ] )

<имя метода> - строковое выражение, имя метода COM-интерфейса (или DocString, при использовании опции USEDOC).

<парам1>, ..., <парамN> - значения параметров. Для входных (in) параметров - выражения соответствующего типа. Для выходных (out) и входных/выходных (in/out) - переменные соответствующего типа и обязательное указание ключевого слова ПЕРЕМ.

<результат> - переменная для возвращаемого методом значения (retval). Может не задаваться.

Пример.

об.ВЫЗВАТЬ( "ПримерМетода" ( "входная строчка", ПЕРЕМ вых_перем ), код_ош )
об.ВЫЗВАТЬ( "МетодБезПараметров", возврат )
об.ВЫЗВАТЬ( "МетодБезПараметровИРезультата" )

Метод СЧИТАТЬ позволяет получить значение свойства COM-объекта (который должен быть предварительно создан методом СОЗДАТЬ_ЭКЗЕМПЛЯР).

СЧИТАТЬ( <имя свойства> )

<имя свойства> - строковое выражение, имя свойства COM-интерфейса (или DocString, при использовании опции USEDOC). Метод возвращает значение типа, соответствующего типу свойства.

Пример.

стр = об.СЧИТАТЬ( "СтроковоеСвойство" )
д = об.СЧИТАТЬ( "ДатаНачала" )

Метод ЗАПИСАТЬ позволяет установить новое значение свойства COM-объекта (который должен быть предварительно создан методом СОЗДАТЬ_ЭКЗЕМПЛЯР).

ЗАПИСАТЬ ( <имя свойства>, <значение> )

<имя свойства> - строковое выражение, имя свойства COM-интерфейса (или DocString, при использовании опции USEDOC).
<значение> - выражение типа, соответствующего типу свойства.

Пример.

об.ЗАПИСАТЬ( "СтроковоеСвойство", "Альфа" )
об.ЗАПИСАТЬ( "ДатаНачала", ДАТА_ТЕК )

Замечание. ТИП_СОМ во многом похож на тип ДИН_COM_ОБЪЕКТ в ИБ 10. Более развернутую информацию о взаимодействии с COM (динамической модели взаимодействия, в частности) можно найти в справке по модулю MODCOM из дистрибутива ИБ 10.031. Схожесть механизма взаимодействия с COM позволяет использовать расширения независимых разработчиков на обеих платформах.

2. Подключен расширенный текстовый редактор от ИБ 10. Расширенный текстовый редактор может использоваться для редактирования:

- формульных разделов бланков,
- библиотек (*.ibl),
- исходных текстов (*.src),
- типовых операций,
- текстовых файлов в кодировках DOS/OEM и WIN/ANSI (в Файлы->Редактор).

Использование расширенного редактора может быть отключено в диалоге настроек: Установка->Настройки->Документы->Текстовый редактор: Инфо-Бухгалтер 10/Стандартный. Параметры расширенного редактора могут быть заданы там же (кнопка "Параметры") или с помощью контекстного меню (пункт "Параметры редактора") в любом открытом редакторе.

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

- отмену (undo) Ctrl+Z и повтор (redo) Ctrl+Shift+Z нескольких последних действий,
- перетаскивание выделенного текста (drag'n'drop),
- переключение раскладки клавиатуры для выделенного фрагмента Ctrl+Shift+L (циклически),
- перевод выделенного фрагмента в нижний (Ctrl+U) и верхний регистр (Ctrl+Shift+U),
- выделение слова при двойном клике,
- улучшенная синтаксическая подсветка: выделение строковых констант (с особым выделением латинских символов, цифр и ключевых слов категории slang), предустановленные схемы подсветки, подсветка многострочных комментариев,
- печать выделенного фрагмента текста.

Для работы расширенного редактора необходимы библиотеки ibw8env.dll и edctrl.dll. В настоящее время будет поставляться Unicode-версия библиотеки edctrl.dll (т.е. абсолютно такая же, как в дистрибутиве ИБ 10), поэтому использование расширенного редактора в Win98/ME не поддерживается (автоматически выбирается стандартный).

3. Сделана поддержка нескольких файлов типовых операций и задания директории их расположения. Список типовых операций формируется путем объединения операций из всех найденных файлов с расширением top. Переход к редактирование типовых операций теперь возможен двумя путями: выбрав нужный файл или выбрав операцию в общем списке. В редакторе оглавление типовых операций теперь показывает только операции данного файла.

В диалоге настроек добавлена директория типовых операций. В окне "Информация" сделано отображение папки, количества и списка используемых файлов типовых операций.

Функция ФАЙЛ_ТИПОП теперь возвращает директорию файлов типовых операций. Оператор ТИП_ОПЕР работает по прежнему. Указываемые файлы не обязаны лежать в директории типовых операций. Т.е. сохраняется возможность вызова не присутствующих в отображаемом списке операций.

4. Сделан новый оператор ВЫБОР для многовариантной передачи управления в зависимости от значения заданного выраджения. Оператор поддерживается только в режиме компилятора. Тип выражение выбора должен соответствовать типам выражений случаев. Могут использоваться все простые типы. ВЫБОР и КОНЕЦ_ВЫБОРА - новые ключевые слова.

ВЫБОР( <выражение выбора> )
#<выражение 1 случая 1> [, <выражение 2 случая 1> [, ... ]] : <операторы случая 1>
[#<выражение 1 случая 2> [, <выражение 2 случая 2> [, ... ]] : <операторы случая 2> ]
[# ... ]
[ ИНАЧЕ <операторы секции иначе> ]
КОНЕЦ_ВЫБОРА

<выражение выбора> - выражение одного из простых (не объектных) типов, по которому происходит поиск соответствующего случая;
<выражение K случая N> - K-ое выражение в списке выражений для случая N;
<операторы случая N> - последовательность операторов, соответствующих случаю N.

Если вычисленное значение выражения выбора равно одному из вычисленных значений выражений N-го случая, то выполняются операторы N-го случая. Если соответствий не найдено, то выполняются операторы секции после ключевого слова ИНАЧЕ (при ее наличии). Не накладывается ограничений, что выражения случаев должны быть константами и, соответственно, на этапе выполнения их значения могут повторяться. Выбор подходящего случая происходит путем последовательного вычисления значений выражений в том порядке, как они указаны в исходном тексте (сверху вниз). Когда указано несколько выражений для одного случая, то вычислений их происходит слева направо.

5. Сделан новый цикл ИНДЕКС для перебора элементов индексной переменной. Цикл реализован только для режима компилятора.

ЦИКЛ ИНДЕКС( <переменная-значение> = <имя индексной переменной>!<переменная-индекс> )
<операторы секции цикла>
КОНЕЦ_ЦИКЛА

или

ЦИКЛ ИНДЕКС( <переменная-значение> = <имя индексной переменной>[<переменная-индекс>] )
<операторы секции цикла>
КОНЕЦ_ЦИКЛА

<переменная-значение> - переменная, последовательно принимающая значения элементов индексной переменной; если тип этой переменной заранее определен, то элементы индексной переменной должны ему соответствовать;
<имя индексной переменной> - идентификатор индексной переменной, для которой осуществлять перебор; индексная переменная может быть локальная или общая;
<переменная-индекс> - строковая переменная, последовательно принимающая значения
индексов элементов; все индексы представляются в строковом виде;
<операторы секции цикла> - контролируемая циклом последовательность операторов.

Пример.

а!1 = "Альфа"
а!2 = "Бета"
а!3 = "Гамма"

ЦИКЛ ИНДЕКС ( знач = а!инд )
СООБЩЕНИЕ( знач + " : " + инд )
КОНЕЦ_ЦИКЛА

6. В компиляторе сделана поддержка нового ключевого слова КОНСТ для определения именованных констант в библиотеках (подобно общим переменным с инициализацией). Определение константы должно быть записано в одну строку.

КОНСТ <имя константы> = <константное выражение>

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

При записи константы слева от = в операторе присваивания, компилятор выдает ошибку. В интерпретаторе именованные константы не поддерживаются.

Пример.
КОНСТ пи = 3.14
КОНСТ дата_сборки_п = ДАТАП(ДАТА_ТЕК)

7. В интерпретаторе и компиляторе сделана поддержка блока комментариев /* ... */. В стандартном текстовом редакторе подсветка блочных комментариев не поддерживается, в расширенном - поддерживается.
8. В интерпретаторе и компиляторе сделана поддержка ключевого слова ПРОДОЛЖИТЬ для перехода к следующей итерации циклов.
9. В интерпретаторе и компиляторе сделана поддержка расширенного вызова встроенных функций. Теперь встроенную функцию можно вызвать как оператор, а возвращаемое значение будет проигнорировано. Для библиотечных функций расширенный вызов не поддерживается.

Пример.
СООБЩЕНИЕ("Привет") // вызов оператора СООБЩЕНИЕ
ОКНО_СООБ("Привет","","","") // расширенный вызов функции ОКНО_СООБ
рез = ОКНО_СООБ("Привет","","OK,CANCEL","") // обычный вызов функции ОКНО_СООБ

10. Сделан новый оператор внутреннего языка ПАУЗА:

ПАУЗА( <длительность> )

<длительность> - величина паузы в миллисекундах.

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

11. Сделана новая функция внутреннего языка ОКНО_СООБ, позволяющая показывать на экране окна сообщений (message box) с поддержкой практически всех возможностей соответствующей функции Windows. Функция перекрывает возможности оператора СООБЩЕНИЕ и функции ВОПРОС.

ОКНО_СООБ( <текст>, <заголовок>, <кнопки>, <опции> )

<текст> - строковое выражение, текст сообщения.
<заголовок> - строковое выражение, заголовок окна сообщения.
Если задана пустая строка, то выводится стандартный заголовок "Ошибка".
<кнопки> - строковое выражение, список кнопок. Список кнопок задается перечислением их идентификатров через запятую.

Поддерживаются следующие идентификаторы:
OK - Ок
CANCEL - Отмена
YES - Да
NO - Нет
RETRY - Повторить
IGNORE - Пропустить
ABORT - Прервать.

Также, возможно указание номера кнопки по умолчанию. Порядок перечисления кнопок не важен, но не любые комбинации поддерживаются. Список поддерживаемых комбинаций:
OK
OK, CANCEL
YES, NO
RETRY, CANCEL
YES, NO, CANCEL
ABORT, RETRY, IGNORE.
По умолчанию и при неверной комбинации в окне присутствует только кнопка ОК.

<опции> - прочие параметры окна. Параметры указываются через запятую,
порядок и регистр символов не важен.
Здесь может задаваться идентификатор иконки:
INFO - информация
WARNING - предупреждение
QUESTION - вопрос
ERROR - ошибка.

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

Возвращаемое значение: функция возвращает строку, идентификатор нажатой кнопки.
Кнопка "Закрыть" системного меню ("крестик") эквивалентна кнопке CANCEL.

12. Сделаны новые операторы внутреннего языка УДАЛИТЬ_ОПРЕДЕЛЕНИЕ и УДАЛИТЬ_РЕКВИЗИТ.
УДАЛИТЬ_ОПРЕДЕЛЕНИЕ( <имя определения> )
УДАЛИТЬ_РЕКВИЗИТ( <имя реквизита> )
При отсутствии указанного определения или реквизита ничего не происходит.
13. Сделана новая функция внутреннего языка СОЗДАТЬ_ПРОЦЕСС для запуска внешних приложений
(расширенный вариант оператора ВЫПОЛНИТЬ):

СОЗДАТЬ_ПРОЦЕСС( <командная строка>, <рабочий каталог>, <опции> )

<командная строка> - строковое выражение, имя запускаемого файла и параметры запуска.
<рабочий каталог> - строковое выражение, стартовая директория для создаваемого
процесса. Если параметр задан как пустая строка, то используется текущая директория создающего процесса (Инфо-Бухгалтера).
<опции> - строковое выражение, дополнительные параметры, задаваемые через запятую:
WAIT - признак ожидания завершения запускаемого процесса. Инфо-Бухгалтер блокируется до завершения созданного процесса (синхронный запуск), при этом есть возможность получить его код возврата. При отсутствии опции WAIT Инфо-Бухгалтер запускает и забывает о созданном процессе (асинхронный запуск).
HIDE - команды показа окна создаваемого процесса.
MIN Соответственно: спрятать, свернуть, развернуть.
MAX Вызываемое приложение может игнорировать эту начальную команду показа.
CONSOLE_TITLE - заголовок окна консольного приложения.
Задается так: CONSOLE_TITLE=<текст заголовка>.
Если параметр не задан, то в заголовок консольного окна выводится имя исполняемого файла. Приложение может игнорировать этот параметр и установить какой-то свой заголовок.
CONSOLE_ATTR - начальные атрибуты консольного окна.
Задается так: CONSOLE_ATTR=<число>.
Число соответствует битовой маске для одного байта. Младшие 4 бита отвечают за цвет текста, старшие - фона:

бит значение

1 синяя (B) составляющая цвета текста
2 зеленая (G) составляющая цвета текста
3 красная (R) составляющая цвета текста
4 яркость цвета текста
5 синяя (B) составляющая цвета фона
6 зеленая (G) составляющая цвета фона
7 красная (R) составляющая цвета фона
8 яркость цвета фона

Функция возвращает код завершения программы. В случае ошибки запуска процесса (как в синхронном, так и в асинхронном режиме) функция возвращает -1. Например, ошибка может возникнуть, если указан неправильный путь к программе. В соответствии с общепринятым соглашением, код 0 обозначает безошибочное завершение программы, а любой другой код (например, 1) возвращается, если выполнение программы завершилось с ошибкой. В случае асинхронного запуска Инфо-Бухгалтер не может получить код завершения внешней программы, поэтому при отсутствии ошибки запуска процесса функция всегда возвращает 0.

14. Добавлена новая функция внутреннего языка НОВЫЙ_GUID. Функция возвращает созданное значение глобального уникального идентификатора (GUID) в строковом виде: {XXXXXXX-XXX-XXXX-XXXX-XXXXXXXXXXXX}. Глобальная уникальность идентификатора гарантируется для компьютеров с сетевым адаптером. В противном случае, идентификатор уникален только в пределах компьютера. На двух разных компьютерах без сетевого адаптера значения идентификатора могут совпасть.

Замечание. Уникальные идентификаторы могут использоваться в различных областях, в т.ч. при формировании отчетов в электронном виде.
15. Для функции ВЫБОР_ДИР сделан второй необязательный параметр - начальная директория.
16. Сделан учет количественных оборотов при обработке опции "Показывать неиспользуемые счета" в оборотке. Так ранее для счета верхнего уровня (не колич.-сумм.), если суммовой оборот был равен 0, а количественный не равен 0 (дают КС-субчета), то счет полагался неиспользуемым и не отображался в соответствующем режиме. Теперь, если учитывать на КС-субсчетах нечто по цене 0 и создавать только количественный (но не суммовой) оборот, то соответствующий не-КС-счет верхнего уровня будет отображаться в оборотке с нулевыми суммами оборотов, но будет считаться используемым.
17. В окне журнала хоз. операций сделана возможность поиска текущей операции после изменения фильтра. Если операция, бывшая со старым фильтром текущей, попадает в выборку с новым фильтром, то на нее ставится курсор таблицы (т.е. она остается текущей). Когда операция не попадает в новую выборку, то текущей становится первая операция с той же датой или с ближайшей большей датой (как в функции ОПЕР_ОТ).

Т.к. поиск операции в новой выборке требует дополнительных вычислений, то данная возможность сделана опциональной. В диалоге настроек на странице "Хозяйственные операции" сделана опция "Показывать->Текущую операцию при смене фильтра", управляющая этим режимом. В режиме "проводки вместе с операциями" поиск текущей операции запрещен, т.к. там возможна сортировка.

18. Убран поиcк системы "Гарант" при старте Инфо-Бухгалтера, приводящий, в некоторых ситуациях, к поиску CD (по непонятным причинам).
19. Сделана поддержка прокрутки с помощью колеса мыши для таблиц и редактора на основе специального сообщения. Это сообщение не поддерживается в Win95/98.
20. Слова "каталог" и "директория" во всех строковых ресурсах заменены на "папка". Разумеется, функции языка называются по прежнему.
21. Исправлено отображение свободного пространства дисков в окне информации о компьютере (отображалось отрицательное).
22. В текстовом редакторе, бланках и редакторе бланков сделана возможность показа контекстного меню по нажатию соответствующей кнопки клавиатуры.
23. В сетевой версии с локальными ключами и Sentinel SuperPro Net при создании новой базы теперь ожидается пустой пароль Администратора. Ранее ожидался пароль "пароль". Для версии со старыми сетевыми ключами NetSentinel пароль по прежнему берется из ключа.
24. Исправлен диалог выбора директории. Под управлением Win XP иногда возвращал мусор.
25. Исправлена конвертация Win->Dos и Dos->Win символа №. В старом тектовом редакторе сохранялся в DOS-файлах c кодом 0xB9 (ANSI), а не 0xFC (OEM). Сейчас при считывании понимает и правильный, и неправильный вариант, а сохраняется всегда в правильной кодировке.

8.507 8.508 >>

Все версии

Главная страница

Hosted by uCoz