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


Пишу на дельфе процедурку импорта справочника из 1С.

А ситуация такая.

Есть документ в 1С. В нем есть поле КОНТРАГЕНТ. Ссылка на справочник контрагентов.
Так же есть поле Субконто2СчетДебета, которое имеет неопределенный тип и при выпонении 1с определяется как Справочники.договора и присваивается значение КОНТРАГЕНТ.Основной договор.

Я при добавлении строки в документ открываю справочник
Код: plaintext
          OleRef:=Ole_1C.CreateObject('Справочник.Контрагенты');

Нахожу в нем нужного по коду и запонимаю его

Код: plaintext
zzz:=OleRef.ТекущийЭлемент;

Устанавливаю значение атрибута строки КОНТРАГЕНТ

Код: plaintext
ole_TekDoc.УстановитьАтрибут(''+'Контрагент',zzz,'');

Меняю тип атрибута
Код: plaintext
        ole_TekDoc.НазначитьТип(''+Субконто2СчетДебета',''+'Справочники.Договора', 0 , 0 );

А вот дальше как присвоить значение атрибута Субконто2СчетДебета?

Пробовал так

Код: plaintext
1.
codee:=trim(zzz1.ПолучитьАтрибут(''+'Код'));
        ole_TekDoc.УстановитьАтрибут(''+'Субконто2СчетДебета',codee,'');
И так
Код: plaintext
1.
        zzz1:=(zzz.ПолучитьАтрибут(''+'ОсновнойДоговор'));
        ole_TekDoc.УстановитьАтрибут(''+'Субконто2СчетДебета',zzz1,'');


Не устанавливается.

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

тема не соответствует вопросу :-)
...
Рейтинг: 0 / 0
Выборка из справочника
    #36659113
Фотография Dinamo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndrewVL,

Правильно ли я вас понял что у вас задача получить доступ в элементу справочника "договоры", указанного в реквизите документа Субконто2СчетДебета, для последующего импорта куда либо?

Если так то не понятно причем здесь методы ПолучитьАтрибут() и УстановитьАтрибут();

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
НайтиЭлемент(<?>)
Синтаксис:
НайтиЭлемент(<Элемент>)
Назначение:
Найти элемент справочника по значению.
Возвращает: 1 - если действие выполнено;
 0 - если действие не выполнено (элемент не найден).
Параметры: 
<Элемент> - выражение со значением элемента справочника.
Замечание:
Метод выполняет поиск элемента справочника и позиционирует объект на этом элементе.
Метод  можно использовать только для объектов, созданных функцией СоздатьОбъект.

Код: plaintext
1.
2.
OleRef2:=Ole_1C.CreateObject('Справочник.Договоры');
DogovorNaeden      := OleRef2.НайтиЭлемент(Субконто2СчетДебета);
zzzDogovor := OleRef2.ТекущийЭлемент;

Если же у Вас задача создать строки табличной части документа и присвоить реквизитам значения

То соответственно нужно устанавливать значение атрибута аналогично конструкции с установкой значения контрагента.
Сначала необходимо получить элемент (в случае Контрагента вы выполнили поиск по коду).

Код: plaintext
1.
OleRef2:=Ole_1C.CreateObject('Справочник.Договоры');
DogovorNaeden      := OleRef2.НайтиЭлемент(zzz.ОсновнойДоговор);

Соответственно если получили не пустое значение посте НайтиЭлемент то используйте найденый объект.

Код: plaintext
1.
zzzDogovor := OleRef2.ТекущийЭлемент;
ole_TekDoc.УстановитьАтрибут(''+'Субконто2СчетДебета',zzzDogovor,'');
...
Рейтинг: 0 / 0
Выборка из справочника
    #36659195
AndrewVL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dinamo,

Здравствуйте.

Наоборот.


Есть справочник контрагентов. В нем есть атрибут ОСНОВНОЙ ДОГОВОР - ссылка на справочники договоров.

Далее. Есть КОД контрагента.
Создаем документ РеализацияУслуги. В нем поля КОНТРАГЕНТ, Субконто2СчетДебета и т.д.
Добавляем в табличную часть запись.

Далее находим в справочнике контрагентов искомого по коду.
Присваиваем его значение реквизиту КОНТРАГЕНТ документа РеализацияУслуги.
Здесь все ок.

У найденого контрагента есть реквизит - ОсновнойДоговор (а на справочник договоров).
Вот это и надо приравнять к Субконто2СчетДебета табличной части окумента РеализацияУслуги.
...
Рейтинг: 0 / 0
Выборка из справочника
    #36659222
AndrewVL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DinamoAndrewVL,

Правильно ли я вас понял что у вас задача получить доступ в элементу справочника "договоры", указанного в реквизите документа Субконто2СчетДебета, для последующего импорта куда либо?


не а реквизите Субконто2СчетДебета, а в реквизите ОСНОВНОЙДОГОВОР справочника КОНТРАГЕНТЫ.
И присвоить это значение Субконто2СчетДебета табличной части
...
Рейтинг: 0 / 0
Выборка из справочника
    #36659376
Фотография Dinamo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndrewVLне а реквизите Субконто2СчетДебета, а в реквизите ОСНОВНОЙДОГОВОР справочника КОНТРАГЕНТЫ.
И присвоить это значение Субконто2СчетДебета табличной части
А тогда импорт "справочника из 1С" здесь каким боком?
AndrewVLПишу на дельфе процедурку импорта справочника из 1С.


Если уж хотите получить быстрый и верный ответ так и потратьте немного времени на четкую формулировку задачи.

Итак, немногословный вы наш, все-таки изволили сообщить нам что ваша задача:
"формирование срок документа, с заполнением реквизитов табличной части данными из справочника Контрагенты (платформа 1С 7.7) "

Собственно повторюсь:
Нужно устанавливать значение атрибута аналогично конструкции с установкой значения контрагента. Сначала необходимо получить элемент справочника Договоры методом НайтиЭлемент().
В вашем случае ссылка на договор хранится в реквизите ОсновнойДоговор справочника Контрагенты.

Код: plaintext
1.
OleRef2:=Ole_1C.CreateObject('Справочник.Договоры');
DogovorNaeden      := OleRef2.НайтиЭлемент(zzz.ОсновнойДоговор);

Если получили не пустое значение после НайтиЭлемент() то используйте найденый объект.

Код: plaintext
1.
2.
zzzDogovor := OleRef2.ТекущийЭлемент;
ole_TekDoc.УстановитьАтрибут(''+'Субконто2СчетДебета',zzzDogovor,'');

Надеюсь что операцию создания строки табличной части вы в своем коде поместили до того как пытаетесь установить значение реквизитов табличной части.
...
Рейтинг: 0 / 0
Выборка из справочника
    #36659433
AndrewVL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dinamo,

еще раз воспроизведу как у меня
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
        OleRef1:=Ole_1C.CreateObject('Справочник.'+'Договоры');
        dogovor:=oleref1.НайтиЭлемент(zzz.ОсновнойДоговор);
        dogovorRef:=oleref1.ТекущийЭлемент;


        ole_TekDoc.УстановитьАтрибут(''+'Субконто2СчетДебета',dogovorref,'');
        ole_TekDoc.Записать;
dogovor равен 1. dogovorRef присвоилось. а субконто нет.

Может это из за того, что Субконто2СчетДебета изначально имеет неопределенный тип?
Определяю так

Код: plaintext
        ole_TekDoc.НазначитьТип(''+'Субконто2СчетДебета',''+'Договоры', 0 , 0 );


в самой конфигурации 1с это делается так.
НазначитьТип("Субконто2СчетДебета",СчетДебета.ВидСубконто(4));

дополню, что есть еще несколько полей субконто в шапке таблицы.
Заполняю так

ole_doc.УстановитьАтрибут(''+'СчетДебета',ole_1c.evalexpr('СчетПокоду("205.03.2.0.2")') ,'');
...
Рейтинг: 0 / 0
Выборка из справочника
    #36660490
Фотография Dinamo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndrewVL
Может это из за того, что Субконто2СчетДебета изначально имеет неопределенный тип?
Определяю так
Код: plaintext
ole_TekDoc.НазначитьТип(''+'Субконто2СчетДебета',''+'Договоры', 0 , 0 );


Да, конечно, сначала нужно назначить тип. Это уже у вас в первом посте всплывало, но вы назначали тип Справочник.Договоры, а нужно назначать тип ВидСубконто(,"Договоры") (как именно у вас называется субконто с типом справочник.Договоры смотрите в конфигурации).
Попробуйте так
Код: plaintext
ole_TekDoc.НазначитьТип(''+'Субконто2СчетДебета',СчетДебета.ВидСубконто(,"Договоры");
Это нужно делать после того как вы установили значение СчетДебета.
Но до того как устанавливать значение реквизита Субконто2СчетДебета
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / [игнор отключен] [закрыт для гостей] / Выборка из справочника
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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