Имя: Пароль:
1C
1С v8
COM-Соед. с базой ЗиК 77 ГруппаРасчетов.ВсеУдержания ошибка Типы не совпадают(0)
0 1CForEver
 
31.10.11
00:13
Пытаюсь через ком-соединение проверить вхождение ВР в ГруппуРасчетов выдает ошибку Типы не совпадают (0), кто нить сталкивался с этим?

Код:

   // Создаем COM-соединение с базой 1С 7.7
   cntr = Новый COMObject("V1CEnterprise.Application");
   
   Попытка
       
       //Создаем возможность прерывания выполнения обработки
       ОбработкаПрерыванияПользователя();
       
       //Определяем пользователя и пороль
       ПользовательИнформационнойБазы = ?(ПустаяСтрока(Пользователь), "", " /N" + Пользователь);
       ПарольПользователяИнформационнойБазы = ?(ПустаяСтрока(Пароль), "", " /P" + Пароль);
       
       //Производим инициализацию базы данных 1С 7.7
       connection = cntr.Initialize(cntr.RMTrade, "/D""" + Сервер + """" + ПользовательИнформационнойБазы + ПарольПользователяИнформационнойБазы, "NO_SPLASH_SHOW");

   спрВР77 = cntr.CreateObject("Справочник.ВидыРасчетов");
   
   спрВР77.ВыбратьЭлементы();
   
   Пока спрВР77.ПолучитьЭлемент() = 1 Цикл
       
       Расчет = спрВР77.Расчет;
       
       Если (спрВР77.Расчет.ВходитВГруппу(cntr.CalculationGroup.ВсеУдержания)=1) Тогда
           НоваяСтрока = ТаблицаВидовРвсчетаУдержаний77.Добавить();
           НоваяСтрока.НаименованиеВидаРасчета = спрВР77.Наименование;
           НоваяСтрока.Расчет = Расчет;
           НоваяСтрока.ДляОтбора = СокрЛП(спрВР77.Наименование) + СокрЛП(Расчет);
       ИначеЕсли (спрВР77.Расчет.ВходитВГруппу(cntr.CalculationGroup.ВсеНачисления)=1) Тогда
           НоваяСтрока = ТаблицаВидовРвсчетаНачисления77.Добавить();
           НоваяСтрока.НаименованиеВидаРасчета = спрВР77.Наименование;
           НоваяСтрока.Расчет = Расчет;
           НоваяСтрока.ДляОтбора = СокрЛП(спрВР77.Наименование) + СокрЛП(Расчет);
       Иначе
           Продолжить;
       КонецЕсли;
       
   КонецЦикла;

       
   Исключение
       
       Предупреждение("Не удалось соединиться с базой(" + ОписаниеОшибки() + ")!");
       Предупреждение("Проверьте настройки подключения и перезапустите обработку!");
       ЭтаФорма.Обновить();
       Возврат;
       
   КонецПопытки;
1 1CForEver
 
31.10.11
00:14
Ругается вот на это cntr.CalculationGroup.ВсеУдержания
2 1CForEver
 
31.10.11
00:45
Ну это я победил ))) - cntr.Метаданные.ГруппаРасчетов("ВсеУдержания") - вот так проканало
3 1CForEver
 
31.10.11
00:46
Но теперь блин новая ошибка
Ошибка при вызове метода контекста (ВходитВГруппу)
       Если (Расчет.ВходитВГруппу(cntr.Метаданные.ГруппаРасчетов("ВсеУдержания"))=1) Тогда
по причине:
Произошла исключительная ситуация (1С:Предприятие): Неверный параметр
4 1CForEver
 
31.10.11
00:52
Нет не победил я первую ошибку (
5 1CForEver
 
31.10.11
03:20
Вот как сделал

   спрВР77 = cntr.CreateObject("Справочник.ВидыРасчетов");
   
   спрВР77.ВыбратьЭлементы();
   
   ВсеУдержания = cntr.CreateObject("СписокЗначений");
   ВсеНачисления = cntr.CreateObject("СписокЗначений");
   
   Для сч=1 по cntr.Метаданные.ГруппаРасчетов() Цикл
       Если cntr.Метаданные.ГруппаРасчетов(сч).Идентификатор = "ВсеУдержания" Тогда
           Для СчВр = 1 По cntr.Метаданные.ГруппаРасчетов(сч).ВидРасчета.Количество() Цикл
               ВсеУдержания.ДобавитьЗначение(cntr.Метаданные.ГруппаРасчетов(сч).ВидРасчета.Получить(СчВр).Представление());
               Сообщить(ВсеУдержания.ПолучитьЗначение(СчВР));
           КонецЦикла;
       ИначеЕсли cntr.Метаданные.ГруппаРасчетов(сч).Идентификатор = "ВсеНачисления" Тогда
           Для СчВр = 1 По cntr.Метаданные.ГруппаРасчетов(сч).ВидРасчета.Количество() Цикл
               ВсеНачисления.ДобавитьЗначение(cntr.Метаданные.ГруппаРасчетов(сч).ВидРасчета.Получить(СчВр).Представление());
               Сообщить(ВсеНачисления.ПолучитьЗначение(СчВР));
           КонецЦикла;
       КонецЕсли;
   КонецЦикла;
   
   Пока спрВР77.ПолучитьЭлемент() = 1 Цикл
       
       Расчет = спрВР77.Расчет;
       
       Если (ВсеУдержания.Принадлежит(СокрЛП(Расчет.Наименование))=1) Тогда
           НоваяСтрока = ТаблицаВидовРвсчетаУдержаний77.Добавить();
           НоваяСтрока.НаименованиеВидаРасчета = спрВР77.Наименование;
           НоваяСтрока.Расчет = Расчет.Наименование;
           НоваяСтрока.ДляОтбора = СокрЛП(спрВР77.Наименование) + СокрЛП(Расчет.Наименование);
       ИначеЕсли (ВсеНачисления.Принадлежит(СокрЛП(Расчет.Наименование))=1) Тогда
           НоваяСтрока = ТаблицаВидовРвсчетаНачисления77.Добавить();
           НоваяСтрока.НаименованиеВидаРасчета = спрВР77.Наименование;
           НоваяСтрока.Расчет = Расчет.Наименование;
           НоваяСтрока.ДляОтбора = СокрЛП(спрВР77.Наименование) + СокрЛП(Расчет.Наименование);
       Иначе
           Продолжить;
       КонецЕсли;
       
   КонецЦикла;
6 DJ Anthon
 
31.10.11
03:39
че делаешь-то ваще?
7 1CForEver
 
31.10.11
05:33
Даже вот так правильней всего!

   спрВР77 = cntr.CreateObject("Справочник.ВидыРасчетов");
   
   спрВР77.ВыбратьЭлементы();
   
   ВсеУдержания = cntr.CreateObject("СписокЗначений");
   ВсеНачисления = cntr.CreateObject("СписокЗначений");
   
   Для сч=1 по cntr.Метаданные.ГруппаРасчетов() Цикл
       Если cntr.Метаданные.ГруппаРасчетов(сч).Идентификатор = "ВсеУдержания" или
           (cntr.Метаданные.ГруппаРасчетов(сч).Идентификатор = "ВозвратыНДФЛ") Тогда
           Для СчВр = 1 По cntr.Метаданные.ГруппаРасчетов(сч).ВидРасчета.Количество() Цикл
               ВсеУдержания.ДобавитьЗначение(СокрЛП(cntr.Метаданные.ГруппаРасчетов(сч).ВидРасчета.Получить(СчВр).Представление()));
           КонецЦикла;
       ИначеЕсли cntr.Метаданные.ГруппаРасчетов(сч).Идентификатор = "ВсеНачисления" Тогда
           Для СчВр = 1 По cntr.Метаданные.ГруппаРасчетов(сч).ВидРасчета.Количество() Цикл
               ВсеНачисления.ДобавитьЗначение(СокрЛП(cntr.Метаданные.ГруппаРасчетов(сч).ВидРасчета.Получить(СчВр).Представление()));
           КонецЦикла;
       КонецЕсли;
   КонецЦикла;
   
   Пока спрВР77.ПолучитьЭлемент() = 1 Цикл
       
       Расчет = спрВР77.Расчет;
       
       Если (ВсеУдержания.Принадлежит(СокрЛП(cntr.Метаданные.ВидРасчета(Расчет.Код).Представление()))=1) Тогда
           НоваяСтрока = ТаблицаВидовРвсчетаУдержаний77.Добавить();
           НоваяСтрока.НаименованиеВидаРасчета = спрВР77.Наименование;
           НоваяСтрока.Расчет = СокрЛП(cntr.Метаданные.ВидРасчета(Расчет.Код).Представление());
           НоваяСтрока.ДляОтбора = СокрЛП(спрВР77.Наименование) + СокрЛП(Расчет.Наименование);
       ИначеЕсли (ВсеНачисления.Принадлежит(СокрЛП(cntr.Метаданные.ВидРасчета(Расчет.Код).Представление()))=1) Тогда
           НоваяСтрока = ТаблицаВидовРвсчетаНачисления77.Добавить();
           НоваяСтрока.НаименованиеВидаРасчета = спрВР77.Наименование;
           НоваяСтрока.Расчет = СокрЛП(cntr.Метаданные.ВидРасчета(Расчет.Код).Представление());
           НоваяСтрока.ДляОтбора = СокрЛП(спрВР77.Наименование) + СокрЛП(Расчет.Наименование);
       Иначе
           Продолжить;
       КонецЕсли;
       
   КонецЦикла;
8 1CForEver
 
31.10.11
05:34
(6) Переношу данные по зарплате за текущий год из 7ки в 8ку
9 DJ Anthon
 
31.10.11
07:12
жесть )
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший