Форум программистов, компьютерный форум, киберфорум
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/26: Рейтинг темы: голосов - 26, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 22.07.2010
Сообщений: 6
1C 8.x

Как работать из Delphi с регистром 1С через OLE

22.07.2010, 23:45. Показов 5114. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите разобраться с таким делом:
Нужно считать из 1С 8 данные по отчету(номенклатура товара и остаток),т.е. нужно прочитать регистр накоплений. Вот как я это пробую делать:
Delphi
1
2
3
4
5
6
7
8
9
10
if not VarIsEmpty(s1C8_ole) then
begin OleReg:=s1C8_ole.РегистрыНакопления .ОстаткиТоваровОрганизаций;
Sel_ole := OleReg.Выбрать();
while Sel_ole.Следующий() do
begin
//Здесь и возникает проблема, ошибка"Method Номенклатура not supported by Sel_ole", но правда
Sel_ole.Количество получается считать,
ListBox1.Items.Add(' '+Trim(Sel_ole.Номенклатура));
end;
end;
Наверно нельзя так обращаться к измерению регистра, или еще что...
Помогите, кто знает!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.07.2010, 23:45
Ответы с готовыми решениями:

Как работать с PowerPoint через delphi и OLE?
Точнее, у меня конкретный вопрос. Есть проект презентации - один слайд и пара надписей. Но при обращении к презентации вот так: ...

Возможно ли работать с MS PowerPoint через OLE, как с вордом и экселем?
И где смотреть инфу по работе с Power Point или литератру или справочник по коммандам Добавлено через 2 минуты И кстати подерживает...

Как увидеть содержание типа OLE Object с помощью Delphi-Ole Conteiner?
Привет всем, я из Болгарии у меня такой вопрос: я работю с MSAccess и в ней есть Table и Field с содержанием типа OLE Object. как я...

11
 Аватар для nFalcon
143 / 49 / 2
Регистрация: 04.06.2008
Сообщений: 126
23.07.2010, 11:03
Проще сделать(или использовать существующие) обработку или отчет, который будет выдавать необходимые данные и затем вызывать уже его, что бы не заморачиваться с созданием кучи объектов.

Добавлено через 18 минут
А если так: Sel_ole.Номенклатура.Наименование - это строка, а Номенклатура - это объект
В Delphi не силен.

P.S. Перебирать регистр накопления - не самая лучшая идея.
2
0 / 0 / 0
Регистрация: 22.07.2010
Сообщений: 6
23.07.2010, 15:57  [ТС]
Цитата Сообщение от nFalcon Посмотреть сообщение
Добавлено через 18 минут
А если так: Sel_ole.Номенклатура.Наименование - это строка, а Номенклатура - это объект
Во, спасибо тебе,это помогло,как раз этото и хотел узнать.
А как ты узнал какие атрибуты есть у измерения Номеклатура, они ведь в конфигураторе не указаны вроде бы
0
26 / 26 / 5
Регистрация: 30.01.2010
Сообщений: 84
23.07.2010, 21:42
Я не в курсе о 1С , раз речь о ОЛЕ и Sel_ole.Номенклатура есть объект то с большой вереятности середе дельфи Sel_ole.Номенклатур лишь всего ссылка на кокой то объект...
Если тебе онкак и объект нужен то
попробуй obDelphi:=Sel_ole.Номенклатур.Ref (referance) или Sel_ole.Номенклатур.ПолучитьОбъект(); или что то вроде
0
 Аватар для nFalcon
143 / 49 / 2
Регистрация: 04.06.2008
Сообщений: 126
26.07.2010, 12:21
Toreno_87,
В 1С атрибуты: "Код" и "Наименование" зарезервированные реквизиты для любого справочника 1С(только что созданный пустой справочник уже имеет сразу два атрибута).
Их настройка(указание типа, длины и т.п.) возможна при просмотре свойств справочника на закладке "Данные".
2
0 / 0 / 0
Регистрация: 22.07.2010
Сообщений: 6
26.07.2010, 20:32  [ТС]
Проще сделать(или использовать существующие) обработку или отчет, который будет выдавать необходимые данные и затем вызывать уже его, что бы не заморачиваться с созданием кучи объектов.
P.S. Перебирать регистр накопления - не самая лучшая идея.
Слушай а не подскажешь как работать с отчетом, я написал вот так:
Delphi
1
2
3
     OleOtchet:=s1C8_ole.Отчеты.ОтчетОстаткиИОбороты;
     Sel_ole:=OleOtchet.Создать();
     Sel_ole.ПолучитьФорму().Открыть();
Форма появляется, но естественно пустая, не знаю как ее активировать,ну что б отчет сформировать..
и как потом обратиться к полям отчета...
0
 Аватар для nFalcon
143 / 49 / 2
Регистрация: 04.06.2008
Сообщений: 126
27.07.2010, 13:18
Toreno_87,
Форма Вам зачем? (Sel_ole.ПолучитьФорму().Открыть()

По идее, что-то типа:

Delphi
1
2
3
OleOtchet:=s1C8_ole.Отчеты.ОтчетОстаткиИОбороты;
Sel_ole:=OleOtchet.Создать();
Sel_ole.ВыполнитьКакуюТоФункциюИзМодуляОтчета();
Вызывать можно Функции/процедуры описанные в модуле Отчета (не в форме), которые имеют пометку как экспортные, ключевое слово "Экспорт" в описании.

Добавлено через 10 минут
Если конфигурация 1С типовая или написана правильно, то
в модуле отчета есть все необходимые Вам функции (Наверняка есть процедура "СформироватьОтчет")
или как вариант ("ПолучитьДанные...")
1
0 / 0 / 0
Регистрация: 22.07.2010
Сообщений: 6
28.07.2010, 21:02  [ТС]
Еще раз спасибо тебе за участие!! Может подскажешь еще разок?

Сформировать отчет получилось,но такой функции как ПолучитьДанные и ей подобных в модуле нет
Я попробовал их выудить через ПостроительОтчета , это выглядит так:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
     OleOtchet:=s1C8_ole.Отчеты.ОтчетОстаткиИОбороты;
     Sel_ole:=OleOtchet.Создать();
     Sel_ole.СформироватьОтчет();//Тут вроде запустили отчет
 
     Rez:=Sel_ole.ПостроительОтчета.Результат;//Берем результат отчета
     Select := Rez.Выбрать();//ВыборкаИзРезультатаЗапроса
     While select.Следующий() do
      begin
        s:= VarToStr(select.Номенклатура);
        ShowMessage(s);// И тут его клинит с такой ошибкой Invalid variant type conversion
      end;
    end;
В справке 1С написано что ВыборкаИзРезультатаЗапроса.ИмяПоля - возвращает значение указанного атрибута , но произвольного типа
Как быть то с этим? или может есть еще способ считать эти данные,например через запрос,текст запроса можно опять же получить из ПостроителяОтчета...
0
 Аватар для nFalcon
143 / 49 / 2
Регистрация: 04.06.2008
Сообщений: 126
29.07.2010, 10:08
Toreno_87,
А если
s:= VarToStr(select.Номенклатура.Наименовани е);

значение строка и приводится к строке, должно сработать?
0
0 / 0 / 0
Регистрация: 22.07.2010
Сообщений: 6
29.07.2010, 15:01  [ТС]
Цитата Сообщение от nFalcon Посмотреть сообщение
Toreno_87,
А если
s:= VarToStr(select.Номенклатура.Наименовани е);

значение строка и приводится к строке, должно сработать?
Не не такого поля нет,я пробовал уже, Номеклатура и есть по сути строка, она в запросе так выбирается
0
 Аватар для nFalcon
143 / 49 / 2
Регистрация: 04.06.2008
Сообщений: 126
29.07.2010, 15:16
Не уверен, но:

Delphi
1
s:= VarToStr(s1C8_ole.String(select.Номенклатура));
Как-то так может!?
1
0 / 0 / 0
Регистрация: 22.07.2010
Сообщений: 6
30.07.2010, 13:48  [ТС]
Цитата Сообщение от nFalcon Посмотреть сообщение
Не уверен, но:

s:= VarToStr(s1C8_ole.String(select.Номенкла тура));

Как-то так может!?
Вот, теперь работает!!!
Большое спасибо тебе за помощь!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.07.2010, 13:48
Помогаю со студенческими работами здесь

Работа с документом Word через Ole в Delphi
Как можно скопировать текст из одного документа и вставить в определенное место в другом??? Как можно несколько документов соединить в...

Есть ли возможность работать с бесплатными офисными продуктами (например, OpenOffice, LibreOffice) через OLE
Есть ли возможность работать с бесплатными офисными продуктами (например, OpenOffice, LibreOffice) через OLE, или еще как-то? Может они...

Если создать табл.в InterBase как потом работать с ними через Delphi
и с запросами тоже самое...

Объясните как работать с SQL Server-ом точнее с его таблицей через Delphi 7
Есть база данных название которого TelecomDB нужно написать программку которая выполняла бы запросы написанные в форме Delphi 7. Я не...

Вывод символов с нижним регистром и верхним регистром
Стоит задача, водится строка, при выводе должно быть две строки, одна выводит символы только верхнего регистра, вторая только нижнего....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru