######################################################################################### Версия 2.0.2.1 Глобальные изменения Исправлена проблема с отсутствием интерфейса IInitDone при запуске 1С без прав локального админа и несовпадении пути регистрации и пути загрузки компоненты Доработано ускорение контекста, в т.ч. и для внешних отчетов, на базе методов ТурбоБЛ 1) есть возможность обращаться к переменным и методам любой формы напрямую (TurboBL) 2) самое главное, для внешних отчетов больше нет необходимости создавать объект "УскорительГК" в модуле внешнего отчета. Этот код выполняется автоматически при открытии формы внешнего отчета. Для всех КОП 1. Добавлено: 1. более читабельный метод "ЗаменитьБазовыйОбъект" (ReplaсeBaseObject) - синоним ЗаменитьЭкcзБазовогоКласса 2. Новый встроенный метод для КОП "ЯвляетсяОбъектом" (англ. "TheClassIs") 3. Добавлены синонимы (recommended / deprecated): - ЗаменитьБазовыйОбъект (ReplaсeBaseObject) / ЗаменитьЭкcзБазовогоКласса (ReplaceInstBaseClasses) 4. Добавлена возможность наследовать классы напрямую от "ГрупповойКонтекст" т.е. можно написать в файле defcls.prm class НаследникГрупповойКонтекст = НаследникГрупповойКонтекст : ГрупповойКонтекст {} но для корректной работы класса необходимо использовать вызов ЗаменитьБазовыйОбъект("ГрупповойКонтекст", КонтекстОткрытойФормы); 2. Исправлено: Тип класса равен тому, что написал разработчик в файле описания класса, а не так, как пользователь напишет в СоздатьОбъект(ТипОбъекта) [bug 2021] [-] исправлен баг 2023 - в методе "ОтправитьСообщениеМодулюХоз" - [bug 2023] не удавалось получить возвращаемое значение от обработчика события в модуле-хозяине; [-] в методе "ОтправитьСообщениеМодулюХоз" - если в модуле-хозяине нет обработчика "ОбработкаСобытияОтКласса", выдается исключение [+] Метод Структура::Удалить() выдает исключение, если переданного ключа в структуре не существует. [bug 2103] Исправления в OLEDB: - При укладывании одноуровневого справочника методом УложитьСписокОбъектов() выбрасывалось исключение; - Изменил поведение метода УложитьСписокОбъектов() - теперь указывать каталог временных таблиц не обязательно (!). Если каталог не указан, то временные таблицы создаются в каталоге ИБ; Общие объекты: - Изменено поведение метода BinaryData::ЗагрузитьИзФайла если объект был подключен к файлу, данные загружаются в файл; - добавлены методы класса BinaryData::Zip/Unzip. - Ключи объектов Структура и Делегат сделаны регистронезависимыми - Добавлены параметры в ВыполняемыйМодуль::GetMethOfContext для получения описаний в ТЗ. Есть возможность получать данные о методах и процедурах для любого группового контекста, в т.ч. и для контекстов внешних отчетов. - Рефакторинг класса 'Делегат' - Класс "MetaInfoClasses": новый метод "ЯвляетсяОбъектом" (англ. "IsObject") - Класс "MetaInfoClasses": новый метод "ПолучитьИменаБазовыхКлассов" (англ. "GetBaseClasses") - Класс "ВыполняемыйМодуль": новый метод "КомпилироватьИВыполнитьМодуль" - Класс "ВыполняемыйМодуль": новый метод "РазрешитьИсключения" ("EnableExceptions") - Добавлен класс "Math" - Добавлен класс "Поток", аналогичный классу из ВК Vtools http://vtools.ru/vtools2.htm#35 Изменения в Табличном поле: - добавлена поддержка механизма Drag&Drop; - изменено создание: теперь через СоздатьЭлементУправления("ТабличноеПоле") метод СоздатьТабличноеПоле() удален; - доработка механизма контекстного меню; - устранена ошибка в механизме быстрого поиска; - в событии контекстного меню теперь есть признак заголовка (клик на заголовке колонки); - поддержка ООП: отображение событий в методы наследника от объекта ЭУ. - англоязычные синонимы событий; - Метод ПоставщикДанныхODBC::УстановитьТекущуюСтроку больше не используется, его функционал берет на себя свойство ТабличноеПоле::ТекущаяСтрока; - утвержден и опубликован программный интерфейс для разработки новых поставщиков данных; - Новое свойство ТабличноеПоле::ТекущаяСтрока; - Поставщик данных ODBC может иметь как текстовые так и SQL параметры; - оптимизирована работа Поставщика данных ODBC, он использует параметризированные запросы. - устранение критической ошибки на win98; - Отработка авто цвета, запрет измененения позиции колонок, цвет линий, цвета выделения, чередование строк, программный сдвиг колонок, запрет изменения видимости колонки; - Добавлен метод Сдвинуть() для коллекции колонок, исправлен баг отрисовки при восстановлении видимости колонки; - Отрисовка фокусной рамки в режиме выделения всей строки; Исправления в ODBC: - устранена ошибка не работала типизация строк следующими именами: $ВидРасчета, $ВидСубконто, $Субконто; - устранена ошибка ODBCRecordset получение типа float (double) происходило округление до целого; - устранение ошибки УложитьСписокОбъектов не закрывал за собой запрос; - новая реализация УложитьСписокОбъектов в алгоритме обработки иерархического справочника; - устранение ошибки при получении длинных полей (не получались); - устранение ошибки в ВЗ $ПоследнееЗначение неправильно работало при типе реквизита Дата; - модификаторы не используются для SQL параметров, все определяется SQL типом параметра в методе ODBCRecordset::ДобПараметр; - комплексные изменения движка прямых запросов; Исправления в классе ИндексированнаяТаблица: Исправления: - Ошибка удаления колонки - не изменялся внутренний номер оставшихся колонок - В методах ВыбратьСтроку()/Показать() - неправильно заполнялись параметры по умолчанию. - В методе Группировать() имена колонок сумм не проверялись на допустимость. - Методы НайтиСтроку(), НайтиБлижайшуюБольше(), НайтиБлижайшуюМеньше() всегда позиционировались на найденную строку, незваисимо от параметра чСпозиционироваться. - Методе Пересечение() давал неверные результаты. - Исправлена ошибка установки подмножества по индексу с сортировкой по убыванию - Методы ЗаполнитьКолонку(), Выгрузить(), ВФайл(), ВСтроку() сбрасывали текущую позицию в выборке. - В методе Подмножество() неверно заполнялись значения фильтра. - Исправлено падение 1С при фильтре, в который не попадает ни одна строка. - Исправлено падение 1С при выборках на пустой таблице, что также приводило к падениям и в группировке. - Методы НайтиСтроку(), НайтиБлижайшуюБольше(), НайтиБлижайшуюМеньше() всегда позиционировались на найденную строку, незваисимо от параметра чСпозиционироваться. Новое: - В методе Группировать(), при подсчёте сумм по группам справочников, проверяется наличие колонки <ИмяКолонкиСправочника>_Родитель. Если такая колонка есть, то родитель берётся из неё. - В методе Группировать() с итогами по группам справочника в результирующую таблицу добавляется колонка __ЭтоГруппа__. - В методе Группировать() количество обращений к базе сокращено до минимума. - В метод Группировать() добавлена группировка по датам. Группой считается начало месяца. - Для фильтров добавлена возможность включать в выборку только уникальные значения - Добавлен инверсный фильтр. - Изменены параметры для метода показать - оставлен только индекс. - Добавлен метод ЗагрузитьЗапрос(). - Добавлен метод Разность(). ######################################################################################### Версия 2.0.1.2 Исправления в общей части: - Если при выходе из 1С происходил вылет, то не сохранялись настройки компоненты. Теперь настройки сохраняются сразу при изменении. - Исправлена ошибка регистрации компоненты, возникавшая на некоторых системах. Исправления в OLEDB: - Появился новый метод: УложитьСписокОбъектов (Объект, ИмяТабл, ВидСпр) / PutObjectList() Параметры: - Объект [in] - объект конкретного справочника; - Имя [out] - возвращается имя и путь (абсолютный путь) временной таблицы; - ВидСпр [in] - строка с названием вида справочника, не обязательна. Если указать, то будет уложены все элементы справочника, начиная от Объект. Если не указать, то будет уложен только один элемент Объект; - Появился новый метод: УстановитьКаталогВремТаблиц(стрДир) / SetTempTablesDir(стрДир) В нем указывается, где создавать временные таблицы. Параметры: - стрДир [in] - каталог, в котором будут создаваться временные таблицы. Проверка на правильность пути классом не производится. - Исправлена мелкая ошибка. Исправления в классе ИндексированнаяТаблица: - Исправлена ошибка в методах поиска, приводившая к падению 1С. - Исправлена ошибка в методе Итог(), приводившая к падению 1С. - Исправлена ошибка удаления индекса по номеру. - Добавлен метод ИтогПоДиапазону(). - Метод Загрузить() может загружать табличную часть документа и результаты выполнения запроса 1С (тип Запрос). - Метод Выгрузить() может использоваться для заполнения табличной части документа. - В метод Копия() добавлена возможность копировать только структуру таблицы. - В методе Группировать() добавлена возможность считать итоги по группам справочников. - Исправлено много мелких ошибок и недочетов. - Проведена работа по экономии системных ресурсов. ######################################################################################### Версия 2.0.1.1 Исправления в классе ИндексированнаяТаблица: - В класс ИндексированнаяТаблица добавлены методы ВСтроку() и ИзСтроки(), предназначенные для сериализации. - Добавлен метод ЗаполнитьКолонку() - в метод Выгрузить() добавлена возможность выгружать колонку в СписокЗначений. - добавлен метод ВыбратьСтроку() и его синоним Показать(). Метод создаёт таблицу значений, выгружает туда содержимое текущей таблицы, и вызывает метод ТаблицаЗначений::ВыбратьСтроку(). Предназначен в основном для отладки. - В работе ТабличногоПоля исправлена ошибка, возникавшая при работе под управлением Win98. ######################################################################################### Версия 2.0.1.0 - В тексте запросов можно использовать метки. (после двоеточия должна быть не цифра не буква и не подчеркивание). - Устранена ошибка возникающаяя при использовании параметризированных запросов. State 24000 Недопустимое состояние курсора. - Принята новая система версий. - Устранены проблемы с аппаратным DEP. - Добавлен встроенный класс ИндексированнаяТаблица, англ. синоним IndexedTable ######################################################################################### Версия 1.8.1.7 - ВыполняемыйМодуль::ПолучитьИнформациюОПроцедуре() получение информации о процедуре или функции. - Исправлена ошибка. СервисРасшФормы::ЭмулироватьКлавиатуру() не отрабатывал код клавиши NUMLOCK. - Восстановлено значение 0 флага стандартной обработки в процедуре ГМ ОбработкаЯчейкиТаблицы. - Новые объекты: ТаблиноеПоле, ПоставщикДанныхODBC, ПоставщикДанныхТЗ - Новые классы: OLEDBData (нет рус. синонима) и OLEDBCommand (нет рус. синонима) ######################################################################################### Версия 1.8.1.6 - Добавлена возможность хранить несколько классов в одном модуле. Для этого текст модуля каждого класса нужно начинать со строки "//# ClassBegin " и заканчивать строкой "//# ClassEnd ", где вместо пишем имя класса. Пробелы имеют значение. - Исправлена ошибка. Флаг стандартной обработки при вызове процедуры ГМ ОбработкаЯчейкиТаблицы при входе в процедуру имеет значение 1. - BinaryData режимы открытия файлов. Исправлена ошибка: при чтении данных из 4 байт результатом могло быть отрицательное число. Теперь только положительное. - Оптимизировано создание объектов. Ускорена работа функции СоздатьОбъект(). - Добавлена оптимизация: ВТ РегистрОбороты по оборотному регистру, если расчет идет по ТА, то не используется таблица движений. - Введены модификаторы для типа Документ: 3-ВидДокумента 4-ПозицияДокумента. - Добавлен новый метод: ODBCRecordset::УложитьСписокОбъектов13(СпОбъектов, ИмяВремТаблицы). - Поправлен метод ODBCRecordset::ReconnectNative. - MetaInfoClasses::ПолучитьВерсию() и страница свойств компоненты получают версию из VERSION_INFO ресурса загруженной dll. - Новый метод ODBCRecordset::РежимRPC(). Только для MSSQL. Переводит парсер в режим, в котором парсинг идет для выполнения запроса с помощью RPC вызова хранимой процедуры sp_executesql. - Несколько ускорен парсинг текста запроса. - Новые метаимена: $ПустойИД, $ПустойИД13. ######################################################################################### Версия 1.8.1.5 Изменения ODBCRecordset и иже с ним v. 2.12 - Доработан метод ODBCRecordSet::ВыполнитьСкалярный(). Если в результате запроса отсутствовала строка, то для простых типов возвращаемое значение могло быть не пустым. - Доработан метод ODBCRecordSet::ВыполнитьИнструкцию(). Если в переданной таблице было больше колонок чем в результате запроса, происходило аварийное завершение программы. - Метод ODBCDataBase::ReconnectNative(). Решение бага MSSQL при вставке во временную таблицу при выполнении ХП sp_executesql. Переподкючает программу к серверу. - Имена КОП-ов, их методы и свойства регистронезависимы. - ODBCRecordSet::ExecuteStatement() Исправлена ошибка при передаче вторым параметром простого типа происходило аварийное завершение работы. - ODBCRecordSet. Метод для получения XML результата. - BinaryData. Работа с файлом в разделенном режиме. Добавлены методы работы с блокировками. Объект может чтение/запись строк в различных кодировках (ANSI, OEM, UTF-16(LE), UTF-8) - ODBCRecordSet. Доработано получение длинных строк в unicode (ntext). - Парсер запросов. Добавлено условие по флажку регистра в таблице журнала документов. В общем случае повышает быстродействие. Изменения ядра FormEx - новый метод CurrentTreeColumn/ТекущаяКолонкаДерева у объекта "Дерево+Таблица" - исправлена ошибка совместимости с PuntoSwitcher - исправлена ошибка с флагом стандартной обработки в процедуре ОбработкаЯчейкиТаблицы - исправлена ошибка невызова глобальных процедур обработки событий мыши и клавиатуры, если нет открытых форм - исправлена ошибка установки системного курсора (на изменение размеров) главного окна ######################################################################################### Версия 1.8.1.4 - доработка объекта "Дерево+Таблица" - у объекта "СервисРасшФормы" новый метод - КоманднаяСтрока() ######################################################################################### Версия 1.8.1.3 Изменения ODBCRecordset и иже с ним v. 2.11 - Исправлена ошибка MetaDataWork::ЗначениеВСамуюДлиннуюСтрокуБД() формировала строковое представление длиной 15 символов, теперь 23. - Убран функционал КОП _StringView(), т.к. произошло дублирование функций с _getCode(). - В реализации метаимени $ПоследнееЗначение изменен внутренний алиас на нечитабельный. - ODBCRecordset::ExecuteScalar(); если в результате запроса будет несколько полей, возвращается объект Структура заполненый соответствующим образом (если одно поле, возвращается его значение). - Исправлена ошибка. Новыми методами выполнения (ЕхecuteStatement и ExecuteScalar) было невозможно записывать длинные поля. - Исправлена ошибка. При использовании ODBCRecordset::ExecuteScalar() и параметризированном запросе, если в результате запроса получается пустая выборка возвращалось значение с прошлого выполнения. - баг-фикс части, касающейся FormEx; - получение списка принтеров, проверка состояния принтера; - управление видом курсора (можно устанавливать на реквизит формы, саму форму и на главное окно; естественно, везде можно разные курсору задавать); - управление цветом фона и шрифта реквизитов (работает не для всех типов реквизитов); - новый визуальный объект "дерево-таблица"; - перехват списка значений (можно в реквизите "поле со списком" напрямую набирать с клавиатуры и список будет позиционироваться на соответсвующем значении); - сброс флага модифицированности формы; - получение координат левого-верхнего угла формы; - минимизация формы; - воспроизведение wav-файла; - получение списка открытых печатных форм с возможностью их последующей записи; - получение версии ОС; - обработка ожидания, работающая во всех режимах (даже при открытом модальном окне) с установкой периода вызова в миллисекундах; - загрузка дополнительных глобальных модулей директивой ЗагрузитьИзФайла. ######################################################################################### Версия 1.8.1.2 Изменения ODBCRecordset и иже с ним v. 2.10 - Исправлена ошибка. При получении значения null в колонке типа datetime (SQL_C_TIMESTAMP) формировалось некорректное пустое значение типа Дата. - Новый функционал. Объекты типа КОП могут реализовать собственное представление в виде строки. Для этого КОП должен реализовать функцию "_StringView", которая должна вернуть строковое представление объекта. - Новый функционал. Типизация выборки типом КОП. Для этого необходимо: 1)Использовать типизирующее имя "Класс" и имя класса, например "Спр.id [ОбъектТипаМойКОП $Класс.МойКОП]"; 2)В реализации класса должна присутствовать процедура с названием "_SQLCreate" (виртуальный конструктор), которая будет вызвана после создания объекта, указанного в типизации класса; процедура должна иметь два или меньше параметров; в первом параметре передается значение поля без типизации, во втором статический объект типа MetaDataWork. 3)в реализации _SQLCreate и конструктора объекта не должно быть обращения к БД на том соединении на котором в данный момоент происходит выборка (во избежание кофликта локального курсора). - Переписана работа с длинными строками (SQL_LONGVARCHAR). Теперь возможна запись. - Новый объект "BinaryData". Позволяет работать с двоичными данными. Данные может содержать в памяти или на диске. Создание, чтение/запись данных через строку или целое число различной разрядности, сжатие/разжатие внутренним архиватором (zip), чтение/запись в БД (ODBC тип поля SQL_LONGVARBINARY). - Новый объект "GUID". Формирование нового, выгрузка/загрузка в строку, сравнение, чтение/запись в БД (ODBC тип поля SQL_BINARY(16)). - Исправлена ошибка. При типизации колонки именем $Дата, неправильно возвращался ее 1С тип методом ПолучитьПараметрыПоля(). - Исправлена ошибка. При типизации колонки агрегатным типом, если поле содержало строку длиной меньше минимально необходимой в результате могло получиться некорректное значение. - Добавлены методы ODBCRecordSet::ExecuteStatement() и ODBCRecordSet::ExecuteScalar(). При ошибке в запросе формируют исключение. Обеспечивают получение результата запроса, закрывая курсор. ExecuteStatement() возвращает таблицу значений или количество обработанных строк. Время загрузки результата запроса в таблицу значений уменьшено на 30-60%. ExecuteScalar()возвращает значение из первого поля первой строки результата, остальные данные игнорируются или количество обработанных строк. - При типизации колонки типа datetime именем $Строка возвращаются значения типа строка с каноническим представлением даты ODBC. - Для корректной отрисовки ЭУ текст, рамка, флажок, переключатель внесены изменения в FormEx. - Исправлена ошибка. Метод ODBCRecordSet::ВыполнитьSQL_ИзТЗ() не работал правильно при использовании подстроки в заголовке поля "?3" и "?*". - Исправлена ошибка. При получении полей типа Numeric в состоянии когда набор данных не спозиционирован на строке происходило аварийное завершение программы. - Новый метод ODBCRecordset::ОбратныйРасчетОтТА(). Разрешает оптимизацию расчета остатков от ТА. - Исправлена ошибка. ВТ РегистрОбороты по оборотному регистру. В случае когда периодичность оборотного регистра квартал или год происходил неправильный расчет итогов. - Исправлена ошибка. ВТ РегистрОбороты по оборотному регистру. В случае когда в ВТ передавался период выходяший за рамки периодичности итогов с обоих строн, и условие - формировался неправильный запрос и в выборку попадали лишние записи. - Исправлена ошибка. При типизации именем $Документ с использованием поля с суффиксом "_вид" и имененм $Субконто, и при размещении поля с суффиксом "_вид" первым в выборке, типизация не работала. ######################################################################################### Версия 1.8.0.2 Изменения ODBCRecordset и иже с ним v. 2.9 - Новый функционал. Типизирующее имя $Субконто, для типизации полей - значений субконто, при этом в выборке должно находиться поле с именем, состоящим из имени типизируемого поля и суффикса "_вид", в зачении которого должен быть вид субконто. При этом в выборке в поле с видом субконто будут значения типа ВидСубконто. - Новый функционал. ODBCRecordset::УложитьСписокОбъектов() может создать временную таблицу счетов по иерархии плана счетов. Для этого нужно передать счет или СписокЗначений со счетами и идентификатор плана счетов. ######################################################################################### Версия 1.8.0.1 - Изменения ODBCRecordset и иже с ним v. 2.8 - Исправлена ошибка. При соединении через драйверы для интерфейса ODBC API версии меньше 03.00, при получении чисел происходило аварийное завершение. - Исправлена ошибка. ВТ РегистрОбороты, в некоторых случаях игнорировались связи и условия. - Исправлена ошибка. При использовании ВТ РегистрОстаткиОбороты, в случае когда результат не перебирается до конца, и подается метод Закрыть() происходило аварийное завершение. - Исправлена ошибка. Не создавался объект SQLLock. - Код формирования запросов ВТ переписан на 80% все обращения к полям внутри запросов ВТ идут через алиасы таблиц. Это позволяет использовать в связях таблицы с именами полей, совпадающими с именами полей таблиц источников данных для ВТ. - Метод УложитьСписокОбъектов() при указании в третьем параметре вида справовника, который неопределен в конфигурации, происходило аварийное завершение, сейчас формируется 1С исключение. - В очередной раз поправлена работа с числами: если драйвер для ODBC API версии меньше 03.00 получение числа идет через строку, иначе если точность меньше или равна 9 получение идет через SQL_NUMERIC_STRUCT, иначе через строку. Т.о. при получении чисел из типа SQL_NUMERIC тип double не используется никогда. Однако, при установке SQL параметров используется тип double. - При включеной отладке, и параметризированном запросе не выводятся сообщения в методе Open() ######################################################################################### Версия 1.8.0.0 - Исправлена ошибка допущеная при внесении изменений в релизе 1.7.2.3, а именно: "В группу базовых методов классов: ПолучитьБазовыйКласс()/GetBaseClass() и НазначитьБазовыйКласс()/AssignBaseClass() добавлена поддержка английских синонимов объектов 1С, таких как Документы, Справочники, Регситр, Регситры, соответственно: Document, Reference, Register, Registers. Учет видов некоторых из этих объектов не изменился." - Исправлена ошибка, в некоторых случаях не работала АвтоТипизация - Добавлена возможность чтения полей строк с неограниченной длиной. ВНИМАНИЕ: запись строк с неограниченной длиной запрещена. Изменения ODBCRecordset и иже с ним v. 2.6 - Исправлена ошибка. В методе ВыполнитьSQL_ИзТЗ() в ТЗ, в имени колонки числом можно указать модификатор, как и написано в документации. - Исправлена ошибка. При использовании набора строк (УстРазмерМножестваСтрок), в некоторых случаях неработала типизация. - Исправлена ошибка парсинга связей в виртуальных таблицах, случающаяся в некоторых случаях. - Переработано получение чисел из набора данных. До этого, для получения числа от драйвера ODBC использовался тип double, что в некоторых случаях приводило к потере точности (мантисса ограничена). Теперь, если десятичная_точность числа не превышает 9 знаков, формирование внутреннего числа 1С происходит без использования float арифметики. При этом, по некоторым оценкам, наблюдается повышение быстродействия на ~20%. Следует иметь в виду, что при получении чисел с точностью более 9 знаков все работает как раньше. - При типизации колонки выборки типом $Неопределенный, кроме агрегатных типов допустимо получать простые типы 1С (Число, Строка, Дата). Аналогично работает теперь метод MetaDataWork::ЗначениеИзДлиннойСтрокиБД(). - MetaDataWork::ЗначениеИзСтрокиБД(). Может вернуть запись журнала расчета. Для этого необходимо первым параметром передать строку "ЗаписьЖурналаРасчета", вторым идентификатор журнала расчета, третьим, идентификатор записи ЖР в формате char(9). Соединение с SQL сервером должно быть свободно от открытых локальных курсоров. - Новый метод MetaDataWork::ЗначениеВСамуюДлиннуюСтрокуБД() позволяет для переданного значения получить строку которая хранится в базе данных в реквизите типа Неопределенный. - Новый метод ODBCRecordset::УстТаймаутЗапроса(<ТаймаутВСекундах>), устанавливает таймаут на выполнение запроса. Если выполнение не завершается до истечения таймаута выполнение методов ODBCRecordset::Выполнить() или ODBCRecordset::Открыть() завершается с ошибкой. Для проверки что запрос вывалился по таймауту, существует метод ODBCRecordset::ИстекТаймаут(), вызывать его нужно только после ODBCRecordset::ПолучитьОписаниеОшибки(). Применяя это возможно решить проблему загрузки процессора при ожидании захвата таблиц, которая так актуальна в терминальных системах. - Новый объект SQLLock. Позволяет получать новые идентификаторы объектов, коды справочников, номера документов, которые можно использовать для образования новых записей в базе данных. - Добавлена возможность работы со значениями типа time (SQL_TYPE_TIME). Значение возвращается и устанавливается в виде строки с каноническим представлением времени (hh:mm:ss). - Добавлены типизируещие имена: ${Счет|Account} ${Счет|Account}.* ${ВидСубконто|SubcontoKind} ${ПланСчетов|ChartOfAccount} ######################################################################################### Версия 1.7.2.3 - В группу базовых методов классов: ПолучитьБазовыйКласс()/GetBaseClass() и НазначитьБазовыйКласс()/AssignBaseClass() добавлена поддержка английских синонимов объектов 1С, таких как Документы, Справочники, Регситр, Регситры, соответственно: Document, Reference, Register, Registers. Учет видов некоторых из этих объектов не изменился. - Исправлена ошибка в методе ODBCRecordset::ExeSQL_FromTV, не учитывался тип ссылочного параметра для обрабатываемой таблицы значений ?1, ?2, ?3. Исправлена документация в части описания данного метода. Вместо: "Заголовок должен содержать строку вида ?X в любом месте строки, где Х может принимать следующие значения: 0 - короткая строка (9 - символов), 1 - длинная строка (13 - символов), 2 - супер длинная строка (15 символов)" следует читать: "Заголовок должен содержать строку вида ?X в любом месте строки, где Х может принимать следующие значения: 1 - короткая строка (9 - символов), 2 - длинная строка (13 - символов), 3 - супер длинная строка (15 символов)" - Добавлена возможность препроцессора: в момент загрузки модулей из внешних отчетов как модуля класса, автоматически определяется символ препроцессора: _NOW_PREPARE_CLASS (аналогично строке кода //#define _NOW_PREPARE_CLASS) и отключался после того, как класс уже готов. (аналогично строке кода //#undef _NOW_PREPARE_CLASS) ######################################################################################### Версия 1.7.2.2 - При передаче переменного числа параметров методу класса, который описан как Число Получить(...); при вызове "Получить(0);" поведение внутри функции "получить" : Функция Получить() Экспорт список = Сам(Контекст).ПолучитьСписокПараметров("Получить"); // после чего сразу же // список.ПолучитьЗначение(1) возвращает "" и // ТипЗначенияСтр(список.ПолучитьЗначение(1)) возвращает "Строка" Исправлено на: // список.ПолучитьЗначение(1) возвращает 0 и // ТипЗначенияСтр(список.ПолучитьЗначение(1)) возвращает "Число" Также и со всеми остальными пустыми ссылочными (спавочники, документы, ...) типами данных, типом дата, которые превращались в "пустую строку" ************************************************************************************* - Изменения ODBCRecordset и иже с ним v. 2.5 - Виртуальные таблицы остатков, остатков и оборотов на распределенной базе данных могли выдавать неверные итоги. Исправлено: работают правильно. - Метод MetaDataWork::ПолучитьДобПериод(). Теперь работает для всех возможных значений периодичности сохранения итогов. - Типизация колонок выборки ODBCRecordset. Для типизирующего имени "$ВидРасчета" колонка может иметь три различных SQL типа: int - в журнале расчетов SQL формата ИБ; char(4) - в журнале расчетов DBF формата ИБ; char(13) - в остальных таблицах, где вид расчета содержится как реквизит. - Для параметра со значением типа ВидРасчета, определен модификатор с номером 2 (~~), который обозначает, что в текст запроса будет подставлен литерал, тип которого будет соответствовать типу хранения в журнале расчетов, для текущего формата ИБ (SQL:int, DBF:char(4)). - Внимание! Изменена трансляция метаимени "$ВидДокумента.ХХХХХ". При SQL формате ИБ - литерал типа int, при DBF формате - литерал типа char(4) со значением идентификатора вида документа в 36-м формате. - Внимание! Изменена трансляция метаимени "$ВидРасчета.ХХХХХ". При SQL формате ИБ - литерал типа int, при DBF формате - литерал типа char(4) со значением идентификатора вида документа в 36-м формате. - Определено метаимя "$ВидДокумента36.ХХХХХ", транслируется в литерал типа char(4), со значением идентификатора вида документа в 36-м формате. - Определено метаимя "$ВидСправочника36.ХХХХХ", транслируется в литерал типа char(4), со значением идентификатора вида справочника в 36-м формате. - Определено метаимя "$ВидПеречисления36.ХХХХХ", транслируется в литерал типа char(4), со значением идентификатора вида перечисления в 36-м формате. - При DBF формате ИБ, в тексте запроса возможно использование коментариев обоих типов (--) (/* */) (парсер их просто убирает, перед передачей текста запроса на драйвер). Протестировано на драйвере {Microsoft Visual FoxPro Driver}. - При DBF формате ИБ, возможна типизация колонок результата запроса прямо в тексте запроса, по общим правилам. Протестировано на драйвере {Microsoft Visual FoxPro Driver}. - Типизация колонок выборки ODBCRecordset. Для типизирующего имени "$Документ" (документ неопределенного вида) колонка может иметь два различных SQL типа: char(13) - собственно как и было (kind[4] + objid[9]); char(9) - в этом случае значения должны быть идентификаторами документов (objid[9]), в наборе данных должна находиться колонка с именем состоящим из имени колонки с идентификатором документа и суффикса "_вид" или "_kind" (Внимание, чувствительно к регистру!), значения которой должны быть идентификаторами вида документа. Для SQL формата тип колонки int, для DBF формата тип колонки char(4). Пример: select top 100 j.iddocdef as Doc_kind, j.iddoc as [Doc $Document] from _1sjourn as j Версия 1.7.2.1 - Исправлена ошибка, возникавшая в методе УстановитьПараметрПоИндексу базового функционала КОП. Метод не работал, если производились два и более вызовов данного метода с неявными параметрами и в каждом вызове передавались разные фактические параметры. - В метод ReplaceInstBaseClasses/ЗаменитьЭксзБазовогоКласса добавлена проверка параметров - Добавлена возможность комментировать текст обработки определения классов(defcls) в виде //# - что воспринимается ВК 1С++ как рабочая строка определения и в то же время данная обработка проходит стандартный синтаксис - контроль. Версия 1.7.2.0 - Сделано объеденение с компонентой FormEx 1.9: * полностью переписан функционал раскраски таблиц; * в функционал управляющей строки раскраски добавлен мактос INDENT[...], позволяющий задавать смещение начала раскраски от текущей колонки; * имена макросов управляющей строки раскраски теперь регистронезависимы; * полностью переписан функционал присоединения формы; * объект РасширениеФормы: добавлен метод ОтсоединитьФорму(...) для отсоединения присоединенной формы; * объект РасширениеФормы: добавлена возможность обращения к атрибутам формы как к атрибутам объекта; * объект РасширениеФормы: добавлен метод УстановитьАвтоширинуВТаблице(...) для установки/сброса флага автоширины колонок в таблицах; * объект СервисРасшФормы: добавлен метод ВысотаСтрокиТаблицы(...) для вычисления высоты строк в объекте Таблица; * объект СервисРасшФормы: добавлен метод ПрятатьТаблицу(...) для задания невидимости открытому окну объекта Таблица; * объект АтрибутФормы: атрибут Видимость теперь работает и для многострочной части формы; * в предопределенные процедуры добавлен флаг стандартной обработки, который позволяет отменить обработку события движком 1С; * исправлены некоторые мелкие глюки; - Исправлена ошибка: после повторного открытия любой формы объекта 1С не вызывались обработчики событий. - Внимание: для использования событий во внешнем отчете необходимо использовать методы ЗагрузитьМодуль (в предопределенной процедуре формы ПриОткрытии()) и ВыгрузитьМодуль (в предопределенной процедуре формы ПриЗакрытии()) объекта СервисРасшФормы. Версия 1.7.1.9 - Исправлена ошибка: неожиданное окончание работы 1С в некоторых случаях, вывода отчета, даже если не использовался функционал ВК. Версия 1.7.1.8 - УложитьСписокОбъектов() мог уложить в таблицу не все идентификаторы удовлетворяющие условию. Исправлено: укладывает все. - ПолучитьРезультатыВ_ТЗ(): если выборка пуста и параметр инициализации=1, то ТЗ не инициализируется. Исправлено: в этом случае таблица инициализируется, т.е. колонки создаются. - Не работает отладка в Выполнить(). Исправлено: работает. - СтрокОбработано() возвращает значение от предыдущего запроса, если последний не обработал ни одной строки. Исправлено: в этом случае возвращается 0. - Виртуальное значение $ПоследнееЗначение - ошибка в подзапросе при указании времени и/или идентификатора документа. Исправлено: запрос поправлен. - Подготовить(): если имеет место ''Meta name parser error'', то функция возвращает не 0, а значение неопределенного типа. Исправлено: возвращает 0. - По документации Выполнить() - функция. Исправлено: теперь - функция, при ошибке в запросе не формируется исключение, а возвращается 0/1, аналогично функции Открыть(). - ВТ оборотов: при периодичности Документ и установленых одном из флажков ''Быстрая обработка движений'' или ''Отбор движений'' в запросе неоправданно участвует _1sjourn. Исправлено: в этом случае _1sjourn не участвует в запросе. - УложитьСписокОбъектов: при передаче первым параметром группы справочника происходила ошибка. Исправлено: ошибка не происходит, в таблицу укладываются подчиненые элементы. - Снято ограничение на обработку препроцессором модулей внешних отчетов - Методы ЗагрузитьМодуль и ВыгрузитьМодуль объекта СервисРасшФормы объявлены устаревшими и в следующих версиях могут быть удалены. Версия 1.7.1.7 - Исправлена ошибка версий 1.7.1.5,1.7.1.6 не вызывалась предопределенная процедура ПриИзмененииРазмераОкна() Версия 1.7.1.6 - Исправлена ошибка: В системе описан класс ПроверкаСпискаПараметров: defcls CODE класс ПроверкаСпискаПараметров = ПроверкаСпискаПараметров.ert { СписокЗначений Проверка(...); } ПроверкаСпискаПараметров.ert CODE Функция Проверка() Экспорт Возврат(GetThis(Контекст).ПолучитьСписокПараметров(''Проверка'')); КонецФункции В глобальном модуле создается экземпляр этого класса: CODE Перем глПроверка экспорт; глПроверка = СоздатьОбъект(''ПроверкаСпискаПараметров''); В клиентском коде вызываем метод: CODE сообщить(глПроверка.Проверка(''параметр'')); На что система сообщает: СписокЗначений. Затем, из другого метода опять вызываем этот же метод, но с любой другой сигнатурой, например, вообще без параметров: CODE сообщить(глПроверка.Проверка()); В результате имеем ошибку: ''Недостаточное число параметров передано при вызове функции/процедуры объекта''. - Увеличена скорость загрузки модулей классов из *.ert файлов. Версия 1.7.1.5 - Обнаружена ошибка при попытке загрузить модуль класса из внешнего отчета возникала ошибка ''error catch &'' или ''V75.zlibEngine Error:null pointer''. Это связано с работой червя Blaster и его разновидностей, который разрушал работу механизма RPC Windows и многое другое, в том числе нарушал работу 1С++. Для исправления необходимо скачать патч для Win2000 Server, который расположен по адресу: http://www.microsoft.com/downloads/details.aspx?FamilyId=C8B8A846-F541-4C15-8C9F-220354449117&displaylang=en - исправлена ошибка с неоткрытием окна выбора при многоуровневом выборе из списка в виде дерева; - исправлена работа с картинками на закладках; - при выборе значения в виде меню над таблицей (или многострочной частью) оно теперь корректно подстраивается к текущей ячейки (при указании соответсвующего флага и активности таблицы); - добавлено получение/установка координат для многострочной части документа; - добавлена установка некоторых флагов на странице свойств компоненты; - объект СервисРасшФормы: добавлен метод ПоказыватьИндикаторКлавиатуры(...) для отображения раскладки клавиатуры и текущего времени в статусной панели; - объект СервисРасшФормы: добавлен метод УстановитьОбои(...) для установки картинки в качестве фона на главном окне; - объект РасширениеФормы: добавлен метод Обновить() для перерисовки формы без обновления текстовых реквизитов; - объект РасширениеФормы: добавлен метод РаскрашиватьТаблицу(...) для включения таблицы в частичную раскраску; - объект РасширениеФормы: добавлен метод ПрисоединитьФорму(...) для совмещения двух форм в одном окне; - объект РасширениеФормы: добавлен метод ПоложениеКолонкиТаблицы(..) для изменения положения колонки таблицы значений на форме (''новая колонка'',''на следующей строке'',''в той же колонке''); Версия 1.7.0.5 - Испр. ошибка, возникавшая в методе MetaDataWork::ProcessMetaSQL при возникновении ошибки обработки метапроцессора SQL. Версия 1.7.0.4 - Испр. ошибка возникавшая при отсутсвии файла описания классов. - Доб. возможность отладки классов, модули, которых храняться в обработках конфигурации. Принцип работы такой же как и у модулей классов хранящихся во внешних отчетах. - Обновлена ВК FormEx Версия 1.7.0.3 - Добавлены методы в класс MetaDataWork::ProcessMetaSQL, MetaDataWork::SetTextParam - Испр. ошибка в методе GetBaseClass/ReplaceInstBaseClasses Версия 1.7.0.2 - Добавлена возможность хранить модули КОП в дереве текущей конфигурации - обработках. Имя источника класса в его объявлении должно содержать идентификатор обработки как оно указано в конфигурации и заканчиваться ключевым окончанием @MD (Внимание, соблюдайте регистр букв). Окончание @MD можно также использовать в директиве include препроцессора. Если в каталоге БД не найден файл определения классов defcls.prm, то ВК пробует найти обработку в текущей конфигурации с таким же именем (defcls), откуда читает текст модуля и принимает его за определения классов. Пример: класс ТестРепорт = Тест1@MD {};, где обработка в которой храниться текст КОП называется Тест1. Версия 1.7.0.1 - Восстановлен код относящийся к функционалу _GetCode/_ПолучитьКод, отсутствующий в версии 1.7.0.0 Версия 1.7.0.0 - Исправлена ошибка в методе MetaDataWork::GetDateTimeIDDOC, неверно формировалась строка позиции - Встроена компонента TurboBL Александра Орефкова - Встроент SQL процессор метаимен. См. документацию глава 4. Работа с SQL и Приложение А. Спецификация метаимен и параметров в запросах - Изменены ссылки в разделе № 6 документации. - Обновлена ВК FormEx Версия 1.5.0.4 - Исправлена ошибка появлявшаяся при использовании метода GetInTablesValues для разных наборов данных. Тут же, испр. ошибка, при выгрузке в таблицу числовых значений тип для колонки таблицы не указывался, что приводило к тому, что провека на ноль нулевого значения не срабатавыла. - Исправлена ошибка в расчете периода метода MetaDataWork::GetAddPeriod. Версия 1.5.0.3 - Исправлена ошибка - закрытие последнего открытого курсора при создании нового курсора. - Доб. метод MetaDataWork::GetStringInVL - Доб. метод MetaDataWork::GetStrFromDate - Доб. свойство ODBCRecordSet::md - Работа препроцессора распостраненна на все модули 1С, кроме модуля глобального модуля и модулей внешних отчетов. Версия 1.5.0.2 - Исправлена ошибка замены базового класса имевшего тип ''Регистры'' - Исправлена ошибка возникающая при использовании препроцессорной директивы #elif - Изменен механизм передачи параметрических параметров, через таблицу значений метода ODBCRecordSet::ExeSQL_FromTV. Теперь тип преобразования получается из колонки ''Заголовок''. - Доб. новый параметр метода ODBCRecordSet::SetPropertyCursor - SQL_ATTR_CONCURRENCY - Доб. метод MetaInfoClasses::ThisIsSQL_Ver - Доб. метод MetaDataWork::GetEndOfPeriod - Доб. метод MetaDataWork::GetEndOfPeriodForReg - Доб. метод MetaDataWork::GetBegOfPeriod - Доб. метод MetaDataWork::GetBegOfPeriodForReg - Доб. метод MetaDataWork::GetDateTimeIDDOC Версия 1.5.0.1 - Добавлен метод ODBCRecordSet::ExeSQL_FromTV - Убрана небольшая утечка памяти из класса ODBCRecordSet - Добавлены метод ServiceFormEx::UnColourBrowse, ServiceFormEx::ActiveContext, ServiceFormEx::LoadModule, ServiceFormEx::UnLoadModule, ServiceFormEx::CallAsProcedure, ServiceFormEx::CallAsFunction, ServiceFormEx::GetContextVar, ServiceFormEx::SetContextVar, ServiceFormEx::ExecuteInContext - В поставку включен проект ''Открытый конфигуратор'' c продуктом ''Visual 1C++ 1.0 by Alex Orefkov'', добавлен раздел 1.8. ''Проводник для 1С++ (Visual 1C++ 1.0 by Alex Orefkov)'' документации. Версия 1.5.0.0 - Теперь пути файлов реализации рассчитываются относительно расположения файла объявления, где они были определены. - Добвавлены классы MetaDataWork, ODBCDatabase, ODBCRecordSet для работы с SQL - запросами. - В поставку включен редактор для 1С++. Спасибо автору сего чуда: Александру Орефкову! Версия 1.2.0.3 - Благодаря стараниям Александра Орефкова наконец-то доработана модель формирования/обработки исключений. Теперь возникающая динамическая ошибка в модуле исполняемого текущего кода класса распостраняется за его пределы. - Добавлен метод в функционал класса _ВыброситьИскл()/_Throw() - Добавлен методы Throw()/ВыброситьИскл() и GetExeption()/ПолучитьИсключение() в класс ExecuteModule/ВыполняемыйМодуль - Вернулась назад возможность раскраски таблиц, на этот раз исправленная. - Не забываем отправить письмо с блиц опросом! Блиц опрос. Если тебе интересна данная разработка, то поддержи ее развитие, ответив коротко на следующие вопросы: 1. Твое имя (Ф.И.О. или Ф.И., или ник, или все вместе): 2. Я скачиваю ВК 1С++: а) Чтобы была, вдруг пригодится; б) для изучения; в) из-за любопытства; г) использую в реальных проектах (Выбери вариант или напиши, пожалуйста, свой)? 3. Среднее количество классов, которые ты создал: 4. Используешь ли ты сторонние классы, других авторов (Д/Н): 5. Как ты думаешь, стоит ли развивать 1С++ дальше (Д/Н): 6. В связи со скорым выходом V8 хотел бы ты видеть 1С++ для новой платформы (Д/Н): 7. Что по твоему не хватает в 1С++? и отправь ответы на debbuger@yandex.ru Спасибо за твое участие! Версия 1.2.0.2 - В связи с нестабильностью работы, метод по раскраске таблиц в различные цвета был отключен. Версия 1.2.0.1 - Исправлена работа отладчика при чтении свойств объекта пользовательского класса во время работы функции вычисления выражения отладчика. - Добавлена возможность просматривать значения динамических свойств в отладчике, для этого необходимо определить функции _GetNDynamicProps / _ПолучитьКолвоДСвойств, _GetPropDynamicName / _ПолучитьИмяДСвойства семантику которых см. в разделе 1.4.7. ''Динамические атрибуты класса'' - Добавлен метод ClearReposClasses / ОчиститьКлассыРепозитария в класс ''MetaInfoClasses'' Версия 1.2.0.0 - Добавлен 3.8. Класс ''DynaCrypt'' В звязи с объеденением ВК ''FromEx'' - Alex L. Fedorov aka АльФ добавлены следующие классы: - Добавлен 3.9. Класс ''ServiceFormEx'' / ''СервисРасшФормы'' - Добавлен 3.10. Класс ''FormEx'' / ''РасширениеФормы'' - Добавлен 3.11. Класс ''AttribEx'' / ''АтрибутФормы'' - Добавлен раздел документации ''Разработчики'' Версия 1.1.1.5 - Увеличена скорость вызова методов объектов 1С, таких как ''СписокЗначений'', ''ТаблицаЗначений'' и т.п. находящихся в иерархии 1С++. Если пользовательский класс наследует от 1С объекта и не переопределяет его стандартные методы, а вызов их происходит, через экземпляр производного класса, разница в скорости вызова колбется от +0.5% до +50% по сравнению с обычным вызовом, непосредственно через ссылку на 1С базовый объект. В тоже время чтение/запись, свойств объекта через ссылку на пользовательский производный класс поизводиться несколько медленнее от 0.5% до 1.2%. Результаты тестов, произведенных с помощью 1С отладчика и следующих настройках 1С++: оптимизация: вкл, проверка типов: выкл, отладка:выкл. Результаты тестов: Чтение/Запись свойств: о = СоздатьОбъект(''РасширеннаяТЗ''); 5 0.000884 0.02 о.AssignBaseClass(''ТаблицаЗначений''); 5 0.000579 0.01 тз = СоздатьОбъект(''ТаблицаЗначений''); 5 0.000341 0.01 тз.НоваяКолонка(''Кол1''); 5 0.000144 0.00 тз.НоваяКолонка(''Кол2''); 5 0.000065 0.00 тз.НоваяКолонка(''Кол3''); 5 0.000065 0.00 тз.НоваяКолонка(''Кол4''); 5 0.000061 0.00 о.NewColumn(''Кол1''); 5 0.000105 0.00 о.NewColumn(''Кол2''); 5 0.000075 0.00 о.NewColumn(''Кол3''); 5 0.000079 0.00 о.NewColumn(''Кол4''); 5 0.000075 0.00 чСчЦ = 0; 5 0.000015 0.00 Для чСчЦ = 1 По 10000 Цикл 50005 0.103379 2.57 тз.НоваяСтрока(); 50000 0.769162 19.11 тз.Кол1 = 1; 50000 0.246189 6.12 тз.Кол2 = 1; 50000 0.258994 6.43 тз.Кол3 = 1; 50000 0.270412 6.72 тз.Кол4 = 1; 50000 0.303333 7.54 о.НоваяСтрока(); 50000 0.651665 16.19 о.Кол1 = 1; 50000 0.276508 6.87 о.Кол2 = 1; 50000 0.270418 6.72 о.Кол3 = 1; 50000 0.311162 7.73 о.Кол4 = 1; 50000 0.348937 8.67 КонецЦикла; 50000 0.153986 3.83 Вызов метода НоваяСтрока(), разница составляет 19.11-16.19 = 2.92% Принцип таков, чем больше порядковый номер у метода объекта, тем дольше время его поиска, оно линейно. Т.е. методы, идущие первыми в объекте будут вызываться быстрей, чем идущте после них. Например: зн = сз.ПолучитьЗначение(чСчЦ, стрКлюч);50000 0.423769 6.31 зн = о.ПолучитьЗначение(чСчЦ, стрКлюч); 50000 0.258163 3.84 сз.ДобавитьЗначение(чСчЦ); 50000 0.304631 4.53 о.ДобавитьЗначение(чСчЦ); 50000 0.266236 3.96 сз.СдвинутьЗначение(1,5); 50000 2.431917 36.19 о.СдвинутьЗначение(1,5); 50000 1.461483 21.75 где о - объект производного пользовательского класса, унаследовавший методы списка значение сз - читый список значений. Метод ДобавитьЗначение имеет порядковый номер равный 0 Метод ПолучитьЗначение имеет порядковый номер равный 3 Метод СдвинутьЗначение имеет порядковый номер равный 19 Пример теста получение движений по регистру: Пока р1.ПолучитьДвижение() = 1 Цикл 100001 3.139399 62.45 Пока р2.ПолучитьДвижение() = 1 Цикл 100001 1.159547 23.07 р1.УстановитьАтрибут(''новый1'', 1); 50000 2.129157 71.80 р2.УстановитьАтрибут(''новый1'', 1); 50000 0.577699 19.48 где р1 - это читый объект Регистр.Такойто р2 - объект производного пользовательского класса, унаследовавший методы регистра Порядковый номер метода ПолучитьДвижение() - 19 Порядковый номер метода УстановитьАтрибут() - 34 Версия 1.1.1.4 - Исправлена ошибка - метод ПолучитьБазовыйКласс/GetBaseClass не находил базовый класс ''Документ'' по имени - Добавлена возможность в метод НазначитьБазовыйКласс/AssignBaseClass передавать не только строку, но и готовый агрегатный объект Версия 1.1.1.3 - В данной версии исправлена ошибка появившася в версии 1.1.1.1, а именно: при включенном режиме опимизации, и выключенным режиме отладки, происходила утечка памяти, при создании и удаленни экземпляров класса. - Добавлен раздел в документацию: ''Информационная поддержка проекта''. Версия 1.1.1.2 - Добавлен новый метод в класс MetaInfoClasses: SetCurSettings/УстановитьТекУстановки Версия 1.1.1.1 - Исправлена ошибка, появлявшаяся при следующих условиях: 1С++ загружается c включенным режимом оптимизации, потом создается один или несколько экземпляров любых классов, далее мы изменяем, режим оптимизации в положение - выключен, при удалении ранее созданных классов 1С вылетала с ошибкой доступа к памяти. - Исправлена ошибка, когда в параметры по умолчанию использовался символ '';'', например Строка Разделить(Строка Стр, Строка Разделитель = '';'');, при загрузке 1С++ выдавала ошибку об не найденной '')''. - Исправлена ошибка, когда include расположена в конце файла 1С++ сообщала, что расширение указано неправильно например: ''имяФайла.р''. - Исправлена ошибка - экземпляр класса не удаляется из памяти при отсутствии на него активных ссылок, когда ему заменили базовый класс, с помощью метода ЗаменитьЭксзБазовогоКласса функционала КОП. - Устранено ограничение - нельзя отлаживать деструктор класса, он просто не вызывается. Экземпляр отлаживаемого класса не удаляется из памяти. - ВНИМАНИЕ! Изменения в механизме отладки модулей, в данной версии запрещено вызывать Форма.Закрыть(), 1С++ автоматически сделает это при уничтожении отлаживаемого объекта, после вызова его деструктора. Процедура ПриОткрытии() Форма.Параметр._ПриОткрытии(); //Форма.Закрыть(); - ОБЯЗАТЕЛЬНО УДАЛИТЬ ИЛИ ЗАКОМЕНТИРОВАТЬ ДАННУЮ СТРОКУ КОДА КонецПроцедуры Версия 1.1.1.0 - Добавлен класс ''MetaInfoClasses''. Позволяющий получать метаданные ВК 1С++ и формировать als-файл помощника. Подробное описание глава 3.7. документации Версия 1.1.0.2 - Изменено имя метода базового функционала классов с ПриОткрытии/OnOpen на _ПриОткрытии/_OnOpen Версия 1.1.0.1 - Исправлена ошибка вызова первого метода с неявными параметрами. Версия 1.1.0.0 - В делегат, добавлена возможность вызывать методы по строковым ключам. Подробности см. в документации глава 3.3 ''Класс ''Delegate'' рус. ''Делегат'' - Исправлена ошибка вызова методов и свойств через контекст в текущем деструкторе. - Исправлена ошибка при чтении и записи динамических свойств одного экземпляра класса в кострукции вида мойКласс.Свойство1 = мойКласс.Свойство2. - Исправлена ошибка при передаче в метод неявного параметра в виде ''пустого значения'', данный параметр не записывался в список значений неявных параметров. Теперь этот параметр также пуст, но имеет тип значения равный двум, т.е. пустая строка. - Добавлен метод Get/Получить в класс Структура. - Добавлен метод ExistProp/ЕстьСвойство в класс Структура. - Добавлен класс DynaValue, глава 3.6. документации. - Добавлена возможность сериализации/десериализации (сохранения/восстановления состояния) классов. Подробности см. в документации глава 1.4.9. - Добавлена новая директива препроцессора ''#curmeth'' Подробности см. в документации глава 1.5 - Добавлена поддержка отладчика для модулей классов, подробней см. в документации ''1.6. Отладка классов 1C++'' Версия 1.0.0.5 - Изменилось имя файла определений класса с defineclass.prm на defcls.prm - Добавлен метод функционала класса ''ЗаменитьЭксзБазовогоКласса/ReplaceInstBaseClasses'' - Добавлен метод функционала класса ''УстановитьПараметрПоИндексу/SetOnIndexParams'' - Изменена семантика значений параметров методов задаваемых по умолчанию. Подробности см. в документации глава 1.3, абзац ''Значение по умолчанию'' - Добавлены ''Динамические атрибуты класса'', подробности см. в документации 1.4.7 ''Динамические атрибуты класса'' Версия 1.0.0.4 - Исправлена ошибка определения типов параметров при указаном неопределнном типе возвращаемого значения (неопределнный/undefine) метода. - Добавлена препроцессорная директива //#include, описание см. в док. - Добавлен дополнительный класс Структура/Struct, более потробное описание см. в док. - В метод функционала класса КОП ПолучитьСписокПараметров/GetParamsList, теперь необходимо передавать строковое значение - название метода в котором требуется получить список неявных параметров. - Удалены из функционала класса КОП методы НачПроведенияВложДок/BegPostNestedDoc и КонПроведенияВложДок/EndPostNestedDoc - Оптимизирована скорость вызова методов с неявными параметрами (в сигнатуре которых определен параметр ...), скорость работы приравнивается к обычным вызовам методов. - Оптимизирована работа препроцессора и чтение модулей из отчетов 1С. Версия 1.0.0.3a - Исправлены ошибки работы с неявными параметрами, например, такие как использование результатов возврата функций в качестве неявного параметра в вызове метода класса (коп.Метод1(ТекущаяДата(), ТекущийДокумент())), перенос тела вызова метода на несколько строк в модуле и прочее. - Добавлена в препроцессор новая директива //#exinfo, подробности см. в документации Версия 1.0.0.3 - Исправлена ошибка потери возвращаемого значения полученного из функции текущего класса КОП вызванного через контекст; - Исправлена ошибка получения базового класса по умолчанию в иерархиях классов глубиной более 2 уровней; - Исправлена ошибка получения базового отдаленного от текущего более чем на 1 уровень в иерархии классов; - Исправлена ошибка возникавшая при определенных обстоятельствах в передаче параметров по значению; - Исправлена ошибка возникающая при попытки обращения в конструкторе базового класса к контексту и его методам, как основного функционала классов КОП, так и методов определенных пользователем в классах иерархии, в момент создания производного класса. - За более подробной информацией об исправленных ошибках обращайтесь по почте компоненты с конкретными вопросами: debbuger@yandex.ru. Версия 1.0.0.2 - Исправлена ошибка, которая появлялась при считывании модулей КОП из файлов-отчетов (*.ert) в ОС Windows 98/95; - Добавлена возможность вызывать методы текущего производного класса из методов его базового класса. Для этого в модуле базового класса необходимо получить контекст и через него возможно вызывать методы производных классов. Также получив контекст в базовом классе возможно узнать тип созданного производного класса. Более подробное описание см. в 1.4.8 документации; - Исправлена ошибка передачи параметров по значению в методы КОП. Версия 1.0.0.1 - В методах КОП добавленна возможность передавть любое количество параметров. Потробности см. в документации пункт 1.3. раздел «Неопределенное количество параметров». Изменения в 1С++ по сравнению с версией OXY 1.0.0.8 - Добавлен класс ''Делегат''. Данный класс представляет собой хранилище ссылок на методы экземпляров агрегатных объектов 1С. (раздел 3.3 описания ВК); - Добавлены дополнительные методы в класс ''МенеджерСобытий'' (раздел 3.4 описания ВК); - Добавлен препроцессор (раздел 1.5 описания ВК).