Что нового в Инфо-Бухгалтер 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. Расширенный текстовый редактор может использоваться для редактирования:
Использование расширенного редактора может быть отключено в диалоге настроек: Установка->Настройки->Документы->Текстовый редактор: Инфо-Бухгалтер 10/Стандартный. Параметры расширенного редактора могут быть заданы там же (кнопка "Параметры") или с помощью контекстного меню (пункт "Параметры редактора") в любом открытом редакторе. По сравнению со стандартным, расширенный редактор предоставляет следующие возможности:
Для работы расширенного редактора необходимы библиотеки ibw8env.dll и edctrl.dll. В настоящее время будет поставляться Unicode-версия библиотеки edctrl.dll (т.е. абсолютно такая же, как в дистрибутиве ИБ 10), поэтому использование расширенного редактора в Win98/ME не поддерживается (автоматически выбирается стандартный). |
3. Сделана поддержка нескольких файлов типовых операций
и задания директории их расположения. Список типовых операций формируется
путем объединения операций из всех найденных файлов с расширением top. Переход
к редактирование типовых операций теперь возможен двумя путями: выбрав нужный
файл или выбрав операцию в общем списке. В редакторе оглавление типовых
операций теперь показывает только операции данного файла.
В диалоге настроек добавлена директория типовых операций. В окне "Информация" сделано отображение папки, количества и списка используемых файлов типовых операций. Функция ФАЙЛ_ТИПОП теперь возвращает директорию файлов типовых операций. Оператор ТИП_ОПЕР работает по прежнему. Указываемые файлы не обязаны лежать в директории типовых операций. Т.е. сохраняется возможность вызова не присутствующих в отображаемом списке операций. |
4. Сделан новый оператор ВЫБОР
для многовариантной передачи управления в зависимости от значения заданного
выраджения. Оператор поддерживается только в режиме компилятора. Тип выражение
выбора должен соответствовать типам выражений случаев. Могут использоваться
все простые типы. ВЫБОР
и КОНЕЦ_ВЫБОРА - новые
ключевые слова.
ВЫБОР(
<выражение выбора> ) <выражение выбора>
- выражение одного из простых (не объектных) типов, по которому происходит
поиск соответствующего случая; Если вычисленное значение выражения выбора равно одному из вычисленных значений выражений N-го случая, то выполняются операторы N-го случая. Если соответствий не найдено, то выполняются операторы секции после ключевого слова ИНАЧЕ (при ее наличии). Не накладывается ограничений, что выражения случаев должны быть константами и, соответственно, на этапе выполнения их значения могут повторяться. Выбор подходящего случая происходит путем последовательного вычисления значений выражений в том порядке, как они указаны в исходном тексте (сверху вниз). Когда указано несколько выражений для одного случая, то вычислений их происходит слева направо. |
5. Сделан новый цикл ИНДЕКС
для перебора элементов индексной переменной. Цикл реализован только для
режима компилятора.
ЦИКЛ ИНДЕКС( <переменная-значение>
= <имя индексной переменной>!<переменная-индекс> ) <переменная-значение>
- переменная, последовательно принимающая значения элементов индексной
переменной; если тип этой переменной заранее определен, то элементы индексной
переменной должны ему соответствовать; Пример. ЦИКЛ ИНДЕКС ( знач =
а!инд ) |
6. В компиляторе сделана поддержка нового ключевого
слова КОНСТ для определения
именованных констант в библиотеках (подобно общим переменным с инициализацией).
Определение константы должно быть записано в одну строку.
КОНСТ <имя константы> = <константное выражение> Тип константы задается указанным константным выражением. Выражение вычисляется на этапе компиляции. Вычисленные компилятором значения констант подставляются в места использования. На этапе выполнения используются готовые значения, записанные в код. При записи константы слева от = в операторе присваивания, компилятор выдает ошибку. В интерпретаторе именованные константы не поддерживаются. Пример. |
7. В интерпретаторе и компиляторе сделана поддержка блока комментариев /* ... */. В стандартном текстовом редакторе подсветка блочных комментариев не поддерживается, в расширенном - поддерживается. |
8. В интерпретаторе и компиляторе сделана поддержка ключевого слова ПРОДОЛЖИТЬ для перехода к следующей итерации циклов. |
9. В интерпретаторе и компиляторе сделана поддержка
расширенного вызова встроенных функций. Теперь встроенную функцию можно
вызвать как оператор, а возвращаемое значение будет проигнорировано. Для
библиотечных функций расширенный вызов не поддерживается.
Пример. |
10. Сделан новый оператор внутреннего языка ПАУЗА: <длительность> - величина паузы в миллисекундах. Этот оператор нужен, в частности, для организации обмена с различным оборудованием. Если устройство работает асинхронно, то для последовательной работы бланка необходимо дождаться достижения определенного состояния этим устройством. В простейшем случае, это реализуется вызовом в цикле функции опроса состояния устройства и паузы. |
11. Сделана новая функция внутреннего языка ОКНО_СООБ,
позволяющая показывать на экране окна сообщений (message box) с поддержкой
практически всех возможностей соответствующей функции Windows. Функция перекрывает
возможности оператора СООБЩЕНИЕ
и функции ВОПРОС.
ОКНО_СООБ( <текст>, <заголовок>, <кнопки>, <опции> ) <текст> - строковое
выражение, текст сообщения. Поддерживаются следующие идентификаторы: <опции> - прочие
параметры окна. Параметры указываются через запятую, Другие параметры: Возвращаемое значение: функция возвращает строку, идентификатор нажатой
кнопки. |
12. Сделаны новые операторы внутреннего языка УДАЛИТЬ_ОПРЕДЕЛЕНИЕ
и УДАЛИТЬ_РЕКВИЗИТ. УДАЛИТЬ_ОПРЕДЕЛЕНИЕ( <имя определения> ) УДАЛИТЬ_РЕКВИЗИТ( <имя реквизита> ) При отсутствии указанного определения или реквизита ничего не происходит. |
13. Сделана новая функция внутреннего языка СОЗДАТЬ_ПРОЦЕСС
для запуска внешних приложений (расширенный вариант оператора ВЫПОЛНИТЬ): СОЗДАТЬ_ПРОЦЕСС( <командная строка>, <рабочий каталог>, <опции> ) <командная строка>
- строковое выражение, имя запускаемого файла и параметры запуска. бит значение 1 синяя (B) составляющая цвета текста |
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 >>