Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Выгрузка всех реквизитов справочника из 1С
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.2 > Программирование обычных форм 1С 8.2 и не интерфейсной логики
Yoja
Здравствуйте!
Подключен на прямую к базе
1С:Підприємство 8.2 (8.2.13.219)
Бухгалтерия для Украины, редакция 1.2.

Выполняю код:
Процедура Кнопка1Нажатие(Элемент)
    //строим запрос к контрагентам
    //Запрос1С = Новый Запрос;
    Запрос1С.Текст =
"ВЫБРАТЬ
|    Контрагенты.Ссылка,
|    Контрагенты.ВерсияДанных,
|     Контрагенты.ПометкаУдаления,
|    Контрагенты.Предопределенный,
|    Контрагенты.Родитель,
|    Контрагенты.ЭтоГруппа,
|    Контрагенты.Код,
|    Контрагенты.Наименование,
|    Контрагенты.ОсновнойДоговорКонтрагента,
|    Контрагенты.Комментарий,
|    Контрагенты.ГоловнойКонтрагент,
|    Контрагенты.ЮрФизЛицо,
|    Контрагенты.ИНН,
|     Контрагенты.НаименованиеПолное,
|    Контрагенты.ОсновнойБанковскийСчет,
|    Контрагенты.ДокументУдостоверяющийЛичность,
|    Контрагенты.ОсновноеКонтактноеЛицо,
|    Контрагенты.КодПоЕДРПОУ,
|    Контрагенты.НомерСвидетельства,
|    Контрагенты.НеЯвляетсяРезидентом,
|    Контрагенты.Представление
|ИЗ
|    Справочник.Контрагенты КАК Контрагенты";
        
    РезультатЗапроса = Запрос1С.Выполнить();
    Выборка = РезультатЗапроса.Выбрать();
    Счетчик = 1;
    Пока Выборка.Следующий() Цикл
Сообщить(Выборка.Ссылка);
Сообщить(Выборка.ВерсияДанных);
Сообщить(Выборка.ПометкаУдаления);
Сообщить(Выборка.Предопределенный);
Сообщить(Выборка.Родитель);
Сообщить(Выборка.ЭтоГруппа);
Сообщить(Выборка.Код);
Сообщить(Выборка.Наименование);
Сообщить(Выборка.ОсновнойДоговорКонтрагента);
Сообщить(Выборка.Комментарий);
Сообщить(Выборка.ГоловнойКонтрагент);
Сообщить(Выборка.ЮрФизЛицо);
Сообщить(Выборка.ИНН);
Сообщить(Выборка.НаименованиеПолное);
Сообщить(Выборка.ОсновнойБанковскийСчет);
Сообщить(Выборка.ДокументУдостоверяющийЛичность);
Сообщить(Выборка.ОсновноеКонтактноеЛицо);
Сообщить(Выборка.КодПоЕДРПОУ);
Сообщить(Выборка.НомерСвидетельства);
Сообщить(Выборка.НеЯвляетсяРезидентом);
Сообщить(Выборка.Представление);

        Сообщить(" ");
        
        Счетчик = Счетчик + 1;
        #Если Клиент Тогда
             ОбработкаПрерыванияПользователя();
        #КонецЕсли
    КонецЦикла;     
КонецПроцедуры


РЕЗУЛЬТАТ
COMОбъект
AAAASgAAAAI=
Ні
Ні
COMОбъект
Ні
000000030
ПП Пупкин
COMОбъект
COMОбъект
COMОбъект
ПП Войцик
COMОбъект
COMОбъект
Ні
ПП Пупкин


Я понимаю, что COMОбъект это ссылка на какой то объект, находящийся в другой таблице.
Вопрос, как находить связи к этим таблицам в конфигураторе, в 1С 7.7 было легче,
здесь я еще слаб, расскажите как это делать?? Желательно подробней.
Примного благодарен
(буду в 00:00)
Ardi
писать в запросе "Выборка.Родитель.Код"
Vofka
Yoja, если ваша следующая тема будет называться, как эта и предыдущая - она пойдет в корзину!
Kutuzov
Можно все забить как строка
Сообщить(Строка(Выборка.Ссылка));
alex040269
Цитата(Yoja @ 21.05.12, 18:06) необходимо зарегистрироваться для просмотра ссылки
Я понимаю, что COMОбъект это ссылка на какой то объект, находящийся в другой таблице.

не в другой таблице, а в другой базе.
Цитата(Yoja @ 21.05.12, 18:06) необходимо зарегистрироваться для просмотра ссылки
Вопрос, как находить связи к этим таблицам в конфигураторе, в 1С 7.7 было легче

В 7.7 при работе с другой базой через СОМ все точно так же.
Yoja
Цитата(Vofka @ 21.05.12, 20:00) необходимо зарегистрироваться для просмотра ссылки
Yoja, если ваша следующая тема будет называться, как эта и предыдущая - она пойдет в корзину!

Вопрос то другой, вот я и вспомнил про правило №6
6. Новый вопрос - это новая тема! Не следует создавать одну тему и лепить в неё все свои вопросы.
Batchir
Цитата(Yoja @ 21.05.12, 18:06) необходимо зарегистрироваться для просмотра ссылки
Вопрос, как находить связи к этим таблицам в конфигураторе


Многое зависит от того где создаются данные и как появляются в другой БД.
Но в основном тут отладчик в руки и смотреть.
В моих случаях мне помогало следующее:

1. ЗаполнитьЗначенияСвойств();
2. стрЗначение = База.ЗначениеВСтрокуВнутр(<COMОбъект>); // База - установленное соединение с другой БД
текЗначение = ЗначениеИзСтрокиВнутр(стрЗначение);
3. Поиск соответсвия в регистре сведений СоответствиеОбъектовДляОбмена
4. Для перечислений отдельный случай в виде кода:
ИмяМетаданных = <COMОбъект>.Metadata().Name;
ВозможныеЗначения = База.Metadata.Перечисления[ИмяМетаданных].ЗначенияПеречисления;
ИндексЗначения = ВозможныеЗначения.Индекс(ВозможныеЗначения.Найти(База.XMLString(<COMОбъект>)));
ОбъектМетаданных = Метаданные.Перечисления[ИмяМетаданных].ЗначенияПеречисления[ИндексЗначения];
текЗначение = Перечисления[ИмяМетаданных][ОбъектМетаданных.Имя];
СтрокаСообветствий.ЗначениеУнИд =текЗначение;


Yoja
Цитата(Ardi @ 21.05.12, 19:08) необходимо зарегистрироваться для просмотра ссылки
писать в запросе "Выборка.Родитель.Код"


Не сработало, может я что то не так делаю.
Было:
Сообщить(Выборка.КодПоЕДРПОУ);
//СТАЛО
Сообщить(Выборка.Родитель.КодПоЕДРПОУ);

Результат просто пусто

Цитата
Сообщить(Строка(Выборка.Ссылка));

Это кое где помогло.
Рабочая половина кода:
Сообщить("Выборка.ПометкаУдаления "+Выборка.ПометкаУдаления);        
Сообщить("Выборка.Предопределенный "+Выборка.Предопределенный);        
Сообщить("Выборка.ЭтоГруппа "+Выборка.ЭтоГруппа);
Сообщить("Выборка.Код "+Выборка.Код);
Сообщить("Выборка.Наименование "+Выборка.Наименование);
Сообщить("Выборка.ИНН "+Строка(Выборка.ИНН));
Сообщить("Выборка.НаименованиеПолное "+Выборка.НаименованиеПолное);
Сообщить("Выборка.КодПоЕДРПОУ "+Строка(Выборка.КодПоЕДРПОУ));
Сообщить("Выборка.НомерСвидетельства "+Выборка.НомерСвидетельства);
Сообщить("Выборка.НеЯвляетсяРезидентом "+Выборка.НеЯвляетсяРезидентом);
Сообщить("Выборка.Представление "+Выборка.Представление);
Сообщить("Выборка.Комментарий "+Выборка.Комментарий);
Сообщить("Выборка.ДокументУдостоверяющийЛичность "+Выборка.ДокументУдостоверяющийЛичность);


Не рабочая половина
Сообщить("Выборка.Ссылка "+Выборка.Ссылка);
Сообщить("Выборка.ВерсияДанных "+Выборка.ВерсияДанных);
Сообщить("Выборка.Родитель "+Выборка.Родитель);
Сообщить("Выборка.ОсновнойДоговорКонтрагента "+Выборка.ОсновнойДоговорКонтрагента);
Сообщить("Выборка.ГоловнойКонтрагент "+Выборка.ГоловнойКонтрагент);
Сообщить("Выборка.ЮрФизЛицо "+Выборка.ЮрФизЛицо);
Сообщить("Выборка.ОсновнойБанковскийСчет "+Выборка.ОсновнойБанковскийСчет);
Сообщить("Выборка.ОсновноеКонтактноеЛицо "+Выборка.ОсновноеКонтактноеЛицо);


Как его привести в рабочее состояние, может надо в запросе вытягивать?
Vofka
"Не рабочая половина" - это у вас ссылочные поля. Приведите их к типу строка и будет вам счастье.

Цитата(Yoja @ 22.05.12, 8:01) необходимо зарегистрироваться для просмотра ссылки
Вопрос то другой, вот я и вспомнил про правило №6

То что вспомнили - это хорошо, но не стоит забывать и про пункт 4 wink.gif
Yoja
Сообщить("Выборка.ЮрФизЛицо "+Выборка.ЮрФизЛицо);
//или
Сообщить("Выборка.ЮрФизЛицо "+Строка(Выборка.ЮрФизЛицо));

Выдает один и то же результат:
Выборка.ЮрФизЛицо COMОбъект

или я не так преобразовываю?
Vofka
Цитата(Yoja @ 22.05.12, 11:50) необходимо зарегистрироваться для просмотра ссылки
или я не так преобразовываю?

Не так конечно! Надо, чтобы Выборка.ЮрФизЛицо - это была строка. Ссылочный тип через COM объект, в данном случае, не получите.
Yoja
То есть нужно делать выборку сразу в запросе. Да?

Есть кто живой?


 i 

Не надо без надобности поднимать тему. Если нужна скорая помощь - обратитесь к платным специалистам.
 
Batchir
ОТЛАДЧИК ВАМ В ПОМОЩЬ!!!
Если Вы до сих пор не смогли открыть его, то помогать/разъяснять Вам лично мне не интересно, потому что всё что Вы спрашиваете
можно посмотреть самому.

Цитата(Vofka @ 22.05.12, 11:37) необходимо зарегистрироваться для просмотра ссылки
Приведите их к типу строка и будет вам счастье.

Если задача состоит в том что бы просто вывести инфу из сторонней БД, то посмотрев в отладчике вы бы увидели что
у Выборка.ЮрФизЛицо есть "Description" и хоть там явно нет, но "Наименование" тоже будет доступно.

Если задача состоит в том что бы получить данные одной БД, получить данные текущей БД и связать их для вывода общей информации то счастья не будет.

COMобъект в одной базе это объект именно в той базе. И он никак не связан с объектом текущей.
Для этого нужно каким-то образом иметь связь между объектом одной БД и объектом другой, это может быть что угодно, например если код справочника одинаков в обоих базах, по нему и связывайте.

Мой предыдущий ответ содержит информацию о том как можно связать информацию в отдельных случаях.
Идеально это поддерживать одинаковые уникальные идентификаторы объектов баз и/или использовать некую таблицу соответствий этих идентификаторов.



Vofka
Batchir, ответ выше мне чтоли адресован? smile.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.