Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Выгрузка всех реквизитов справочника из 1С          
Yoja Подменю пользователя
сообщение 21.05.12, 17:06
Сообщение #1

Говорящий
***
Группа: Пользователи
Сообщений: 90
Спасибо сказали: 4 раз
Рейтинг: 0

Здравствуйте!
Подключен на прямую к базе
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 Подменю пользователя
сообщение 21.05.12, 18:08
Сообщение #2

Живет на форуме
***********
Гений телепатии и социального моделирования
Группа: Пользователи
Сообщений: 4121
Из: Киев
Спасибо сказали: 957 раз
Рейтинг: 0

писать в запросе "Выборка.Родитель.Код"

Сообщение отредактировал Ardi - 21.05.12, 18:20


Signature
Услуги 1С программиста 8.2, 7.7 (Плохо, дорого, очередь). Киев.

Vofka Подменю пользователя
сообщение 21.05.12, 19:00
Сообщение #3

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13958
Из: Киев
Спасибо сказали: 4524 раз
Рейтинг: 3647.7

Yoja, если ваша следующая тема будет называться, как эта и предыдущая - она пойдет в корзину!

Kutuzov Подменю пользователя
сообщение 21.05.12, 19:00
Сообщение #4

Оратор
Иконка группы
Группа: Местный
Сообщений: 328
Из: Одесса
Спасибо сказали: 144 раз
Рейтинг: 0

Можно все забить как строка
Сообщить(Строка(Выборка.Ссылка));


Signature
Вы станете богаче, лишь став умнее...
Чем дальше в лес, тем толще партизаны.
Нельзя недооценивать, не предсказуемость тупизны...

alex040269 Подменю пользователя
сообщение 21.05.12, 20:25
Сообщение #5

Крутой
Иконка группы
Группа: Местный
Сообщений: 1626
Из: Гуляйполе
Спасибо сказали: 236 раз
Рейтинг: 0

Цитата(Yoja @ 21.05.12, 18:06) *
Я понимаю, что COMОбъект это ссылка на какой то объект, находящийся в другой таблице.

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

В 7.7 при работе с другой базой через СОМ все точно так же.


Signature
Никогда не бойся делать то, что не умеешь, помни - Ноев ковчег был построен любителем, профессионалы построили Титаник.
ЗиУП

Yoja Подменю пользователя
сообщение 22.05.12, 7:01
Сообщение #6

Говорящий
***
Группа: Пользователи
Сообщений: 90
Спасибо сказали: 4 раз
Рейтинг: 0

Цитата(Vofka @ 21.05.12, 20:00) *
Yoja, если ваша следующая тема будет называться, как эта и предыдущая - она пойдет в корзину!

Вопрос то другой, вот я и вспомнил про правило №6
6. Новый вопрос - это новая тема! Не следует создавать одну тему и лепить в неё все свои вопросы.

Batchir Подменю пользователя
сообщение 22.05.12, 7:50
Сообщение #7

Живет на форуме
Иконка группы
Группа: Команда
Сообщений: 3568
Из: Киев
Спасибо сказали: 1427 раз
Рейтинг: 0

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


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

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



Yoja Подменю пользователя
сообщение 22.05.12, 10:32
Сообщение #8

Говорящий
***
Группа: Пользователи
Сообщений: 90
Спасибо сказали: 4 раз
Рейтинг: 0

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


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

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

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

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


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


Как его привести в рабочее состояние, может надо в запросе вытягивать?

Vofka Подменю пользователя
сообщение 22.05.12, 10:37
Сообщение #9

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13958
Из: Киев
Спасибо сказали: 4524 раз
Рейтинг: 3647.7

"Не рабочая половина" - это у вас ссылочные поля. Приведите их к типу строка и будет вам счастье.

Цитата(Yoja @ 22.05.12, 8:01) *
Вопрос то другой, вот я и вспомнил про правило №6

То что вспомнили - это хорошо, но не стоит забывать и про пункт 4 wink.gif

Yoja Подменю пользователя
сообщение 22.05.12, 10:50
Сообщение #10

Говорящий
***
Группа: Пользователи
Сообщений: 90
Спасибо сказали: 4 раз
Рейтинг: 0

Сообщить("Выборка.ЮрФизЛицо "+Выборка.ЮрФизЛицо);
//или
Сообщить("Выборка.ЮрФизЛицо "+Строка(Выборка.ЮрФизЛицо));

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

или я не так преобразовываю?

Vofka Подменю пользователя
сообщение 22.05.12, 10:51
Сообщение #11

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13958
Из: Киев
Спасибо сказали: 4524 раз
Рейтинг: 3647.7

Цитата(Yoja @ 22.05.12, 11:50) *
или я не так преобразовываю?

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

Yoja Подменю пользователя
сообщение 22.05.12, 10:56
Сообщение #12

Говорящий
***
Группа: Пользователи
Сообщений: 90
Спасибо сказали: 4 раз
Рейтинг: 0

То есть нужно делать выборку сразу в запросе. Да?

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


 i 

Не надо без надобности поднимать тему. Если нужна скорая помощь - обратитесь к платным специалистам.
 


Сообщение отредактировал logist - 22.05.12, 16:28

Batchir Подменю пользователя
сообщение 23.05.12, 7:37
Сообщение #13

Живет на форуме
Иконка группы
Группа: Команда
Сообщений: 3568
Из: Киев
Спасибо сказали: 1427 раз
Рейтинг: 0

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

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

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

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

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

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




Vofka Подменю пользователя
сообщение 23.05.12, 8:04
Сообщение #14

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13958
Из: Киев
Спасибо сказали: 4524 раз
Рейтинг: 3647.7

Batchir, ответ выше мне чтоли адресован? smile.gif

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 15.06.24, 13:35
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!