Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
19 мар 2024, 06:51

Обойти стандартные реквизиты регистра бухгалтерии и получить значения через OLE

Автор NikOzn, 23 мар 2012, 21:49

0 Пользователей и 1 гость просматривают эту тему.

NikOzn

Работаю с 1С8.2 из Delphi через OLE.
Просматриваю содержание регистра Бухгалтерии, который зовется Хозрасчетный (он единственный в коллекции РегистрыБухгалтерии).
Получаю перечень свойств регистра, среди которых есть "СтандартныеРеквизиты".
Когда просматриваю его через конфигуратор, то вижу, что в нем 10 элементов: Период, Регистратор, НомерСтроки, Активность, Счет, ВидСубконто1, ВидСубконто2, ВидСубконто3, Субконто1, Субконто2, Субконто3.

Ссылку на объект "СтандартныеРеквизиты" я получаю через последовательность следующих строк кода:
FOle_1C8 путем создания объект V82.COMConnector;
FMeta8_Ole := FOle_1C8.Метаданные.РегистрыБухгалтерии;
F1C8_Obj := FMeta8_Ole.Найти('Хозрасчетный');
StandardAttributes  := F1C8_Obj.СтандартныеРеквизиты;


После этого я получаю количество реквизитов (ровно те самые 10 штук):
kAttribCount := StandardAttributes.Количество()*1;

и затем пытаюсь обойти их, имея намерение узнать из значения в цикле
  for k := kAttribCount-1 downto 0 do
    begin
      // Получаем ссылку на реквизит справочника (по его индексу)
      vAttrib := StandardAttributes.Получить(k);
      ...
    end;

Но конструкция StandardAttributes.Получить(k) не работает! Не помогает также
попытка образовать цикл вида

  while StandardAttributes.Следующий() do
    begin
      ...
    end;

Как мне реализовать обход стандартных реквизитов регистра бухгалтерии?
Если это возможно (иначе на фиг они нужны-то!), то как потом получить из значение?


NikOzn

К админам форума.
В это окошко можно воткнуть только несколько строк, после чего оно скачет и с ним управиться невозможно. Это только у меня или это такой "интеллект форума"? И еще. Почему сообщения странно форматируются (по центру). Это так надо или опять я только у меня все криво смотрится?

sergejK74

vAttrib := StandardAttributes[k];   
Ты бы описал подробнее что ты хочешь получить от регистра Бухгалтерии, который зовется Хозрасчетный? Описания его стандартных реквизитов?
Кнопочка Спасибо - слева!

NikOzn

Цитата: sergejK74 от 23 мар 2012, 22:28
vAttrib := StandardAttributes[k];   
Ты бы описал подробнее что ты хочешь получить от регистра Бухгалтерии, который зовется Хозрасчетный? Описания его стандартных реквизитов?
Вроде бы я написал: 1) пройтись по всем реквизитам (стандартным, которые я подглядел в конфигураторе), т.е. получить все 10 ссылок на них, и 2) получить их значения; полагаю, что из этих ссылок их можно получить, но может, я ошибаюсь. А в целом мне надо вытащить всю информацию из регистра Хозрасчетный (все метаданные и все данные). Я уже получил из него многое, но вот эти стандартные реквизиты что-то не даются.

NikOzn

Кстати! Только сейчас заметил, что в конфигураторе в свойствах регистра бухгалтерии показано 11 реквизитов (я их перечислил в первом посте), в вот эта строчка
kAttribCount := StandardAttributes.Количество()*1;
через OLE дает их только 10 штук. Пропущен реквизит "Счет"!
Странное поведение сервера OLE 1С8.2, может это глюк, который пока непонятно, как обойти.
Кто-нибудь имеет что сказать на эту деталь?

NikOzn

Вообщем сам  себе частично отвечаю, удивляясь, почему гуру 1С не смогли на такой элементарный вопрос дать ответ. Перечисление коллекции стандартных реквизитов нужно было выполнять в таком цикле
for k := kAttribCount - 1 to 0 do
  begin
     vAttrib := StandardAttributes[k];
  end;

Всего-то делов! Хотя мне для этого приходится в конфигураторе дописать функцию для выбора по индексу (OLE ведь!).
Но вот вопрос с количеством отображения в этом списке всего 10 из 11 описаний стандартных реквизитов остался открытым.

sergejK74

Цитата: NikOzn от 24 мар 2012, 12:47
Вообщем сам  себе частично отвечаю, удивляясь, почему гуру 1С не смогли на такой элементарный вопрос дать ответ.
Читать мы не приучены?
Цитата: sergejK74 от 23 мар 2012, 22:28
vAttrib := StandardAttributes[k];   
Кнопочка Спасибо - слева!

sergejK74

По поводу реквизита счет. Поиграйся у регистра бухгалтерии с признаком поддержки бухгалтерии, вспомни о принципах двойной записи, а потом нас просвятишь. И зачем ты с этой 1С мучаешься?
Кнопочка Спасибо - слева!

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск