Имя: Пароль:
1C
1С v8
Загрузка значений субконто через COM
,
0 YurOK_51
 
18.07.11
14:55
Синхронизирую значения в базе ББУ и БГУ. Надо проставить значение незаполненных субконто. В ББУ и БГУ есть непредопределенные субконто, то есть их не установить с помощью:
СтрокаНабора.ExtDimensionsDr.<ВидСубконто> = НужноеСубконто;
Можно получить ключ и значение всех субконто счета обойдя коллекцию КлючЗначений субконто:

НомерСубконто=1;    
Для каждого СтрокаСубконто Из СтрокаНабора.ExtDimensionsDr Цикл    
СтрокаСубконто.Value = СтрокаЗагрузки[0]["СубконтоДт"+НомерСубконто];
НомерСубконто=НомерСубконто+1;    
КонецЦикла;    

Но в этом случае ошибка записи Value

Есть метод загрузить():

ТаблицаЗагрузки = Новый ТаблицаЗначений;
ТаблицаЗагрузки.Колонки.Добавить("Key");
ТаблицаЗагрузки.Колонки.Добавить("Value");
   
НомерСубконто=1;
Для каждого СтрокаСубконто Из СтрокаНабора.ExtDimensionsDr Цикл

СтрокаТЧЗ = ТаблицаЗагрузки.Добавить();
СтрокаТЧЗ.Key = СтрокаСубконто.Key;
СтрокаТЧЗ.Value = СтрокаЗагрузки[0]"СубконтоДт"+НомерСубконто];

НомерСубконто=НомерСубконто+1;    
КонецЦикла;
   
СтрокаНабора.ExtDimensionsDr.Загрузить(ТаблицаЗагрузки);

Не находит метод.

Можно ли вообще записать значения субконто через СОМ?
1 Aprobator
 
18.07.11
14:58
не понял, хотим что ли значение с другой базы напрямую непредопределенное значение закинуть? Т.е. не создавая его в другой базе?
2 YurOK_51
 
18.07.11
15:03
Оно есть в базе "приемнике".
Предварительно я получаю его значение(COM объект) в таблицу в базе источнике. Проблема на этапе записи набора в приемник. Не получается установить значение непредопределенного субконто.
3 Aprobator
 
18.07.11
15:04
(2) есть так найди его. По наименованию или по коду. И с базы приемника считывай не целиком объект, а то почему искать будешь.
4 YurOK_51
 
18.07.11
15:08
(3) Я его нахожу, но не могу установить найденное значение, чтобы после записать набор в приемнике.
Ошибка при попытке установки значения.
5 DmitrO
 
18.07.11
15:22
Имена имеют только предопределенные виды субконто.
Но у типа РегистрБухгалтерииСубконто есть метод Вставить().
6 Aprobator
 
18.07.11
15:30
(4) я этого в приведенном коде не увидел.
7 YurOK_51
 
18.07.11
15:47
Для каждого СтрокаСубконто Из СтрокаНабора.ExtDimensionsCr Цикл    
СтрокаСубконто.Вставить(СтрокаСубконто.key, СтрокаЗагрузки[0]["СубконтоКт"+НомерСубконто]);
НомерСубконто=НомерСубконто+1;    
КонецЦикла;    

Возникает ошибка:
{Форма.Форма.Форма(304)}: Метод объекта не обнаружен (Вставить)
   СтрокаСубконто.Вставить(СтрокаСубконто.key, СтрокаЗагрузки[0]["СубконтоКт"+НомерСубконто]);

Есть подозрения, что все дело в попытке установки через СОМ.
8 Aprobator
 
18.07.11
16:46
ну по старой схеме СтрокаСубконто - тип значения в студию.
9 DmitrO
 
18.07.11
16:55
Для танкистов:
СтрокаНабора.СубконтоКт.Вставить(ВидСубконто, Значение);
10 YurOK_51
 
19.07.11
12:09
Итог:
Переписал обработку на работу в обратную сторону, т.е. Соединяюсь из приемника в источник. В этом случае работает:
Для танкистов:
СтрокаНабора.СубконтоКт.Вставить(ВидСубконто, Значение);

Вывод нельзя устанавливать значение непредопределенных субконто в наборе, если он получен через СОМ.

Всем спасибо.
11 Aprobator
 
19.07.11
12:20
бррр. Ерунда какая то.
12 DmitrO
 
19.07.11
13:06
(10)метафора в тему:
Опыт.
Ловим таракана, свистим, - таракан убегает.
Ловим таракана, отрываем ноги, свистим, - таракан остается на месте.
Вывод: таракан без ног не слышит!