Для работы необходимо в каталог исполняемых файлов или каталог ИБ скопировать
файл внешней компоненты 1с++. Необходима версия icpp/3.0 или старше.
(скачать можно с сайта компоненты).
также необходимо установить
провайдер фирмы Microsoft: VFP OLE DB povider v9.
Установка: файл DefCls.prm скопировать в КаталогИБ,
файл Ссылки.cls - в КаталогИБ\Classes (создать, если нет).
Описание класса:
Атрибуты:
ПриставкаСостояние
СоздатьВременнуюТаблицу
ИспользоватьТранзакции
КоличествоЗаписейОбъектовВТранзакции
ОтключитьЗаписьВЖурналРегистрации
все - чтение/запись
описание предназначения - в методах.
Методы:
---------------------
Функция УложитьСписокОбъектов(Запрос1спп,Фильтр,ИмяКурсора,
ВключатьГруппы=0,ЭтоРодитель=0,ВключатьВложенные=1)
сохраняет список объектов во временной таблице как в методе УложитьСписокОбъектов объекта ODBCRecordSet или OLEDBCommand с
следующими дополнениями и ограничениями:
- идентификаторы объектов из списка значений Фильтр сохраняются во временной таблице ИмяКурсора.
Таблица имеет три поля: def1 Char(2)l,def Char(4)l,val char(9),
где
def1 документов равен "O1", для справочников "B1" (первые два знака в поле таблицы для реквизитов типа "Неопределенный");
def - идентификатор вида документа или справочника;
val - идентификатор объекта
- при помощи атрибута СоздатьВременнуюТаблицу определяется вид временной таблицы
0 - курсор в памяти , 1- временная таблица. По умолчанию - 0
- если в переданном списке значений Фильтр присутствуют группы справочника, то во временную таблицу
попадут все входящие в эту группу элементы
Ограничения:
Обрабатыватся объекты только типов Документ и Справочник. Остальные значения в списке значений Фильтр игнорируются.
Возвращает: список значений СписокВидов, в котором перечислены все присутствующие в Фильтр виды объектов:
"Документ", "Документ.<Вид>","Справочник", "Справочник.<Вид>"
Параметры:
Запрос1спп - объект OLEDBCommand
Фильтр - список значений объектов типа "Справочник", "Документ" или объект типа "Справочник", "Документ"
ИмяКурсора - имя временной таблицы;
ВключатьГруппы - включать группы справочника. По умолчанию - 0
ЭтоРодитель - необязательный, по умолчанию - 0.
Используется в том случае, если передано пустое значение типа определенного справочника.
При этовозникает два варианта: если ЭтоРодитель=0, то в курсор попадает ПустойИд
иначе - в курсор попадают все корневые элементы справочника (у которых родитель пустой);
ВключатьВложенные - необязательный, по умолчанию - 1.
Если установить значение параметра в 0, то будут обработаны только элементы, непосредственно
входящие в переданные группы справочника, без обработки вложенных групп.
---------------------
Функция НайтиСсылки(Фильтр,табСсылок)
Поиск ссылок по переданному фильтру
По сравнению с штатным поиском ссылок, помимо ускорения (примерно
в 3-10 раз), получаем в таблице ссылок прямое указание не только на
ссылающийся объект, а также на атрибут этого объекта.
Поиск ссылок производится в следующих таблицах:
1sjourn, 1sconst, 1sentry, sc*, dh*, dt*, cj*, ra*.
Возвращает: 0 - в случае неудачной инициализации объекта OLEDBCommand , 1 - все успешно
Атрибут ПриставкаСостояние - строковая приставка выводимого в строке состояния сообщения.
Параметры:
Фильтр - список значений объектов типа "Справочник", "Документ" или объект типа "Справочник", "Документ"
табСсылок - формируемый методом объект типа "ИндексированнаяТаблица" со следующими полями:
Объект - объект, на который ссылаются
Ссылка - объект, который ссылается
LineNo - номер строки документа или номер проводки в операции
Атрибут - атрибут ссылки
ТипСсылки - тип объекта. Принимает следующие значения:
Константа, Периодический, Операция, Документ.<Вид>, Справочник.<Вид>,
Регистр.<Вид>, ЖурналРасчетов.<Вид>
---------------------
Функция ЗаменитьСсылки(таб_замены)
Заменяет ссылки в объектах типа "Справочник", "Документ", "Операция".
Для замены ссылок в Регистрах и Журналах расчетов после применения процедуры необходимо перепроведение документов.
Примечание: не заменяет значения констант и периодических реквизитов, а также владельцев для подчиненных справочников.
Возвращает: 0 - в случае неудачной инициализации объекта OLEDBCommand , 1 - все успешно
Параметры:
таб_замены - объект типа "ТаблицаЗначений" с колонками
ОсновнойОбъект - объект, который будет записан вместо дубля
Дубль - объект, который будет заменен в ссылках
Управляющие атрибуты:
ИспользоватьТранзакции - по умолчанию 0. При установке атрибута запись объектов производится в транзакции,
что может осложнять работу другим пользователям
КоличествоЗаписейОбъектовВТранзакции - по умолчанию 50. Количество объектов, которые будут записаны в одной
транзакции
ОтключитьЗаписьВЖурналРегистрации - по умолчанию 0 (запись в журнал регистрации производится).
----------------
Публикую первый свой класс, поэтому буду признателен за указание ошибок в оформлении и проч, и конечно же, ошибок в работе.