Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

OLE. Получить категории контрагентов из 7.7

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

    КонецЦикла


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

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

Когда вывожу код, ничего не меняется. Один и тот же код 15 раз. И, кстати, у меня СпрКатегории.Владелец = Неопределено
   Ёпрст
 
5 - 10.02.19 - 16:48
(4) Продолжить;
   Ёпрст
 
6 - 10.02.19 - 16:48
ну и так,
СпрКатегории.ВыбратьЭлементы(1);
   Slon747
 
7 - 10.02.19 - 16:53
(5) Последний "Продолжить" был лишний. Но он ничего не меняет.
(6) СпрКатегории.ВыбратьЭлементы(1) - не помогло.
   Ёпрст
 
8 - 10.02.19 - 16:55
весь код покажи и результат
   Slon747
 
9 - 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
И так, что кажет ?
 Сообщить("Контрагент: " + СпрКонтрагенты.Наименование + ". Категория: " + СпрКатегории.Код+""  ""+СпрКатегории.Владелец.Код);
   Slon747
 
15 - 10.02.19 - 17:17
Да, Категории не подчиненный. И вообще, нужно было читать справочник КатегорииКонтрагентов

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

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует