powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / [игнор отключен] [закрыт для гостей] / выгрузка ПКО
5 сообщений из 5, страница 1 из 1
выгрузка ПКО
    #36846345
AndrewVL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте.

пишу на delphi через ole выгрузку ПКО.

все вроде ок. но в табличной части есть 3 аттрибута. субконто1-3. по конфигурации у них тип неопределенный.

пробую получить их значения так

Код: plaintext
1.
          oleBuf:=ole1C.метаданные.документ(''+idDoc).Реквизиттабличнойчасти('Субконто1');
          self.caption:=trim(olebuf.Наименование);

результат нулевой.

Что не правильно делаю? :-)
...
Рейтинг: 0 / 0
выгрузка ПКО
    #36846540
AndrewVL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndrewVL,

Могу добавить, что данный реквизит числиться как неопределенный тип
...
Рейтинг: 0 / 0
выгрузка ПКО
    #36846650
AndrewVL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
первое субконто ссылается на справочник контрагентов, второе на договора, третье - перечисление.


подскажите как их прочитать через ole из delphi:-)
...
Рейтинг: 0 / 0
выгрузка ПКО
    #36846706
pail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для начала не мешает отладить код получения нужных реквизитов непосредственно в 1С,
а уж затем использовать его через ole.
Здесь, например,
Код: plaintext
1.
2.
          oleBuf:=ole1C.метаданные.документ(''+idDoc).Реквизиттабличнойчасти('Субконто1');

работа ведется с метаданными, а не с данными.
Можно много чего узнать про свойства реквизита "Субконто1",
например, убедиться, что olebuf.Идентификатор и есть его наименование - "Субконто1", или
что у него тип неопределенный.
Но для того, чтобы добраться до данных, да еще в табличной части,нужен совершенно другой объект - документ нужного типа, где-то там заранее созданный и спозиционированный:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
          oleDoc:=ole1C.EvalExpr("СоздатьОбъект(""Документ.ПКО"")");
          // как-то там найти нужный документ - по номеру-периоду, или вообще выборку открыть
          // в цикле,
          // а после того, как нужный документ выбран:
          oleDoc.ВыбратьСтроки();
          while oleDoc.ПолучитьСтроку()= 1  do begin
             sk1 := oleDoc.Субконто1; // после чего можно добраться до разных реквизитов значения 
             // субконто sk1 в этой строке документа
             if sk1.Выбран()= 1  then // не мешает сначала убедиться, что реквизит заполнен
                  sk1Name := sk1.Наименование; 
             sk2 := oleDoc.Субконто2;
             // и так далее
           end;

Примерно так....
...
Рейтинг: 0 / 0
выгрузка ПКО
    #36847399
The Dim!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndrewVL
Код: plaintext
1.
          oleBuf:=ole1C.метаданные.документ(''+idDoc).Реквизиттабличнойчасти('Субконто1');
          self.caption:=trim(olebuf.Наименование);


Это неправильно. Нужно обращаться к реквизиту субконто. Этот момент описан в документации. В книгах по языку. В справке сомой 1С об этом не говорится.
Вот так как-то:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Ole1C := CreateOleObject('V77M.Application');

        If Ole1C.Initialize(Ole1C.RMTrade, '', '') =  0  then
                Exit;

        Doc := Ole1C.CreateObject('Документ.ПриходныйОрдер');
        Doc.SelectDocuments(StrToDate('01.01.08'), Now);
        While Doc.GetDocument =  1  do begin
                ShowMessage('Ok');

                ShowMessage(Doc.Субконто1.Наименование);
               // 
        End;
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / [игнор отключен] [закрыт для гостей] / выгрузка ПКО
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]