Имя: Пароль:
1C
1С v8
Как заполнять тип субконто при программном создании документа операции?
0 Fannasankh
 
18.04.16
12:07
Задача: заполнить документ ОперацииБух некоторыми записями.
Сложность возникает с записями у которых тип субконто один на несколько типов объектов. Например, поступление товаров и услуг и счет фактура имеют общий тип субконто "Счета-фактуры выданные".

Я сначала делаю таблицу всех доступных мне типов субконтов
Запрос = Новый Запрос;
        Запрос.Текст =
        "ВЫБРАТЬ
        |    ВидыСубконтоХозрасчетные.Ссылка,
        |    ВидыСубконтоХозрасчетные.ТипЗначения
        |ИЗ
        |    ПланВидовХарактеристик.ВидыСубконтоХозрасчетные КАК ВидыСубконтоХозрасчетные";
        
        Результат = Запрос.Выполнить();
        
        ТЗВидыСубконто = Результат.Выгрузить();
        ТЗВидыСубконтоРаздельно = Новый ТаблицаЗначений;
        ТЗВидыСубконтоРаздельно = ТЗВидыСубконто.СкопироватьКолонки();
        
        
        Для каждого стрОТ из ТЗВидыСубконто Цикл
            МассивТиповРазд = стрОТ.ТипЗначения.Типы();
            ии=0;
            Пока ии<МассивТиповРазд.Количество() Цикл
                стрРаздельно = ТЗВидыСубконтоРаздельно.Добавить();
                стрРаздельно.Ссылка = стрОТ.Ссылка;
                
                МассивТипов = Новый Массив;
                ТипРазд = МассивТиповРазд[ии];
                МассивТипов.Добавить(ТипРазд);
                ОписаниеТиповРазд = Новый ОписаниеТипов(МассивТипов);
                
                стрРаздельно.ТипЗначения = ОписаниеТиповРазд;
                
                ии=ии+1;
            КонецЦикла;
        КонецЦикла


Потом заполняю вот так
МассивТипов = Новый Массив;
                            ТипСуб = ТипЗнч(НайтиОбъект(стр[Измерение.Значение]));
                            МассивТипов.Добавить(ТипСуб);
                            ОписаниеТиповСубконто = Новый ОписаниеТипов(МассивТипов);
                            строкаСубконто = ТЗВидыСубконтоРаздельно.Найти(ОписаниеТиповСубконто,"ТипЗначения");
                            Если строкаСубконто <> Неопределено Тогда
                                
                                стрКорректировкаДт["СубконтоДт"].Вставить(строкаСубконто.Ссылка,НайтиОбъект(стр[Измерение.Значение]));
                                стрКорректировкаКт["СубконтоКт"].Вставить(строкаСубконто.Ссылка,НайтиОбъект(стр[Измерение.Значение]));
                    
                            КонецЕсли;


Получаю ошибку, что такой вид субконто не может быть использован. В чём ошибка?
1 hhhh
 
18.04.16
12:14
с типовой скопипасть
2 Fannasankh
 
18.04.16
12:15
(1) там такого нет. Там типы субконто указываются. А мне их нужно автоматически подбирать в зависимости от того, что мне попалось в строке.
3 asady
 
18.04.16
12:46
(2) не взлетит так - один и тот же тип данных может быть использован в разных субконто.
4 asady
 
18.04.16
12:48
(0) обычно эту задачу решаю с помощью примитивной таблицы соответствия
5 DTX 4th
 
18.04.16
12:49
ПланСчетовСсылка.<Имя плана счетов>.ВидыСубконто

ПланВидовХарактеристикСсылка.<Имя плана видов характеристик>.ТипЗначения.СодержитТип(ТипЗначения(Стр.Субконто))
6 Fannasankh
 
18.04.16
15:45
В общем с учетом, что это разовая операция и строк с ошибками не много, я решил грузить в режиме обмена данными и поправить руками.
2 + 2 = 3.9999999999999999999999999999999...