Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> При OLE запросе ошибка - Плохой тип переменной          
shkoda Подменю пользователя
сообщение 19.07.16, 16:16
Сообщение #1

Общительный
**
Группа: Пользователи
Сообщений: 18
Спасибо сказали: 1 раз
Рейтинг: 0

Всем приветы!

Делаю отчёт, и пытаюсь при помощи ОЛЕ в него добавить данные из другой базы. Обе базы самописные но на основе ЗиКа.
Я хочу взять данные по Начислениям ЗП и вот как это выглядит:

БазаОле=СоздатьОбъект("V77S.Application");
...
    ЖурналЗП = БазаОле.CreateObject("ЖурналРасчетов.Зарплата");
    СпрСот = БазаОле.CreateObject("Справочник.Сотрудники");
...
Если СпрСот.НайтиПоКоду(СокрЛП(Сред(ЗначениеГр2.КОД,3))) = 1 Тогда
Сотр = СпрСот.ТекущийЭлемент();
Сообщить(Сотр.Наименование);
ЖурналЗП.ВыбратьЗаписиПоОбъекту(Сотр,НачДата,КонДата);
    Пока ЖурналЗП.ПолучитьЗапись() = 1 Цикл
        Если ЖурналЗП.ВидРасч.ВходитВГруппу(ГруппаРасчетов.ВсеНачисления)=1 Тогда
            ВсегоНачислено = ВсегоНачислено + ЖурналЗП.Результат;
        КонецЕсли;
        Сообщить(ЖурналЗП.Результат);
    КонецЦикла;
КонецЕсли;

ЗПФ1 = ВсегоНачислено;



При выполнении этого "кода"
получается вот такая ошибка

Если ЖурналЗП.ВидРасч.ВходитВГруппу(ГруппаРасчетов.ВсеНачисления)=1 Тогда
....ERT(195)}: Плохой тип переменной

уже по всякому пробовал, и так и эдак, уже неделю парюсь не могу сделать, но начальство уже очень живо интересуется почему отчет всё ещё не готов(((

очень подозреваю, что проблема кроется в
ГруппаРасчетов.ВсеНачисления
судя по всему Оле не видит что там написано, либо не может с этим работать

может кто сталкивался с подобным? как обойти эту проблему или решить другим способом

и ещё - думаю попробовать сделать прямым запросом SQL'ным


п.с. если сделать
ЖурналЗП.ВыбратьЗаписиПоОбъекту(Сотр,НачДата,КонДата);
    Пока ЖурналЗП.ПолучитьЗапись() = 1 Цикл
        Сообщить(ЖурналЗП.Результат);
    КонецЦикла;


то данные за нужный период выводятся, но там помимо начислений есть и другие записи, как их отфильтровать?


Всем спасибо!

miha74 Подменю пользователя
сообщение 20.07.16, 8:51
Сообщение #2

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 153
Спасибо сказали: 81 раз
Рейтинг: 0

Здравствуйте. Я с журналами расчетов никогда дела не имел, но судя по всему у Вас не определена (не найдена или не спозиционирована) "ГруппаРасчетов.ВсеНачисления". Это как если бы Вы перебирали элементы какого-нибудь справочника базы ОЛЕ и фильтровали по группе справочника, а в коде эта группа не спозиционирована.

korol1091 Подменю пользователя
сообщение 20.07.16, 9:52
Сообщение #3

Общительный
**
Группа: Пользователи
Сообщений: 49
Спасибо сказали: 9 раз
Рейтинг: 0

Проверьте типы всех переменных. Возможно там где-то COMОбъект, вместо объекта 1С стоит.

igmig65 Подменю пользователя
сообщение 21.07.16, 12:13
Сообщение #4

Почти ветеран
Иконка группы
Группа: Местный
Сообщений: 613
Из: Донецкая обл
Спасибо сказали: 168 раз
Рейтинг: 140.9

Смотрите: ЖурналЗП - это у вас ОЛЕ объект, тоесть объект другой базы, а в дальше вы проверяете вхождение в группу ГруппаРасчетов.ВсеНачисления, а это уже группа из базы из которой подключаетесь.
Попробуйте так
Если ЖурналЗП.ВидРасч.ВходитВГруппу(БазаОле.ГруппаРасчетов.ВсеНачисления)=1 Тогда

может лучше задать переменную перед этим
грВсеНач = БазаОле.ГруппаРасчетов.ВсеНачисления;

а потом уже
сли ЖурналЗП.ВидРасч.ВходитВГруппу(грВсеНач)=1 Тогда

shkoda Подменю пользователя
сообщение 22.07.16, 14:54
Сообщение #5

Общительный
**
Группа: Пользователи
Сообщений: 18
Спасибо сказали: 1 раз
Рейтинг: 0

igmig65 @ Вчера, 13:13 *,

фухх..
намаялся, конечно, и решение очень странное, но тем не менее рабтает 100%

ЖурналЗП.ВыбратьЗаписиПоОбъекту(Сотр,НачДата,КонДата);
                        Пока ЖурналЗП.ПолучитьЗапись() = 1 Цикл
                            
                            для й=1 по БазаОле.Метаданные.ВидРасчета(ЖурналЗП.ВидРасч.Код).ГруппаРасчетов.Количество() цикл
                                  Если БазаОле.Метаданные.ВидРасчета(ЖурналЗП.ВидРасч.Код).ГруппаРасчетов.Получить(й).Идентификатор="ВсеНачисления" тогда
                                ВсегоНачислено = ВсегоНачислено + ЖурналЗП.Результат;
                                Сообщить("" + ЖурналЗП.Результат + " " + ЖурналЗП.ВидРасч.Код);
                                //прервать;
                                 КонецЕсли;
                            КонецЦикла;

                        КонецЦикла;


Тему можно закрвыать.

Всем спасибо!

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 23.04.24, 23:17
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!