Форум на Kuban.ru (http://forums.kuban.ru/)
-   Территория 1С (http://forums.kuban.ru/f1040/)
-   -   Получить значение вида Субконто по OLE (http://forums.kuban.ru/f1040/poluchit-_znachenie_vida_subkonto_po_ole-5707649.html)

bvb 14.05.2014 15:59

Получить значение вида Субконто по OLE
 
Есть ссылка на Объект типа Cчет
плана счетов Хозрасчетный


COMСчет.ВидыСубконто.Количество(); - возвращает 3

а попытка получить вид субконто по OLE
ВидСубконто = Счет.ВидыСубконто[0].ВидСубконто;
возвращает ошибку "Получение элемента по индексу не определено"

DeiMos 14.05.2014 16:34

Процедура ОпределитьСубконто(опер)
тбзСуб.УдалитьСтроки();
колСуб = опер.Счет.КоличествоСубконто();
Для ном = 1 по колСуб Цикл
тбзСуб.НоваяСтрока();
тбзСуб.Номер = ном;
тбзСуб.ТипСуб = СокрЛП(опер.Счет.ВидСубконто(ном).ТипСубконто());
тбзСуб.Наименование = СокрЛП(опер.ПредставлениеСубконто(ном,0));

// Если субконто имеет тип - Перечисление
Если Лев(СокрЛП(тбзСуб.ТипСуб),12) = "Перечисление" Тогда
// т.к. конфигурация из типовой то перечисления должны быть идентичны
тбзСуб.Наименование = СокрЛП(опер.Субконто(ном).Идентификатор());

// Если субконто имеет тип - Справочник
ИначеЕсли Лев(СокрЛП(тбзСуб.ТипСуб),10) = "Справочник" Тогда
Если опер.Субконто(ном).Выбран() = 0 Тогда Продолжить КонецЕсли;
тбзСуб.Спр = НайтиЭлементОЛЕ(опер.Субконто(ном)).Спр.ТекущийЭлемент();

// Если субконто имеет тип - Документ
ИначеЕсли Лев(СокрЛП(тбзСуб.ТипСуб),8) = "Документ" Тогда
тбзСуб.Наименование = СокрЛП(опер.Субконто(ном).Вид());
Если ПустаяСтрока(тбзСуб.Наименование) = 1 Тогда Продолжить КонецЕсли;
тбзСуб.Док = ПеренестиДокумент(опер.Субконто(ном));
КонецЕсли

КонецЦикла;

КонецПроцедуры


А вызывается эта процедура так:
кодСчД = СокрЛП(оперОЛЕ.Дебет.Счет.Код);
Если ПустаяСтрока(кодСчД) = 0 Тогда
опер.Дебет.Счет = СчетПоКоду(кодСчД);
ОпределитьСубконто(оперОЛЕ.Дебет);


Ну или так:
кодСчК = СокрЛП(оперОЛЕ.Кредит.Счет.Код);
Если ПустаяСтрока(кодСчК) = 0 Тогда
опер.Кредит.Счет = СчетПоКоду(кодСчК);
ОпределитьСубконто(оперОЛЕ.Кредит);

DeiMos 14.05.2014 16:37

Ну, если совсем всё просто сказать, то обращайся не по индексу, а по номеру (т.е. скобки - круглые):
Для ном = 1 по колСуб Цикл
тбзСуб.НоваяСтрока();
тбзСуб.Номер = ном;
тбзСуб.ТипСуб = СокрЛП(опер.Счет.ВидСубконто(ном).

bvb 14.05.2014 17:34

Это по моему код для 7.7

DeiMos 15.05.2014 06:55

3-bvb > Да. Это для 7.7

А тебе для чего надо?
Указывать надо в теме вообще-то...

Сорри, для 8.х - не помогу.
1Сv8 - не знаю и знать не хочу.


Текущее время: 04:47. Часовой пояс GMT +3.