Имя: Пароль:
1C
1С v8
v8: 8.3 Внешние источники из другой базы 1С, IdRef - поиск по этому полю
0 RomaH
 
naïve
17.04.14
11:54
Подключил таблицу подразделений из ЗУП к БП
надо искать родителя
кроме как по ГУИД вроде никак

ГУИД - двоичные данные
добавил поле типа строка 32, но со ссылкой на это поле в источнике

не ищет

как найти по ГУИД во внешнем источнике?
1 RomaH
 
naïve
17.04.14
11:57
2 RomaH
 
naïve
17.04.14
12:04
хм
http://listick.ru/share/wPPao
это ГУИН выраженый в строку в запросе

и как искать по ГУИД
3 IKSparrow
 
17.04.14
12:09
(0) Интересное применение. Права не имел так делать согласно лицензионному :)
4 RomaH
 
naïve
17.04.14
12:15
блин, неужели только так:

    Запрос.Текст =
    "ВЫБРАТЬ
    |    ПодразделенияОрганизаций.Код,
    |    ПодразделенияОрганизаций.ГУИН,
    |    ПодразделенияОрганизаций.ГУИНРодитель
    |ИЗ
    |    ВнешнийИсточникДанных.ЗУП.Таблица.ПодразделенияОрганизаций КАК ПодразделенияОрганизаций
    |";
    
    ВнешнееПодразделение = Запрос.Выполнить().Выбрать();
    
    Пока ВнешнееПодразделение.Следующий() Цикл
        Если ВнешнееПодразделение.ГУИН = "91F0000423BA5CB811DF09877A019244"    Тогда
            Прервать;
        КонецЕсли;
    КонецЦикла;
5 mehfk
 
17.04.14
12:36
Использовать ADO не предлагать?

substring(sys.fn_sqlvarbasetostr(_IDRRef),3,32) AS _IDRRef

Только символы местами переставить
6 RomaH
 
naïve
17.04.14
12:46
(5) я тут со "штатными" внешними источниками борюсь
это ADO  именно к таблице ВИ можно прикрутить - тогда как?
7 mehfk
 
17.04.14
12:47
ADO вместо ВИ
8 RomaH
 
naïve
17.04.14
12:50
(7) это будет не спортивно

блин, этот внешний источник даже по коду не ищет
запрос ищет, а метод найти по полю возвращает "Объект не найден ..."

вот такое вот извращаение:
ну ладно с ГУИД - я понимаю, там преобразование "сложное"
но тут-то что?

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

Процедура СоздатьПодразделениеИзЗУП(КодПодразделенияЗУП)
    
    //ВнешнееПодразделение = ВнешниеИсточникиДанных.ЗУП.Таблицы.ПодразделенияОрганизаций.НайтиПоПолю("Код",КодПодразделенияЗУП);
    
    ВнешнееПодразделение = НайтиПоКодуВЗУП(КодПодразделенияЗУП);
9 mehfk
 
17.04.14
12:59
попробуй Подобно вместо =
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс