Имя: Пароль:
1C
1C 7.7
v7: Подключение через Оле
0 LisaAlisa
 
11.05.16
08:20
Я уже создавала тему Подключение по оле к 8.3
но почему-то сейчас не могу добавить в неё ответ, поэтому пришлось создать новую.
Подключение следующее:
        ИБ_V8= СоздатьОбъект("V83.Application");         //Application  
        ИмяСервера = "ИмяСервера";    
        ИмяБазы    = "ИмяБазы";  
        Логин       = "Логин";
        Пасворд       = "Пасворд";    
        Попытка
            Открыта=ИБ_V8.Connect("Srvr="""+СокрЛП(ИмяСервера)+""";Ref="""+СокрЛП(ИмяБазы)+""";Usr="""+СокрЛП(Логин)+""";Pwd = """ + СокрЛП(Пасворд) + """;");
            ИБ_V8.Visible = 0;
            Сообщить("База 1с8 открыта!");                                  
            
        Исключение
            Предупреждение("Ошибка открытия базы V8 - "+ОписаниеОшибки());
            
        КонецПопытки;      
                
        СпрСтраны8 = ИБ_V8.Справочники.СтраныМира;
        ТабСтраны8 = СпрСтраны8.ТаблицаКлассификатора();

Ошибка Поле агрегатного объекта не обнаружено (ТаблицаКлассификатора)
В отладчике СпрСтраны8 =  ...здесь пусто...
1 LisaAlisa
 
11.05.16
08:36
почему подключение происходит, но функции модуля менеджера недоступны?
2 франц
 
11.05.16
08:38
(1) а тип то ТаблицаКлассификатора СпрСтраны8 какой?  OLE?..
3 LisaAlisa
 
11.05.16
08:40
(2) типзначения(СпрСтраны8) = 100
это возвращает отладчик
4 LisaAlisa
 
11.05.16
08:44
Функция ТаблицаКлассификатора() Экспорт - это функция описана в модуле менеджера справочника СтраныМира. раньше всё работало, сейчас нет, обработку не меняли
5 LisaAlisa
 
11.05.16
08:44
может, какой-то dll надо зарегистрировать заново?
6 пипец
 
11.05.16
08:45
а чо тема то 7.7
7 LisaAlisa
 
11.05.16
08:46
(6) потому что подключение выполняется из 7.7
8 HawkEye
 
11.05.16
08:48
(0) база 1с8 открыта! - сообщает?
9 LisaAlisa
 
11.05.16
08:49
(8) да. сообщает
10 пипец
 
11.05.16
08:50
оууужс - писали ж - делайте наоборот )))
11 HawkEye
 
11.05.16
08:56
(9) тогда при чем тут 7.7?
12 LisaAlisa
 
11.05.16
09:07
(11) не понимаю вопроса.
Подключение выполняется из базы 7.7 к базе 8.3, чтобы синхронизировать справочники стран мира
13 elisabet
 
11.05.16
09:24
(0) посмотрела уже 4 типовых конфы - везде справочник называется "КЛАССИФИКАТОРСтранМира". Что за конфа к которой подключаешься?
14 xxTANATORxx
 
11.05.16
09:26
(4)раньше это когда?
15 Остап Сулейманович
 
11.05.16
09:29
(0) Где в восьмерке находится вот это : ТаблицаКлассификатора()?
16 Остап Сулейманович
 
11.05.16
09:30
+ (15) И есть ли у него Экспорт?
17 LisaAlisa
 
11.05.16
09:57
(13) Бухгалтерия предприятия КОРП, редакция 3.0 (3.0.43.174)
(14) три месяца назад
(15) (16) Функция ТаблицаКлассификатора() Экспорт - это функция описана в модуле менеджера справочника СтраныМира
18 xxTANATORxx
 
11.05.16
12:14
(17)скорее всего ВнешнееСоединение не видит твою процедуру
попробуй явно указать инструкцией препроцессора где будет исполняться твоя процедура
19 LisaAlisa
 
11.05.16
12:34
На форме: 0
У обработки: 0

Хотя ТЧ совершенно точно заполнена, она заполняется в основной форме, откуда и вызывается форма сопоставления контрагентов
20 LisaAlisa
 
11.05.16
12:34
опа, не в ту тему написала...
21 LisaAlisa
 
11.05.16
12:38
(18) проблема возникла в 7.7, как там описать?
22 HawkEye
 
11.05.16
14:09
(21) не в 7.7 проблема...

на конструкцию

ТабСтраны8  = ИБ_V8.Справочники.СтраныМира.ТаблицаКлассификатора();

что пишет?
23 LisaAlisa
 
11.05.16
14:45
(22)  Поле агрегатного объекта не обнаружено (ТаблицаКлассификатора)
В отладчике СпрСтраны8 =  ...здесь пусто...
24 HawkEye
 
11.05.16
14:47
(23) а должно быть OLE
25 HawkEye
 
11.05.16
14:52
(23) блин... у тебя же 8.3 и наверное УФ?
26 LisaAlisa
 
11.05.16
14:57
(25) подключаюсь из 77 в 83
27 HawkEye
 
11.05.16
14:58
(26) "Если запуск происходит в управляемом режиме (а неверняка для 8.3), то через полученный OLE-объект доступно будет только то что "клиентское", ибо вызываем мы все с клиента, только он уже на сервер может прыгнуть."
28 LisaAlisa
 
11.05.16
15:02
(27) мне непонятно, что могло измениться за 2-3 месяца, если не меняли обработку 7.7 и конфигурация в этой части не менялась
29 HawkEye
 
11.05.16
15:24
(28) я конечно могу третий раз написать, что 7.7 тут не при чем, но я так понимаю тебя мало интересуют ответы, да? )
30 hhhh
 
11.05.16
15:27
(28) ну вот смотрю БП 3.0 , там нет такой функции
31 Chameleon1980
 
11.05.16
15:51
(30) модуль менеджера

// Возвращает полные данные ОКСМ классификатора.
//
// Возвращаемое значение:
//     ТаблицаЗначений - данные классификатора с колонками:
//         * Код                - Строка - данные страны.
//         * Наименование       - Строка - данные страны.
//         * НаименованиеПолное - Строка - данные страны.
//         * КодАльфа2          - Строка - данные страны.
//         * КодАльфа3          - Строка - данные страны.
//
//     Таблица значений проиндексирована по полям "Код", "Наименование".
//
32 Chameleon1980
 
11.05.16
15:57
просто проблема, думаю, в том, что данная функция не доступна из внешнего соединения


вас не смущает, что выше есть

#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда

#КонецЕсли

данная функция не лежит между директивами Если Внешнее соединения Тогда
КонецЕсли
33 hhhh
 
11.05.16
16:07
(32) вроде лежит
34 Chameleon1980
 
11.05.16
16:26
(33)
внимательно смотрели?

если что - смотрю одну из старых (наверное) 3.0.39.50

дык вот в ней. судя по всему - мимо директив.

там три раза фигурирует
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда

ну и дык ТаблицаКлассификатора мимо.
35 hhhh
 
11.05.16
16:38
(34) внутри она. всё в порядке.
36 Chameleon1980
 
11.05.16
16:49
(35) блин ну у меня вот нет:

для интереса вот (извиняйте за портянку):


#Область СлужебныйПрограммныйИнтерфейс

#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда

// Определяет данные страны по справочнику стран или классификатору ОКСМ.
//
// Параметры:
//    КодСтраны    - Строка, Число - код ОКСМ страны. Если не указано, то поиск по коду не производится.
//    Наименование - Строка        - наименование страны. Если не указано, то поиск по наименованию не производится.
//
// Возвращаемое значение:
//    Структура - поля:
//          * Код                - Строка - реквизит найденной страны.
//          * Наименование       - Строка - реквизит найденной страны.
//          * НаименованиеПолное - Строка - реквизит найденной страны.
//          * КодАльфа2          - Строка - реквизит найденной страны.
//          * КодАльфа3          - Строка - реквизит найденной страны.
//          * Ссылка             - СправочникаСсылка.СтраныМира - реквизит найденной страны.
//    Неопределено - страна не найдена.
//
Функция ДанныеСтраныМира(Знач КодСтраны = Неопределено, Знач Наименование = Неопределено) Экспорт
    Если КодСтраны=Неопределено И Наименование=Неопределено Тогда
        Возврат Неопределено;
    КонецЕсли;
    
    НормализованныйКод = КодСтраныМира(КодСтраны);
    Если КодСтраны=Неопределено Тогда
        УсловиеПоиска = "ИСТИНА";
        ФильтрКлассификатора = Новый Структура;
    Иначе
        УсловиеПоиска = "Код=" + КонтрольКавычекВСтроке(НормализованныйКод);
        ФильтрКлассификатора = Новый Структура("Код", НормализованныйКод);
    КонецЕсли;
    
    Если Наименование<>Неопределено Тогда
        УсловиеПоиска = УсловиеПоиска + " И Наименование=" + КонтрольКавычекВСтроке(Наименование);
        ФильтрКлассификатора.Вставить("Наименование", Наименование);
    КонецЕсли;
    
    Результат = Новый Структура("Ссылка, Код, Наименование, НаименованиеПолное, КодАльфа2, КодАльфа3");
    
    Запрос = Новый Запрос("
        |ВЫБРАТЬ ПЕРВЫЕ 1
        |    Ссылка, Код, Наименование, НаименованиеПолное, КодАльфа2, КодАльфа3
        |ИЗ
        |    Справочник.СтраныМира
        |ГДЕ
        |    " + УсловиеПоиска + "
        |УПОРЯДОЧИТЬ ПО
        |    Наименование
        |");
        
    Выборка = Запрос.Выполнить().Выбрать();
    Если Выборка.Следующий() Тогда
        ЗаполнитьЗначенияСвойств(Результат, Выборка);
        
    Иначе
        ДанныеКлассификатора = ТаблицаКлассификатора();
        СтрокиДанных = ДанныеКлассификатора.НайтиСтроки(ФильтрКлассификатора);
        Если СтрокиДанных.Количество()=0 Тогда
            Результат = Неопределено
        Иначе
            ЗаполнитьЗначенияСвойств(Результат, СтрокиДанных[0]);
        КонецЕсли;
        
    КонецЕсли;
    
    Возврат Результат;
КонецФункции

// Определяет данные страны по классификатору ОКСМ.
//
// Параметры:
//    КодСтраны - Строка, Число - код ОКСМ страны.
//
// Возвращаемое значение:
//    Структура - поля:
//          * Код                - Строка - реквизит найденной страны.
//          * Наименование       - Строка - реквизит найденной страны.
//          * НаименованиеПолное - Строка - реквизит найденной страны.
//          * КодАльфа2          - Строка - реквизит найденной страны.
//          * КодАльфа3          - Строка - реквизит найденной страны.
//    Неопределено - страна не найдена.
//
Функция ДанныеКлассификатораСтранМираПоКоду(Знач КодСтраны) Экспорт
    
    ДанныеКлассификатора = ТаблицаКлассификатора();
    СтрокаДанных = ДанныеКлассификатора.Найти(КодСтраныМира(КодСтраны), "Код");
    Если СтрокаДанных=Неопределено Тогда
        Результат = Неопределено;
    Иначе
        Результат = Новый Структура("Код, Наименование, НаименованиеПолное, КодАльфа2, КодАльфа3");
        ЗаполнитьЗначенияСвойств(Результат, СтрокаДанных);
    КонецЕсли;
    
    Возврат Результат;
КонецФункции

// Определяет данные страны по классификатору ОКСМ.
//
// Параметры:
//    Наименование - Строка - наименование страны.
//
// Возвращаемое значение:
//    Структура - поля:
//          * Код                - Строка - реквизит найденной страны.
//          * Наименование       - Строка - реквизит найденной страны.
//          * НаименованиеПолное - Строка - реквизит найденной страны.
//          * КодАльфа2          - Строка - реквизит найденной страны.
//          * КодАльфа3          - Строка - реквизит найденной страны.
//    Неопределено - страна не найдена.
//
Функция ДанныеКлассификатораСтранМираПоНаименованию(Знач Наименование) Экспорт
    ДанныеКлассификатора = ТаблицаКлассификатора();
    СтрокаДанных = ДанныеКлассификатора.Найти(Наименование, "Наименование");
    Если СтрокаДанных=Неопределено Тогда
        Результат = Неопределено;
    Иначе
        Результат = Новый Структура("Код, Наименование, НаименованиеПолное, КодАльфа2, КодАльфа3");
        ЗаполнитьЗначенияСвойств(Результат, СтрокаДанных);
    КонецЕсли;
    
    Возврат Результат;
КонецФункции

// Обновляет справочник стран мира по данным макета - классификатора.
// Идентификация существующих элементов в справочнике выполняется по полю Код.
//
// Параметры:
//    Добавлять - Булево - если Истина, то добавляются страны, которые есть в классификаторе,
//                         но отсутствуют в справочнике стран мира.
//
Процедура ОбновитьСтраныМираПоКлассификатору(Знач Добавлять = Ложь) Экспорт
    ВсеОшибки = "";
    
    Фильтр = Новый Структура("Код");
    
    // Сравнивать в запросе нельзя из-за возможной регистронезависимости базы данных.
    Для Каждого СтрокаКлассификатора Из ТаблицаКлассификатора() Цикл
        Фильтр.Код = СтрокаКлассификатора.Код;
        Выборка = Справочники.СтраныМира.Выбрать(,,Фильтр);
        СтранаНайдена = Выборка.Следующий();
        Если Не СтранаНайдена И Добавлять Тогда
            // Добавление страны
            Страна = Справочники.СтраныМира.СоздатьЭлемент();
        ИначеЕсли СтранаНайдена И (
                  Выборка.Наименование <> СтрокаКлассификатора.Наименование
              Или Выборка.КодАльфа2 <> СтрокаКлассификатора.КодАльфа2
              Или Выборка.КодАльфа3 <> СтрокаКлассификатора.КодАльфа3
              Или Выборка.НаименованиеПолное <> СтрокаКлассификатора.НаименованиеПолное
            ) Тогда
            // Изменение страны
            Страна = Выборка.ПолучитьОбъект();
        Иначе
            Продолжить;
        КонецЕсли;
        
        НачатьТранзакцию();
        Попытка
            Если Не Страна.ЭтоНовый() Тогда
                ЗаблокироватьДанныеДляРедактирования(Страна.Ссылка);
            КонецЕсли;
            ЗаполнитьЗначенияСвойств(Страна, СтрокаКлассификатора, "Код, Наименование, КодАльфа2, КодАльфа3, НаименованиеПолное");        
            Страна.ДополнительныеСвойства.Вставить("НеПроверятьУникальность");
            Страна.Записать();
            ЗафиксироватьТранзакцию();
        Исключение
            Инфо = ИнформацияОбОшибке();
            ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
                НСтр("ru='Ошибка записи страны мира %1 (код %2) при обновлении классификатора, %3'"),
                Выборка.Код, Выборка.Наименование, КраткоеПредставлениеОшибки(Инфо));
            ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(),
                УровеньЖурналаРегистрации.Ошибка,,,
                ТекстОшибки + Символы.ПС + ПодробноеПредставлениеОшибки(Инфо));
            ВсеОшибки = ВсеОшибки + Символы.ПС + ТекстОшибки;
            ОтменитьТранзакцию();
        КонецПопытки;
        
    КонецЦикла;
    
    Если Не ПустаяСтрока(ВсеОшибки) Тогда
        ВызватьИсключение СокрЛП(ВсеОшибки);
    КонецЕсли;
КонецПроцедуры

// Создает или возвращает существующую ссылку по данным классификатора.
//
// Параметры:
//    Отбор - Структура - содержит поле:
//          * Код - Строка - для поиска страны в классификаторе.
//    Данные - Структура - для заполнения одноименных оставшихся полей создаваемого объекта.
//
// Возвращаемое значение:
//     СправочникСсылка.СтраныМира - ссылка на созданный элемент.
//
Функция СсылкаПоДаннымКлассификатора(Знач Отбор, Знач ДополнительныеДанные = Неопределено) Экспорт
    
    // Убеждаемся, что страна есть в классификаторе.
    ДанныеПоиска = ДанныеКлассификатораСтранМираПоКоду(Отбор.Код);
    Если ДанныеПоиска=Неопределено Тогда
        ВызватьИсключение НСтр("ru='Некорректный код страны мира для поиска в классификаторе'");
    КонецЕсли;
    
    // Проверяем на существование в справочнике по данным классификатора.
    ДанныеПоиска = ДанныеСтраныМира(ДанныеПоиска.Код, ДанныеПоиска.Наименование);
    Результат = ДанныеПоиска.Ссылка;
    Если Не ЗначениеЗаполнено(Результат) Тогда
        ОбъектСтраны = Справочники.СтраныМира.СоздатьЭлемент();
        ЗаполнитьЗначенияСвойств(ОбъектСтраны, ДанныеПоиска);
        Если ДополнительныеДанные<>Неопределено Тогда
            ЗаполнитьЗначенияСвойств(ОбъектСтраны, ДополнительныеДанные);
        КонецЕсли;
        ОбъектСтраны.Записать();
        Результат = ОбъектСтраны.Ссылка;
    КонецЕсли;
    
    Возврат Результат;
КонецФункции

#КонецЕсли

// Возвращает флаг возможности добавления и изменения элементов.
//
Функция ЕстьПравоДобавления() Экспорт
    
    Возврат ПравоДоступа("Добавление", Метаданные.Справочники.СтраныМира);
    
КонецФункции

// Возвращает поля поиска в порядке предпочтения для справочника стран мира.
//
// Возвращаемое значение:
//    Массив - содержит структуры с полями:
//      * Имя                 - Строка - имя реквизита поиска.
//      * ШаблонПредставления - Строка - шаблон для формирования значения представления по именам реквизитов,
//                                       например: "%1.Наименование (%1.Код)". Здесь "Наименование" и "Код" - имена
//                                       реквизитов,
//                                       "%1" - заполнитель для передачи псевдонима таблицы.
//
Функция ПоляПоиска() Экспорт
    Результат = Новый Массив;
    СписокПолей = Справочники.СтраныМира.ПустаяСсылка().Метаданные().ВводПоСтроке;
    ГраницаПолей = СписокПолей.Количество() - 1;
    ВсеИменаСтрокой = "";
    
    ПредставлениеРазделителя = ", ";
    РазделительПредставлений = " + """ + ПредставлениеРазделителя + """ + ";
    
    Для Индекс=0 По ГраницаПолей Цикл
        ИмяПоля = СписокПолей[Индекс].Имя;
        ВсеИменаСтрокой = ВсеИменаСтрокой + "," + ИмяПоля;
        
        ШаблонПредставления = "%1." + ИмяПоля;
        
        ОстальныеПоля = "";
        Для Позиция=0 По ГраницаПолей Цикл
            Если Позиция<>Индекс Тогда
                ОстальныеПоля = ОстальныеПоля + РазделительПредставлений + СписокПолей[Позиция].Имя;
            КонецЕсли;
        КонецЦикла;
        Если Не ПустаяСтрока(ОстальныеПоля) Тогда
            ШаблонПредставления = ШаблонПредставления
                + " + "" ("" + "
                + "%1." + Сред(ОстальныеПоля, СтрДлина(РазделительПредставлений) + 1)
                + " + "")""";
        КонецЕсли;
        
        Результат.Добавить(
            Новый Структура("Имя, ШаблонПредставления", ИмяПоля, ШаблонПредставления)
        );
    КонецЦикла;
    
    Возврат Новый Структура("СписокПолей, ИменаПолейСтрокой", Результат, Сред(ВсеИменаСтрокой, 2));
КонецФункции

// Возвращает полные данные ОКСМ классификатора.
//
// Возвращаемое значение:
//     ТаблицаЗначений - данные классификатора с колонками:
//         * Код                - Строка - данные страны.
//         * Наименование       - Строка - данные страны.
//         * НаименованиеПолное - Строка - данные страны.
//         * КодАльфа2          - Строка - данные страны.
//         * КодАльфа3          - Строка - данные страны.
//
//     Таблица значений проиндексирована по полям "Код", "Наименование".
//
Функция ТаблицаКлассификатора() Экспорт
    Макет = Справочники.СтраныМира.ПолучитьМакет("Классификатор");
    
    Чтение = Новый ЧтениеXML;
    Чтение.УстановитьСтроку(Макет.ПолучитьТекст());
    
    Возврат СериализаторXDTO.ПрочитатьXML(Чтение);
КонецФункции

#КонецОбласти

#Область ОбработчикиСобытий

Процедура ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка)
    Если Не СтандартнаяОбработка Тогда
        // Обрабатывается в другом месте.
        Возврат;
        
    ИначеЕсли Не Параметры.Свойство("РазрешитьДанныеКлассификатора") Тогда
        // Поведение по умолчанию, подбор только справочника.
        Возврат;
        
    ИначеЕсли Истина<>Параметры.РазрешитьДанныеКлассификатора Тогда
        // Подбор классификатора отключен, поведение по умолчанию.
        Возврат;
        
    ИначеЕсли Не ЕстьПравоДобавления() Тогда
        // Нет прав на добавление страны мира, поведение по умолчанию.
        Возврат;
        
    КонецЕсли;
    
    // Будем имитировать поведение платформы - поиск по всем доступным полям поиска с формированием подобного списка.
    
    // Подразумеваем, что поля справочника и классификатора совпадают, за исключением отсутствующего в классификаторе поля
    // "Ссылка".
    Запрос = Новый Запрос;
    Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
    
    ПрефиксПараметраОтбора = "ПараметрыОтбора";
    
    // Общий отбор по параметрам
    ШаблонОтбора = "ИСТИНА";
    Для Каждого КлючЗначение Из Параметры.Отбор Цикл
        ЗначениеПоля = КлючЗначение.Значение;
        ИмяПоля      = КлючЗначение.Ключ;
        ИмяПараметра = ПрефиксПараметраОтбора + ИмяПоля;
        
        Если ТипЗнч(ЗначениеПоля)=Тип("Массив") Тогда
            ШаблонОтбора = ШаблонОтбора + " И %1." + ИмяПоля + " В (&" + ИмяПараметра + ")";
        Иначе
            ШаблонОтбора = ШаблонОтбора + " И %1." + ИмяПоля + " = &" + ИмяПараметра;
        КонецЕсли;
        
        Запрос.УстановитьПараметр(ИмяПараметра, КлючЗначение.Значение);
    КонецЦикла;
    
    // Дополнительные отборы
    Если Параметры.Свойство("ВыборГруппИЭлементов") Тогда
        Если Параметры.ВыборГруппИЭлементов = ИспользованиеГруппИЭлементов.Группы Тогда
            ШаблонОтбора = ШаблонОтбора + " И %1.ЭтоГруппа";
            
        ИначеЕсли Параметры.ВыборГруппИЭлементов = ИспользованиеГруппИЭлементов.Элементы Тогда
            ШаблонОтбора = ШаблонОтбора + " И (НЕ %1.ЭтоГруппа)";
            
        КонецЕсли;
    КонецЕсли;
    
    // Источники данных
    Если (Параметры.Свойство("ТолькоДанныеКлассификатора") И Параметры.ТолькоДанныеКлассификатора) Тогда
        // Запрос только по классификатору.
        ШаблонЗапроса = "
            |ВЫБРАТЬ ПЕРВЫЕ 50
            |    NULL                       КАК Ссылка,
            |    Классификатор.Код          КАК Код,
            |    Классификатор.Наименование КАК Наименование,
            |    ЛОЖЬ                       КАК ПометкаУдаления,
            |    %2                         КАК Представление
            |ИЗ
            |    Классификатор КАК Классификатор
            |ГДЕ
            |    Классификатор.%1 ПОДОБНО &СтрокаПоиска
            |    И (
            |        " + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонОтбора, "Классификатор") + "
            |    )
            |УПОРЯДОЧИТЬ ПО
            |    Классификатор.%1
            |";
    Иначе
        // Запрос и по справочнику и по классификатору.
        ШаблонЗапроса = "
            |ВЫБРАТЬ ПЕРВЫЕ 50
            |    СтраныМира.Ссылка                                             КАК Ссылка,
            |    ЕСТЬNULL(СтраныМира.Код, Классификатор.Код)                   КАК Код,
            |    ЕСТЬNULL(СтраныМира.Наименование, Классификатор.Наименование) КАК Наименование,
            |    ЕСТЬNULL(СтраныМира.ПометкаУдаления, ЛОЖЬ)                    КАК ПометкаУдаления,
            |
            |    ВЫБОР КОГДА СтраныМира.Ссылка ЕСТЬ NULL ТОГДА
            |        %2
            |    ИНАЧЕ
            |        %3
            |    КОНЕЦ КАК Представление
            |
            |ИЗ
            |    Справочник.СтраныМира КАК СтраныМира
            |ПОЛНОЕ СОЕДИНЕНИЕ
            |    Классификатор
            |ПО
            |    Классификатор.Код = СтраныМира.Код
            |    И Классификатор.Наименование = СтраныМира.Наименование
            |ГДЕ
            |    (СтраныМира.%1 ПОДОБНО &СтрокаПоиска ИЛИ Классификатор.%1 ПОДОБНО &СтрокаПоиска)
            |    И (" + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонОтбора, "Классификатор") + ")
            |    И (" + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонОтбора, "СтраныМира") + ")
            |
            |УПОРЯДОЧИТЬ ПО
            |    ЕСТЬNULL(СтраныМира.%1, Классификатор.%1)
            |";
    КонецЕсли;
    
    ИменаПолей = ПоляПоиска();
    
    // Код + Наименование - ключевые поля соответствия справочника классификатору. Их обрабатываем всегда.
    ИменаПолейСтрокой = "," + СтрЗаменить(ИменаПолей.ИменаПолейСтрокой, " ", "");
    ИменаПолейСтрокой = СтрЗаменить(ИменаПолейСтрокой, ",Код", "");
    ИменаПолейСтрокой = СтрЗаменить(ИменаПолейСтрокой, ",Наименование", "");
    
    Запрос.Текст = "
        |ВЫБРАТЬ
        |    Код, Наименование " + ИменаПолейСтрокой + "
        |ПОМЕСТИТЬ
        |    Классификатор
        |ИЗ
        |    &Классификатор КАК Классификатор
        |ИНДЕКСИРОВАТЬ ПО
        |    Код, Наименование
        |    " + ИменаПолейСтрокой + "
        |";
    Запрос.УстановитьПараметр("Классификатор", ТаблицаКлассификатора());
    Запрос.Выполнить();
    Запрос.УстановитьПараметр("СтрокаПоиска", ЭкранироватьСимволыПодобия(Параметры.СтрокаПоиска) + "%");
    
    Для Каждого ДанныеПоля Из ИменаПолей.СписокПолей Цикл
        Запрос.Текст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонЗапроса,
            ДанныеПоля.Имя,
            СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ДанныеПоля.ШаблонПредставления, "Классификатор"),
            СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ДанныеПоля.ШаблонПредставления, "СтраныМира"),
        );
        
        Результат = Запрос.Выполнить();
        Если Не Результат.Пустой() Тогда
            ДанныеВыбора = Новый СписокЗначений;
            СтандартнаяОбработка = Ложь;
            
            Выборка = Результат.Выбрать();
            Пока Выборка.Следующий() Цикл
                Если ЗначениеЗаполнено(Выборка.Ссылка) Тогда
                    // Данные справочника
                    ЭлементВыбора = Выборка.Ссылка;
                Иначе
                    // Данные классификатора
                    РезультатВыбора = Новый Структура("Код, Наименование",
                        Выборка.Код, Выборка.Наименование
                    );
                    
                    ЭлементВыбора = Новый Структура("Значение, ПометкаУдаления, Предупреждение",
                        РезультатВыбора, Выборка.ПометкаУдаления, Неопределено,
                    );
                КонецЕсли;
                
                ДанныеВыбора.Добавить(ЭлементВыбора, Выборка.Представление);
            КонецЦикла;
        
            Прервать;
        КонецЕсли;
    КонецЦикла;
    
КонецПроцедуры

#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда

////////////////////////////////////////////////////////////////////////////////
// Групповое изменение объектов.

// Возвращает список реквизитов, которые не нужно редактировать
// с помощью обработки группового изменения объектов.
//
Функция РеквизитыНеРедактируемыеВГрупповойОбработке() Экспорт
    
    Результат = Новый Массив;
    Результат.Добавить("*");
    Возврат Результат;
    
КонецФункции


////////////////////////////////////////////////////////////////////////////////
// Загрузка данных из файла

// Запрещает загрузку данных в этот справочник из подсистемы "ЗагрузкаДанныхИзФайла".
// Т.к. данный справочник реализует свой метод загрузки данные из макета.
//
Функция ИспользоватьЗагрузкуДанныхИзФайла() Экспорт
    Возврат Ложь;
КонецФункции


#КонецЕсли

#КонецОбласти

#Область СлужебныеПроцедурыИФункции

#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда

// Приводит код страны к единому виду - строка длиной три символа.
//
Функция КодСтраныМира(Знач КодСтраны)
    
    Если ТипЗнч(КодСтраны)=Тип("Число") Тогда
        Возврат Формат(КодСтраны, "ЧЦ=3; ЧН=; ЧВН=; ЧГ=");
    КонецЕсли;
    
    Возврат Прав("000" + КодСтраны, 3);
КонецФункции

// Возвращает строку в кавычках.
//
Функция КонтрольКавычекВСтроке(Знач Строка)
    Возврат """" + СтрЗаменить(Строка, """", """""") + """";
КонецФункции

#КонецЕсли

// Экранирует символы для использования в функции запроса ПОДОБНО.
//
Функция ЭкранироватьСимволыПодобия(Знач Текст, Знач СпецСимвол = "\")
    Результат = Текст;
    СимволыПодобия = "%_[]^" + СпецСимвол;
    
    Для Позиция=1 По СтрДлина(СимволыПодобия) Цикл
        ТекущийСимвол = Сред(СимволыПодобия, Позиция, 1);
        Результат = СтрЗаменить(Результат, ТекущийСимвол, СпецСимвол + ТекущийСимвол);
    КонецЦикла;
    
    Возврат Результат;
КонецФункции

#КонецОбласти
37 Chameleon1980
 
11.05.16
16:50
вставьте в конфигуратор, например, для читабельности и гляньте:
да и вообще, похоже, тс'у это уже не интересно
38 LisaAlisa
 
12.05.16
08:33
(29) да я понимаю, что с 7.7 всё в порядке, пишу - на чьей стороне выявилась ошибка
39 LisaAlisa
 
12.05.16
08:37
(37) и меня извините за код. но функция МЕЖДУ директивами

#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда

#Область СлужебныйПрограммныйИнтерфейс

// Определяет данные страны по справочнику стран или классификатору ОКСМ.
//
// Параметры:
//    КодСтраны    - Строка, Число - код ОКСМ страны. Если не указано, то поиск по коду не производится.
//    Наименование - Строка        - наименование страны. Если не указано, то поиск по наименованию не производится.
//
// Возвращаемое значение:
//    Структура - поля:
//          * Код                - Строка - реквизит найденной страны.
//          * Наименование       - Строка - реквизит найденной страны.
//          * НаименованиеПолное - Строка - реквизит найденной страны.
//          * КодАльфа2          - Строка - реквизит найденной страны.
//          * КодАльфа3          - Строка - реквизит найденной страны.
//          * Ссылка             - СправочникаСсылка.СтраныМира - реквизит найденной страны.
//    Неопределено - страна не найдена.
//
Функция ДанныеСтраныМира(Знач КодСтраны = Неопределено, Знач Наименование = Неопределено) Экспорт
    
    Если КодСтраны=Неопределено И Наименование=Неопределено Тогда
        Возврат Неопределено;
    КонецЕсли;
    
    НормализованныйКод = КодСтраныМира(КодСтраны);
    Если КодСтраны=Неопределено Тогда
        УсловиеПоиска = "ИСТИНА";
        ФильтрКлассификатора = Новый Структура;
    Иначе
        УсловиеПоиска = "Код=" + КонтрольКавычекВСтроке(НормализованныйКод);
        ФильтрКлассификатора = Новый Структура("Код", НормализованныйКод);
    КонецЕсли;
    
    Если Наименование<>Неопределено Тогда
        УсловиеПоиска = УсловиеПоиска + " И Наименование=" + КонтрольКавычекВСтроке(Наименование);
        ФильтрКлассификатора.Вставить("Наименование", Наименование);
    КонецЕсли;
    
    Результат = Новый Структура("Ссылка, Код, Наименование, НаименованиеПолное, КодАльфа2, КодАльфа3");
    
    Запрос = Новый Запрос("
        |ВЫБРАТЬ ПЕРВЫЕ 1
        |    Ссылка, Код, Наименование, НаименованиеПолное, КодАльфа2, КодАльфа3
        |ИЗ
        |    Справочник.СтраныМира
        |ГДЕ
        |    " + УсловиеПоиска + "
        |УПОРЯДОЧИТЬ ПО
        |    Наименование
        |");
        
    Выборка = Запрос.Выполнить().Выбрать();
    Если Выборка.Следующий() Тогда
        ЗаполнитьЗначенияСвойств(Результат, Выборка);
        
    Иначе
        ДанныеКлассификатора = ТаблицаКлассификатора();
        СтрокиДанных = ДанныеКлассификатора.НайтиСтроки(ФильтрКлассификатора);
        Если СтрокиДанных.Количество()=0 Тогда
            Результат = Неопределено
        Иначе
            ЗаполнитьЗначенияСвойств(Результат, СтрокиДанных[0]);
        КонецЕсли;
        
    КонецЕсли;
    
    Возврат Результат;
КонецФункции

// Определяет данные страны по классификатору ОКСМ.
//
// Параметры:
//    Код - Строка, Число - код ОКСМ страны.
//    ТипКода - Строка - Варианты: КодСтраны (по умолчанию), Альфа2, Альфа3.
//
// Возвращаемое значение:
//    Структура - поля:
//          * Код                - Строка - реквизит найденной страны.
//          * Наименование       - Строка - реквизит найденной страны.
//          * НаименованиеПолное - Строка - реквизит найденной страны.
//          * КодАльфа2          - Строка - реквизит найденной страны.
//          * КодАльфа3          - Строка - реквизит найденной страны.
//          * Ссылка             - СправочникаСсылка.СтраныМира - ссылка на
//                                 элемент справочника страны мира, если он существует.
//    Неопределено - страна не найдена.
//
Функция ДанныеКлассификатораСтранМираПоКоду(Знач Код, ТипКода = "КодСтраны") Экспорт
    
    ДанныеКлассификатора = ТаблицаКлассификатора();
    Если СтрСравнить(ТипКода, "Альфа2") = 0 Тогда
        СтрокаДанных = ДанныеКлассификатора.Найти(ВРег(Код), "КодАльфа2");
    ИначеЕсли СтрСравнить(ТипКода, "Альфа3") = 0 Тогда
        СтрокаДанных = ДанныеКлассификатора.Найти(ВРег(Код), "КодАльфа3");
    Иначе
        СтрокаДанных = ДанныеКлассификатора.Найти(КодСтраныМира(Код), "Код");
    КонецЕсли;
    
    Если СтрокаДанных=Неопределено Тогда
        Результат = Неопределено;
    Иначе
        Результат = Новый Структура("Код, Наименование, НаименованиеПолное, КодАльфа2, КодАльфа3, Ссылка");
        ЗаполнитьЗначенияСвойств(Результат, СтрокаДанных);
        Страна = ДанныеСтраныМира(Результат.Код);
        Если Страна <> Неопределено Тогда
            Результат.Ссылка = Страна.Ссылка;
        КонецЕсли;
    КонецЕсли;
    
    Возврат Результат;
КонецФункции

// Определяет данные страны по классификатору ОКСМ.
//
// Параметры:
//    Наименование - Строка - наименование страны.
//
// Возвращаемое значение:
//    Структура - поля:
//          * Код                - Строка - реквизит найденной страны.
//          * Наименование       - Строка - реквизит найденной страны.
//          * НаименованиеПолное - Строка - реквизит найденной страны.
//          * КодАльфа2          - Строка - реквизит найденной страны.
//          * КодАльфа3          - Строка - реквизит найденной страны.
//    Неопределено - страна не найдена.
//
Функция ДанныеКлассификатораСтранМираПоНаименованию(Знач Наименование) Экспорт
    ДанныеКлассификатора = ТаблицаКлассификатора();
    СтрокаДанных = ДанныеКлассификатора.Найти(Наименование, "Наименование");
    Если СтрокаДанных=Неопределено Тогда
        Результат = Неопределено;
    Иначе
        Результат = Новый Структура("Код, Наименование, НаименованиеПолное, КодАльфа2, КодАльфа3");
        ЗаполнитьЗначенияСвойств(Результат, СтрокаДанных);
    КонецЕсли;
    
    Возврат Результат;
КонецФункции

// Обновляет справочник стран мира по данным макета - классификатора.
// Идентификация существующих элементов в справочнике выполняется по полю Код.
//
// Параметры:
//    Добавлять - Булево - если Истина, то добавляются страны, которые есть в классификаторе,
//                         но отсутствуют в справочнике стран мира.
//
Процедура ОбновитьСтраныМираПоКлассификатору(Знач Добавлять = Ложь) Экспорт
    ВсеОшибки = "";
    
    Фильтр = Новый Структура("Код");
    
    // Сравнивать в запросе нельзя из-за возможной регистронезависимости базы данных.
    Для Каждого СтрокаКлассификатора Из ТаблицаКлассификатора() Цикл
        Фильтр.Код = СтрокаКлассификатора.Код;
        Выборка = Справочники.СтраныМира.Выбрать(,, Фильтр);
        СтранаНайдена = Выборка.Следующий();
        Если Не СтранаНайдена И Добавлять Тогда
            // Добавление страны
            Страна = Справочники.СтраныМира.СоздатьЭлемент();
        ИначеЕсли СтранаНайдена И (
            Выборка.Наименование <> СтрокаКлассификатора.Наименование
            Или Выборка.КодАльфа2 <> СтрокаКлассификатора.КодАльфа2
            Или Выборка.КодАльфа3 <> СтрокаКлассификатора.КодАльфа3
            Или Выборка.НаименованиеПолное <> СтрокаКлассификатора.НаименованиеПолное) Тогда
            // Изменение страны
            Страна = Выборка.ПолучитьОбъект();
        Иначе
            Продолжить;
        КонецЕсли;
        
        НачатьТранзакцию();
        Попытка
            Если Не Страна.ЭтоНовый() Тогда
                ЗаблокироватьДанныеДляРедактирования(Страна.Ссылка);
            КонецЕсли;
            ЗаполнитьЗначенияСвойств(Страна, СтрокаКлассификатора, "Код, Наименование, КодАльфа2, КодАльфа3, НаименованиеПолное");        
            Страна.ДополнительныеСвойства.Вставить("НеПроверятьУникальность");
            Страна.Записать();
            ЗафиксироватьТранзакцию();
        Исключение
            Инфо = ИнформацияОбОшибке();
            ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru='Ошибка записи страны мира %1 (код %2) при обновлении классификатора, %3'"),
                Выборка.Код, Выборка.Наименование, КраткоеПредставлениеОшибки(Инфо));
            ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(),
                УровеньЖурналаРегистрации.Ошибка,,,
                ТекстОшибки + Символы.ПС + ПодробноеПредставлениеОшибки(Инфо));
            ВсеОшибки = ВсеОшибки + Символы.ПС + ТекстОшибки;
            ОтменитьТранзакцию();
        КонецПопытки;
        
    КонецЦикла;
    
    Если Не ПустаяСтрока(ВсеОшибки) Тогда
        ВызватьИсключение СокрЛП(ВсеОшибки);
    КонецЕсли;
КонецПроцедуры

// Создает или возвращает существующую ссылку по данным классификатора.
//
// Параметры:
//    Отбор - Структура - содержит поле:
//          * Код - Строка - для поиска страны в классификаторе.
//    Данные - Структура - для заполнения одноименных оставшихся полей создаваемого объекта.
//
// Возвращаемое значение:
//     СправочникСсылка.СтраныМира - ссылка на созданный элемент.
//
Функция СсылкаПоДаннымКлассификатора(Знач Отбор, Знач ДополнительныеДанные = Неопределено) Экспорт
    
    // Убеждаемся, что страна есть в классификаторе.
    ДанныеПоиска = ДанныеКлассификатораСтранМираПоКоду(Отбор.Код);
    Если ДанныеПоиска=Неопределено Тогда
        ВызватьИсключение НСтр("ru='Некорректный код страны мира для поиска в классификаторе'");
    КонецЕсли;
    
    // Проверяем на существование в справочнике по данным классификатора.
    ДанныеПоиска = ДанныеСтраныМира(ДанныеПоиска.Код, ДанныеПоиска.Наименование);
    Результат = ДанныеПоиска.Ссылка;
    Если Не ЗначениеЗаполнено(Результат) Тогда
        ОбъектСтраны = Справочники.СтраныМира.СоздатьЭлемент();
        ЗаполнитьЗначенияСвойств(ОбъектСтраны, ДанныеПоиска);
        Если ДополнительныеДанные<>Неопределено Тогда
            ЗаполнитьЗначенияСвойств(ОбъектСтраны, ДополнительныеДанные);
        КонецЕсли;
        ОбъектСтраны.Записать();
        Результат = ОбъектСтраны.Ссылка;
    КонецЕсли;
    
    Возврат Результат;
КонецФункции

// Возвращает флаг возможности добавления и изменения элементов.
//
Функция ЕстьПравоДобавления() Экспорт
    
    Возврат ПравоДоступа("Добавление", Метаданные.Справочники.СтраныМира);
    
КонецФункции

// Возвращает поля поиска в порядке предпочтения для справочника стран мира.
//
// Возвращаемое значение:
//    Массив - содержит структуры с полями:
//      * Имя                 - Строка - имя реквизита поиска.
//      * ШаблонПредставления - Строка - шаблон для формирования значения представления по именам реквизитов,
//                                       например: "%1.Наименование (%1.Код)". Здесь "Наименование" и "Код" - имена
//                                       реквизитов,
//                                       "%1" - заполнитель для передачи псевдонима таблицы.
//
Функция ПоляПоиска()
    Результат = Новый Массив;
    СписокПолей = Справочники.СтраныМира.ПустаяСсылка().Метаданные().ВводПоСтроке;
    ГраницаПолей = СписокПолей.Количество() - 1;
    ВсеИменаСтрокой = "";
    
    ПредставлениеРазделителя = ", ";
    РазделительПредставлений = " + """ + ПредставлениеРазделителя + """ + ";
    
    Для Индекс=0 По ГраницаПолей Цикл
        ИмяПоля = СписокПолей[Индекс].Имя;
        ВсеИменаСтрокой = ВсеИменаСтрокой + "," + ИмяПоля;
        
        ШаблонПредставления = "%1." + ИмяПоля;
        
        ОстальныеПоля = "";
        Для Позиция=0 По ГраницаПолей Цикл
            Если Позиция<>Индекс Тогда
                ОстальныеПоля = ОстальныеПоля + РазделительПредставлений + СписокПолей[Позиция].Имя;
            КонецЕсли;
        КонецЦикла;
        Если Не ПустаяСтрока(ОстальныеПоля) Тогда
            ШаблонПредставления = ШаблонПредставления
                + " + "" ("" + "
                + "%1." + Сред(ОстальныеПоля, СтрДлина(РазделительПредставлений) + 1)
                + " + "")""";
        КонецЕсли;
        
        Результат.Добавить(
            Новый Структура("Имя, ШаблонПредставления", ИмяПоля, ШаблонПредставления));
    КонецЦикла;
    
    Возврат Новый Структура("СписокПолей, ИменаПолейСтрокой", Результат, Сред(ВсеИменаСтрокой, 2));
КонецФункции

// Возвращает полные данные ОКСМ классификатора.
//
// Возвращаемое значение:
//     ТаблицаЗначений - данные классификатора с колонками:
//         * Код                - Строка - данные страны.
//         * Наименование       - Строка - данные страны.
//         * НаименованиеПолное - Строка - данные страны.
//         * КодАльфа2          - Строка - данные страны.
//         * КодАльфа3          - Строка - данные страны.
//
//     Таблица значений проиндексирована по полям "Код", "Наименование".
//
Функция ТаблицаКлассификатора() Экспорт
    Макет = Справочники.СтраныМира.ПолучитьМакет("Классификатор");
    
    Чтение = Новый ЧтениеXML;
    Чтение.УстановитьСтроку(Макет.ПолучитьТекст());
    
    Возврат СериализаторXDTO.ПрочитатьXML(Чтение);
КонецФункции

#КонецОбласти

#Область СлужебныеПроцедурыИФункции

// Приводит код страны к единому виду - строка длиной три символа.
//
Функция КодСтраныМира(Знач КодСтраны)
    
    Если ТипЗнч(КодСтраны)=Тип("Число") Тогда
        Возврат Формат(КодСтраны, "ЧЦ=3; ЧН=; ЧВН=; ЧГ=");
    КонецЕсли;
    
    Возврат Прав("000" + КодСтраны, 3);
КонецФункции

// Возвращает строку в кавычках.
//
Функция КонтрольКавычекВСтроке(Знач Строка)
    Возврат """" + СтрЗаменить(Строка, """", """""") + """";
КонецФункции

// Экранирует символы для использования в функции запроса ПОДОБНО.
//
Функция ЭкранироватьСимволыПодобия(Знач Текст, Знач СпецСимвол = "\")
    Результат = Текст;
    СимволыПодобия = "%_[]^" + СпецСимвол;
    
    Для Позиция=1 По СтрДлина(СимволыПодобия) Цикл
        ТекущийСимвол = Сред(СимволыПодобия, Позиция, 1);
        Результат = СтрЗаменить(Результат, ТекущийСимвол, СпецСимвол + ТекущийСимвол);
    КонецЦикла;
    
    Возврат Результат;
КонецФункции

#КонецОбласти

#КонецЕсли
40 Chameleon1980
 
12.05.16
08:54
(39) у вас правда - внутри

еще раз - я смотрел на 3.0.39.50

у мну снаружи
41 Chameleon1980
 
12.05.16
09:04
хотя, скорее, если конструкция не обернута директивами, то, наверное подразумеваются все режимы.

директива, наверное, только ограничивает

счас поем - попробую подключение
42 Chameleon1980
 
12.05.16
09:06
а не пробовали из 8.х к 8.х цепляться?
43 Chameleon1980
 
12.05.16
09:06
+и пробовать эту фукнцию
44 Chameleon1980
 
12.05.16
09:22
что-то мне кажется, что именно тот факт, что у вас эта функция внутри директив у вас и приводит к ошибке.

у меня вот:

//*****************************************************************************
Перем V8;
//*****************************************************************************
Процедура Сформировать()
    
    V8 = СоздатьОбъект("V83.Application");
    попытка
        V8.Connect("File=""D:\Базы 1С\BP 3_0_39_50 (demo)"";Usr=""Абдулов (директор)""");
        Сообщить("Подключились к базе");
    Исключение
        Сообщить("Не подключился!!!!");
    КонецПопытки;
    
    Сообщить("V8: "+V8);
    
    СпрСтраны8 = V8.Справочники.СтраныМира;
    
    ТабСтраны8 = СпрСтраны8.ТаблицаКлассификатора();
    
    Сообщить("ТабСтраны8: "+ТабСтраны8);
    
КонецПроцедуры
//*****************************************************************************
Процедура ПриЗакрытии()
    V8="";
КонецПроцедуры
//*****************************************************************************

в окне:

Подключились к базе
V8: OLE
ТабСтраны8: OLE
45 Chameleon1980
 
12.05.16
09:23
для теста:
попробуйте вынести за директивы эту функцию с другим именем и ее попробовать вызвать из 7.7

что-то мне подсказывает, что тут-то собака и порылась
46 Chameleon1980
 
12.05.16
09:34
даже вот это отрабатывает:

//*****************************************************************************
Перем V8;
//*****************************************************************************
Процедура Сформировать()
    
    V8 = СоздатьОбъект("V83.Application");
    попытка
        V8.Connect("File=""D:\Базы 1С\BP 3_0_39_50 (demo)"";Usr=""Абдулов (директор)""");
        Сообщить("Подключились к базе");
    Исключение
        Сообщить("Не подключился!!!!");
    КонецПопытки;
    
    Сообщить("V8: "+V8);
    
    СпрСтраны8 = V8.Справочники.СтраныМира;
                
// Возвращаемое значение:
//     ТаблицаЗначений - данные классификатора с колонками:
//         * Код                - Строка - данные страны.
//         * Наименование       - Строка - данные страны.
//         * НаименованиеПолное - Строка - данные страны.
//         * КодАльфа2          - Строка - данные страны.
//         * КодАльфа3          - Строка - данные страны.
//
//     Таблица значений проиндексирована по полям "Код", "Наименование".

    ТабСтраны8 = СпрСтраны8.ТаблицаКлассификатора();
    
    Сообщить("ТабСтраны8: "+ТабСтраны8);
    
    ТабСтраны8.ВыбратьСтроку();
    
КонецПроцедуры
//*****************************************************************************
Процедура ПриЗакрытии()
    V8="";
КонецПроцедуры
//*****************************************************************************


вот скрин:

http://pastenow.ru/NQLU
Программист всегда исправляет последнюю ошибку.