Имя: Пароль:
1C
1С v8
Выгрузка данных в ЗУП через com соединение
0 zerat
 
28.08.14
11:10
Всем привет! Выгружаю данные в документ "Регистрация разовых начислений" заполняю документ

            ДокументНачисления = Соединение.Документы.РегистрацияРазовыхНачисленийРаботниковОрганизаций;    
            
            НовыйДокумент = ДокументНачисления.СоздатьДокумент();
            НовыйДокумент.Дата = НачалоДня(КонецМесяца(ПериодРегистрации));
            НовыйДокумент.Организация = Соединение.Справочники.Организации.НайтиПоКоду(Организация.Код);
            НовыйДокумент.ДатаВыплатыДохода = НачалоДня(КонецМесяца(ПериодРегистрации));
            НовыйДокумент.ПериодРегистрации = НачалоМесяца(ПериодРегистрации);
            НовыйДокумент.УстановитьНовыйНомер();
            
            Для сч=0 по ТаблицаДанных.Количество()-1 Цикл
                НоваяСтрока = НовыйДокумент.ДополнительныеНачисления.Добавить();
                Если ЗначениеЗаполнено(ТаблицаДанных[сч].Сотрудник) Тогда
                     Сотрудник = ПроверитьАктуальность(ТаблицаДанных[сч].Сотрудник.ИНН);
                КонецЕсли;
                НоваяСтрока.Авторасчет = Истина;
                НоваяСтрока.ВидРасчета = Соединение.ПланыВидовРасчета.ДополнительныеНачисленияОрганизаций.НайтиПоНаименованию(ВидРасчета);
                НоваяСтрока.Показатель1 = ТаблицаДанных[сч].СуммаРегл;
                НоваяСтрока.Сотрудник = Сотрудник;
                НоваяСтрока.ФизЛицо = Сотрудник.ФизЛицо;
                Если НоваяСтрока.Сотрудник.Пустая() Тогда
                    НоваяОшибка = ТаблицаОшибок.Добавить();
                    НоваяОшибка.ОписаниеОшибки = "НЕ НАЙДЕН СОТРУДНИК - "+ТаблицаДанных[сч].Сотрудник;
                КонецЕсли;
            КонецЦикла;
            
            НовыйДокумент.Записать(Соединение.РежимЗаписиДокумента.Запись);
            НовыйДокумент.РассчитатьНачисления();

{Обработка.Выгрузка.МодульОбъекта(153)}: Ошибка при вызове метода контекста (РассчитатьНачисления)
            НовыйДокумент.РассчитатьНачисления();
по причине:
Произошла исключительная ситуация (1C:Enterprise 8.3.5.1119): {Документ.РегистрацияРазовыхНачисленийРаботниковОрганизаций.МодульОбъекта(330)}: Метод объекта не обнаружен (ПолучитьМассивТабличныхЧастей)

В чем может быть проблема?
1 Maxus43
 
28.08.14
11:12
видимо процедура/функция ПолучитьМассивТабличныхЧастей не доступна во внешнем соединении
2 Cube
 
28.08.14
11:13
(0) "Ошибка при вызове метода контекста (РассчитатьНачисления)
"
"Метод объекта не обнаружен (ПолучитьМассивТабличныхЧастей)"
"В чем может быть проблема?"

Действительно... В чем же?... Надо думать! Читать не надо, только копипаст на мисту - там разберутся...
3 zerat
 
28.08.14
11:15
(1) так он заходит в процедуру рассчитать начисления и вот именно на этом массиве спотыкается.... как проверить доступна она или нет

Функция ПолучитьМассивТабличныхЧастей(ДокументОбъект, ЧтоРассчитываем) Экспорт


функция находится в общем модуле в котором стоит галочка внешнее соединение
4 zerat
 
28.08.14
11:15
(2) я уже внимательно все прочитал...не умничай
5 zerat
 
28.08.14
11:15
выгрузка происходит из конфигурации БП 3.0 в ЗУП 2.5
6 Maxus43
 
28.08.14
11:17
НовыйДокумент.Записать(Соединение.РежимЗаписиДокумента.Запись);
            НовыйДокумент.РассчитатьНачисления();

почему в такой последовательности? поменять по логике надо
7 zerat
 
28.08.14
11:21
(6)нет надо сначала документ записать а потом рассчитать только можно
8 zerat
 
28.08.14
11:28
Заремил кусо кода

    //МассивТаблиц = НачислениеОтпускаРаботникамОрганизацийПереопределяемый.ПолучитьМассивТабличныхЧастей(ЭтотОбъект, "НДФЛ");
    //Для каждого ТабличнаяЧасть Из МассивТаблиц Цикл
    //    ТабличнаяЧасть.Очистить();
    //КонецЦикла;

и выгрузка прошла успешно.
Но проблема в том что этот кусок кода нужен)))
9 Maxus43
 
28.08.14
11:31
заковырни то что заремил в

#Если НЕ ВнешнееСоединение Тогда

#КонецЕсли

поглядеть на результат
10 Maxus43
 
28.08.14
11:32
после рассчета ещё раз записывать вроде надо будет
11 zerat
 
28.08.14
11:32
Попытка
                НовыйДокумент.Записать(Соединение.РежимЗаписиДокумента.Запись);
                НовыйДокумент.Записать(Соединение.РежимЗаписиДокумента.Проведение);
            Исключение
                НовыйДокумент.Записать(Соединение.РежимЗаписиДокумента.Запись);
                Сообщить(ОписаниеОшибки());
            КонецПопытки;
12 zerat
 
28.08.14
11:32
(9) все прошло успешно
13 zerat
 
28.08.14
11:33
зарплата стоит на поддержке и не вариант ее менять...как еще можно победить данную ошибку
14 Maxus43
 
28.08.14
11:34
(12) ну тут суть кода просто в очистке ТЧ, сам и очисти из своего кода выгрузки, там алгоритм на 3 минуты в функции ПолучитьМассивТабличныхЧастей
15 Maxus43
 
28.08.14
11:35
это что за выгрузка? одноразовая? или постоянно будет?
16 Maxus43
 
28.08.14
11:37
тьфу ты.
Есно не во внешнем это, смотри выше процедуры РассчитатьНачисления, там стоит
#Если ТолстыйКлиентОбычноеПриложение Тогда

В таком случае выход один - переносить алгоритм пересчета начислений в свой код выгрузки, дёргая куски из ЗУП
17 zerat
 
28.08.14
11:37
(15) выгрузка будет производиться периодически и только в типовые конфигурации ЗУП, даже если я очистку сделаю у себя в Бух, то он же меня все равно не пустит в процедуру РассчитатьНачисления()
18 Maxus43
 
28.08.14
11:38
я чото не совсем понял как работает вобще, процедура РассчитатьНачисления не существует во внешнем соединении, и как смог к ней обратится пока я не понял
19 zerat
 
28.08.14
11:39
#Если ТолстыйКлиентОбычноеПриложение Тогда
это для другой процедуры стоит в Зупе
20 zerat
 
28.08.14
11:39
а рассчитатьНачисления она экспортная
21 zerat
 
28.08.14
11:40
#Если ТолстыйКлиентОбычноеПриложение Тогда

// Заполняет показатели
//
Функция ЗаполнитьПоказатели(ТекущийСотрудник, Источник) Экспорт

#КонецЕсли
22 zerat
 
28.08.14
11:49
платформа последняя 8.3.5
23 Maxus43
 
28.08.14
12:17
у меня нет КонецЕсли тут... охватывает и эту процедуру тоже
24 zerat
 
28.08.14
12:46
(23) какая версия ЗУП?
25 zerat
 
28.08.14
12:54
2.5 (2.5.81.1)  у меня такой релиз
26 Maxus43
 
28.08.14
12:57
у меня УПП, там аналогично почти. Безразницы короче, обходить придётся как в (16)
27 zerat
 
28.08.14
13:05
(26) да это застрелится....
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан