Имя: Пароль:
1C
1С v8
OLE. Получить категории контрагентов из 7.7
0 Slon747
 
10.02.19
15:25
СпрКонтрагенты = ВнешняяБаза.CreateObject("Справочник.Контрагенты");
    СпрКонтрагенты.ПорядокНаименований();
    СпрКонтрагенты.ВыбратьЭлементы();
    
    Пока СпрКонтрагенты.ПолучитьЭлемент() = 1 Цикл
        
        Если СпрКонтрагенты.ЭтоГруппа() = 1 Тогда
            Продолжить;
        КонецЕсли;
    
        СпрКатегории = ВнешняяБаза.CreateObject("Справочник.Категории");
        СпрКатегории.ИспользоватьВладельца(СпрКонтрагенты.ТекущийЭлемент());
        СпрКатегории.ВыбратьЭлементы();
        
        Пока СпрКатегории.ПолучитьЭлемент() = 1 Цикл
            Сообщить("Контрагент: " + СпрКонтрагенты.Наименование + ". Категория: " + СпрКатегории.Наименование);
            Продолжить;
        КонецЦикла;

    КонецЦикла


В результате для каждого контрагента выводятся все существующие категории из 7.7, как будто не установлен отбор по владельцу.
Что не так и как исправить?
1 ДенисЧ
 
10.02.19
15:31
СпрКатегории.ИспользоватьВладельца(СпрКонтрагенты.ТекущийЭлемент());

Вот тут правь
2 Slon747
 
10.02.19
16:26
(1) Нельзя передавать COMОбъект?
А что указать?
3 Ёпрст
 
гуру
10.02.19
16:33
(2) все можно.
И твой код верный. Только ты выводишь "первую" категорию у выбранного владельца. Выводи код, а не наименование (если конечно, серии кодов не в пределах подчинения у тебя) увидишь, что категории твои разные.
Ну или так:

            Сообщить("Контрагент: " + СпрКонтрагенты.Код+ ". Категория.Владелец: " + СпрКатегории.Владелец.Код);
4 Slon747
 
10.02.19
16:46
(3) Не понял. Почему только первую вывожу?
У меня для каждого контрагенты выводится 15 строк с разными категориями, хотя там у контрагентов по одной категории.

Когда вывожу код, ничего не меняется. Один и тот же код 15 раз. И, кстати, у меня СпрКатегории.Владелец = Неопределено
5 Ёпрст
 
гуру
10.02.19
16:48
(4) Продолжить;
6 Ёпрст
 
гуру
10.02.19
16:48
ну и так,
СпрКатегории.ВыбратьЭлементы(1);
7 Slon747
 
10.02.19
16:53
(5) Последний "Продолжить" был лишний. Но он ничего не меняет.
(6) СпрКатегории.ВыбратьЭлементы(1) - не помогло.
8 Ёпрст
 
гуру
10.02.19
16:55
весь код покажи и результат
9 Slon747
 
10.02.19
16:57
(8)
    СпрКонтрагенты = ВнешняяБаза.CreateObject("Справочник.Контрагенты");
    СпрКонтрагенты.ПорядокНаименований();
    СпрКонтрагенты.ВыбратьЭлементы();
    
    Пока СпрКонтрагенты.ПолучитьЭлемент() = 1 Цикл
        
        ОбработкаПрерыванияПользователя();
        Если СпрКонтрагенты.ЭтоГруппа() = 1 Тогда
            Продолжить;
        КонецЕсли;
    
        СпрКатегории = ВнешняяБаза.CreateObject("Справочник.Категории");
        СпрКатегории.ИспользоватьВладельца(СпрКонтрагенты.ТекущийЭлемент());
        СпрКатегории.ВыбратьЭлементы(1);
        
        Пока СпрКатегории.ПолучитьЭлемент() = 1 Цикл
            Сообщить("Контрагент: " + СпрКонтрагенты.Наименование + ". Категория: " + СпрКатегории.Наименование);
        КонецЦикла;

    КонецЦикла


Контрагент: Диляра Ходжиева. Категория: Категории контрагентов
Контрагент: Диляра Ходжиева. Категория: .
Контрагент: Диляра Ходжиева. Категория: Визажист
Контрагент: Диляра Ходжиева. Категория: Депиляция
Контрагент: Диляра Ходжиева. Категория: Директор/админ. салона
Контрагент: Диляра Ходжиева. Категория: Другие города
Контрагент: Диляра Ходжиева. Категория: другое
Контрагент: Диляра Ходжиева. Категория: Косметолог
Контрагент: Диляра Ходжиева. Категория: Магазин/учебная студия
Контрагент: Диляра Ходжиева. Категория: Мастер маникюра
Контрагент: Диляра Ходжиева. Категория: Мастер-парикмахер
Контрагент: Диляра Ходжиева. Категория: Поставщики
Контрагент: Диляра Ходжиева. Категория: Преподаватель-парикмахер
Контрагент: Диляра Ходжиева. Категория: Розничный
Контрагент: Диляра Ходжиева. Категория: Салон красоты
Контрагент: Диляра Ходжиева. Категория: Учебный центр
Контрагент: Диляра Ходжиева. Категория: Хозяин салона
Контрагент: Диляра Ходжиева. Категория: Категории товаров
Контрагент: Шадрина Светлана. Категория: Категории контрагентов
Контрагент: Шадрина Светлана. Категория: .
Контрагент: Шадрина Светлана. Категория: Визажист
Контрагент: Шадрина Светлана. Категория: Депиляция
Контрагент: Шадрина Светлана. Категория: Директор/админ. салона
Контрагент: Шадрина Светлана. Категория: Другие города
Контрагент: Шадрина Светлана. Категория: другое
Контрагент: Шадрина Светлана. Категория: Косметолог
Контрагент: Шадрина Светлана. Категория: Магазин/учебная студия
Контрагент: Шадрина Светлана. Категория: Мастер маникюра
Контрагент: Шадрина Светлана. Категория: Мастер-парикмахер
Контрагент: Шадрина Светлана. Категория: Поставщики
Контрагент: Шадрина Светлана. Категория: Преподаватель-парикмахер
Контрагент: Шадрина Светлана. Категория: Розничный
Контрагент: Шадрина Светлана. Категория: Салон красоты
Контрагент: Шадрина Светлана. Категория: Учебный центр
Контрагент: Шадрина Светлана. Категория: Хозяин салона
Контрагент: Шадрина Светлана. Категория: Категории товаров

и т.д.
10 Ёпрст
 
гуру
10.02.19
16:58
и есть уверенность, что категории имеют владельцем именно справочник клиентосво ? А не номенклатуру, к примеру ?
11 Ёпрст
 
гуру
10.02.19
16:59
еще и из под снеговика..
12 Ёпрст
 
гуру
10.02.19
17:03
че возвращает
Метаданные.Справочник("Категории").Владелец.Выбран() у тебя ?
13 Ёпрст
 
гуру
10.02.19
17:03
справочник поди, ни разу не подчиненный
14 Ёпрст
 
гуру
10.02.19
17:04
И так, что кажет ?
Сообщить("Контрагент: " + СпрКонтрагенты.Наименование + ". Категория: " + СпрКатегории.Код+""  ""+СпрКатегории.Владелец.Код);
15 Slon747
 
10.02.19
17:17
Да, Категории не подчиненный. И вообще, нужно было читать справочник КатегорииКонтрагентов

Всё получилось.
Большое спасибо!
16 Ёпрст
 
гуру
10.02.19
17:29
)
17 Kigo_Kigo
 
10.02.19
21:38
И еще в цикле каждай раз СпрКатегории = ВнешняяБаза.CreateObject("Справочник.Категории"); моветон
Основная теорема систематики: Новые системы плодят новые проблемы.