Имя: Пароль:
1C
1С v8
КД2 перенос Субконто
0 krasnodar95
 
24.05.13
14:33
Из бп 77 в бп 82 переношу обортоты за период по дт76.АВ кт68.2. В пко формирую ТЗ:

ВыборкаДанных=СоздатьОбъект("ТаблицаЗначений");
ВыборкаДанных.НоваяКолонка("Хозрасчетный");
ВыборкаДанных.НоваяСтрока();
ВыборкаДанных.Хозрасчетный=СоздатьОбъект("ТаблицаЗначений");
ВыборкаДанных.Хозрасчетный.НоваяКолонка("СубконтоДт");
ВыборкаДанных.Хозрасчетный.НоваяКолонка("Сумма");
ВыборкаДанных.Хозрасчетный.НоваяКолонка("СчетДт");
ВыборкаДанных.Хозрасчетный.НоваяКолонка("СчетКт");

БухИтоги=СоздатьОбъект("БухгалтерскиеИтоги");
БухИтоги.ИспользоватьСубконто(ВидыСубконто.Контрагенты);
БухИтоги.ИспользоватьСубконто(ВидыСубконто.СчетаФактурыВыданные);
БухИтоги.ВыполнитьЗапрос(ДатаНачала, ДатаОкончания, "76.АВ", "68.2",,2,,);
БухИтоги.ВыбратьСубконто(ВидыСубконто.Контрагенты);
Пока БухИтоги.ПолучитьСубконто()=1 Цикл
   БухИтоги.ВыбратьСубконто(ВидыСубконто.СчетаФактурыВыданные);
   Пока БухИтоги.ПолучитьСубконто()=1 Цикл
       ВыборкаДанных.Хозрасчетный.НоваяСтрока();
       
       ВыборкаДанных.Хозрасчетный.СчетДт=СоздатьОбъект("Счет");
       ВыборкаДанных.Хозрасчетный.СчетДт.НайтиПоКоду("76.АВ");
       ВыборкаДанных.Хозрасчетный.СчетКт=СоздатьОбъект("Счет");
       ВыборкаДанных.Хозрасчетный.СчетКт.НайтиПоКоду("68.2");
       
       ВыборкаДанных.Хозрасчетный.СубконтоДт=СоздатьОбъект("ТаблицаЗначений");
               
       ВыборкаДанных.Хозрасчетный.СубконтоДт.НоваяКолонка("Ключ");
       ВыборкаДанных.Хозрасчетный.СубконтоДт.НоваяКолонка("Значение");
       ВыборкаДанных.Хозрасчетный.СубконтоДт.НоваяСтрока();
       ВыборкаДанных.Хозрасчетный.СубконтоДт.Ключ=ВидыСубконто.Контрагенты;
       ВыборкаДанных.Хозрасчетный.СубконтоДт.Значение=БухИтоги.Субконто(1);
       ВыборкаДанных.Хозрасчетный.СубконтоДт.НоваяСтрока();
       ВыборкаДанных.Хозрасчетный.СубконтоДт.Ключ=ВидыСубконто.СчетаФактурыВыданные;
       ВыборкаДанных.Хозрасчетный.СубконтоДт.Значение=БухИтоги.Субконто(2);
       ВыборкаДанных.Хозрасчетный.Сумма=БухИтоги.ДО();
   КонецЦикла;
КонецЦикла;

Еще я создал ПКО для СчетаФактурыВыданные, Контрагенты и Хозрасчетный(для плана счетов) при выгрузке из 77 пишет:

Возврат мТаблицаПравилКонвертацииОбъектов.ПолучитьЗначение(НомерПКО, Реквизит);
{D:\1С\БАЗЫ\ПЕРЕНОС77В82\ОБРАБОТКАДЛЯ77.ERT(2042)}: Номер за пределами значения!

Я предполагаю что это потому что я не смог связать субконто с создаными ПКО, а как это сделать не знаю. Если выгружать без субконто то все работает.
1 krasnodar95
 
24.05.13
14:34
"Из бп 77 в бп 82 переношу обортоты за период по дт76.АВ кт68.2. В пко формирую ТЗ: "-извиняюсь не в ПКО а в ПВД
2 krasnodar95
 
24.05.13
14:53
Наааароооод!!!
3 dk
 
24.05.13
15:01
в ПКС Субконто не указывал жестко ПКО?
4 krasnodar95
 
24.05.13
15:03
(3) Неа, можно пример?
5 dk
 
24.05.13
15:11
В ПКС субконто пропиши
ПередВыгрузкой:

Сообщить(ТипЗначенияСтр(Объект.Субконто));
Попытка
Сообщить(Объект.Субконто.Вид());
Исключение
КонецПопытки
6 dk
 
24.05.13
15:11
ну и смотри на каком субконто вывалится
7 krasnodar95
 
24.05.13
15:43
(6) Вываливается на самом первом вот все что вывелось:
Начало выгрузки:   24.05.13 15:39:54
ТаблицаЗначений
Возврат мТаблицаПравилКонвертацииОбъектов.ПолучитьЗначение(НомерПКО, Реквизит);
{D:\1С\БАЗЫ\ПЕРЕНОС77В82\ОБРАБОТКАДЛЯ77.ERT(2073)}: Номер за пределами значения!
8 dk
 
24.05.13
15:53
КоллекцияОбъектов или как-то так вместо Объект
9 krasnodar95
 
24.05.13
15:55
(8) Да я уже понял, я так и написал%:
Сообщить(ТипЗначенияСтр(ОбъектКоллекции.СубконтоДт));
Попытка
Сообщить(ОбъектКоллекции.СубконтоДт.Вид());
Исключение
КонецПопытки;
10 krasnodar95
 
24.05.13
15:56
А на это мне (7)
11 krasnodar95
 
27.05.13
09:41
Ответ нашел здесь http://infostart.ru/public/120035/, правда не совсем понимаю как работает это решение, но оно работает. Жаль что никто не подсказал...
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший