Вопрос № 128573: Уважаемые эксперты, помогите разобраться в вопросе.
я подобный вопрос уже задавал но тогда мне никто не ответил, попробуем еще раз, но с другой формулировкой.
было дело писал на Delphi программу которая для 1cv7 по заданному справоч...
Вопрос № 128.573
Уважаемые эксперты, помогите разобраться в вопросе.
я подобный вопрос уже задавал но тогда мне никто не ответил, попробуем еще раз, но с другой формулировкой.
было дело писал на Delphi программу которая для 1cv7 по заданному справочнику выбирала из него с помощью OLE все его атрибуты, разбивала по типам атрибутов, и выбирала потом по всем атрибутам данные этого справочника.
выглядело это так.
ware := conn.Server1c.createobject('Справочник.test');
ware.GetAttrib('Код');
так добирался до значения конкретного атрибута в выборке, которую делал вот таким запросом
ware.SelectItems(0);
где ware ссылка на справочник...
все вроди бы просто, однако дошло дело до 1cv8
там все здорово переделали появились какие то менеджеры справочников, метаданные полностью отделены от данных.
и в итоге у меня не получается вообще долезть до данных по именам.
привожу пример
если в 1cv7 я ссылку на справочник делал так
ware := conn.Server1c.createobject('Справочник.test');
то в 1cv8 нужно делать так
v8.ole1Cv8.Catalogs.test
т.е. имя справочника задается как свойство, и нет возможности добратся по имени.
думал можно просто перебором всех справочников найти ссылку на нужный мне справочник, написал функцию
function TForm1.GetRefCatalog(Meta: variant;CatalogName:string): variant;
var i:integer;
begin
for I := 0 to Meta.Count- 1 do
begin
result:=Meta.Get(i);
if UpperCase(Result.Name)=uppercase(CatalogName) then
exit;
end;
end;
однако не тут то было ссылку то я получаю но это не ссылка на объект с данными а ссылка на объект Метаданные справочники, в итоге я не могу обращаться к методам выборки, такие как Select , Next и т.д.
то же самое с атрибутами...
вопрос вот в чем, т.к. саму 1с я знаю достаточно плохо то может все таки есть в 1cv8 методы для обращения
1) к справочникам, по имени, или индексу
2) к атрибутам по имени или индексу...
3) нужен аналог метода GetAttrib('поле') в 1cv8
ну или если кто то делал что то подобное, прошу натолкнуть на хоть какие мысли..
Отправлен: 22.03.2008, 16:49
Вопрос задал: Кэр Лаэда (статус: Практикант)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Полозов Олег aka Asher
Здравствуйте, Кэр Лаэда!
Да конструкции языка действительно изменены, сейчас не надооткрывать новые объекты, а надо идти до справочника через менеджеры:
conn.Server1c.Справочники - менеджер справочников
conn.Server1c.Справочники.Тест - менеджер справочника тест. от сюда можно выбирать элементы, пользоваться методвми поиска по коду наименованию и т.п.
после позиционирования на какой то определенный элемент, либо по циклу либо через поиск можно добраться до объекта элемента методом ПолучитьОбъект(). Например:
elem_object = conn.Server1c.Справочники.Тест.НайтиПоПоКоду("000001");
и теперь можно изменять данные в объекте:
elem_object.Код = "000002";
Ответ отправил: Полозов Олег aka Asher (статус: Студент)
Ответ отправлен: 24.03.2008, 10:13 Оценка за ответ: 4 Комментарий оценки: спасибо конечно на ответ но вы не ответили ни на один вопрос который я задал
вопрос вот в чем, т.к. саму 1с я знаю достаточно плохо то может все таки есть в 1cv8 методы для обращения 1) к справочникам, по имени, или индексу 2) к атрибутам по имени или индексу... 3) нужен аналог метода GetAttrib(поле) в 1cv8