Имя: Пароль:
1C
1C 7.7
v7: Выгрузка табличной части документа с 8.3 на 7.7
,
0 Баха
 
06.03.17
10:16
В общем задачка - надо с типовой 8ки выгрузить данные в 7ку. Точнее табличную часть документа НачислениеЗарплатыРаботникамОрганизацийНачисления в документ в 7ке надо закинуть тоже в документ. Подключился, запросом выбрал записи, а дальше проблемы с перекидкой данных...


Если Меню.ВыбратьЗначение(Фирма,"Выберите базу фирмы",,,2)=1 Тогда
        СтатусПодключения=0;    
        V83=CreateObject("V83.COMConnector");//Application
        Попытка
            База = V83.Connect("File="+"\\Путь"+"; Usr="+"Юзер"+"; Pwd="+"пароль");    
            Сообщить("Подключение есть");    
        Исключение            
            Предупреждение("Ошибка открытия базы V8 - "+ОписаниеОшибки());
            Возврат "";
        КонецПопытки;
        Выборка = База.Документы.НачислениеЗарплатыРаботникамОрганизаций.Выбрать();
        
        Пока Выборка.следующий() = -1 Цикл
            Запрос=База.NewObject("Запрос");
            Запрос.Текст =        
            "ВЫБРАТЬ          
            | НачислениеЗарплатыРаботникамОрганизацийНачисления.Ссылка,
            | НачислениеЗарплатыРаботникамОрганизацийНачисления.НомерСтроки,
            | НачислениеЗарплатыРаботникамОрганизацийНачисления.Сотрудник,
            //    | НачислениеЗарплатыРаботникамОрганизацийНачисления.Физлицо,
            //    | НачислениеЗарплатыРаботникамОрганизацийНачисления.Физлицо.ИдентификационныйКодЛичности,
            | НачислениеЗарплатыРаботникамОрганизацийНачисления.Размер,
            | НачислениеЗарплатыРаботникамОрганизацийНачисления.Результат,
            | НачислениеЗарплатыРаботникамОрганизацийНачисления.ДатаНачала,
            | НачислениеЗарплатыРаботникамОрганизацийНачисления.ДатаОкончания,
            | НачислениеЗарплатыРаботникамОрганизацийНачисления.Ссылка.Номер,
            | НачислениеЗарплатыРаботникамОрганизацийНачисления.Ссылка.Дата
            |ИЗ
            | Документ.НачислениеЗарплатыРаботникамОрганизаций.Начисления КАК НачислениеЗарплатыРаботникамОрганизацийНачисления";    
            ТЗ = Запрос.Выполнить().Выгрузить();
            Если ТЗ.Количество() > 0 Тогда
                Для ном=0 По ТЗ.Количество()-1 Цикл    
                    Сообщить("Сотрудник - "+ТЗ.Сотрудник+", Результат - "+ТЗ.Результат);
                    НоваяСтрока();                    
                    Сотрудник = ТЗ.Сотрудник;
                    Оклад     = ТЗ.Размер;
                    Аванс  = ТЗ.Результат;
                    
                Конеццикла;
            КонецЕсли;        
        КонецЦикла;        
    Иначе    
    КонецЕсли;
1 Остап Сулейманович
 
06.03.17
10:19
(0) Так и должно быть.
2 HawkEye
 
06.03.17
10:20
(0) какая проблема?
3 palpetrovich
 
06.03.17
10:23
(2 ) "ТЗ.Сотрудник" наверное
4 Остап Сулейманович
 
06.03.17
10:24
(2) Вангую.
Проблема здесь :
Сообщить("Сотрудник - "+ТЗ.Сотрудник+", Результат - "+ТЗ.Результат);
Оно патамучтА не знает кто такой "ТЗ.Сотрудник" и видит его как OLEобъект.
5 HawkEye
 
06.03.17
10:24
(3) (4) не подсказывайте ))))
6 aka AMIGO
 
06.03.17
10:26
"На Мисте во втором посте дадут ответ, а в 20-м - правильный ответ" © :)
7 Баха
 
06.03.17
10:27
(2) В общем не выгружает в ТЗ
8 HawkEye
 
06.03.17
10:28
(7) а в частном?
9 Баха
 
06.03.17
10:29
мне бы сотрудника и колонки снизу вытащить и добавить записи в док
10 Баха
 
06.03.17
10:31
(6) а можно ссылку?
11 Остап Сулейманович
 
06.03.17
10:34
12 Масянька
 
06.03.17
10:35
(11) Надо было в цикле :)))
13 Мимохожий Однако
 
06.03.17
10:37
Включил счетчик. Это 13 пост
14 Баха
 
06.03.17
10:37
(4) не как OLE-объект, а в ТЗ не выгружает, в ТЗ нету выгрузки с запроса
15 Баха
 
06.03.17
10:41
(12) с циклом вообще проблемно, в это в 7ке, а язык 8ный
16 Builder
 
06.03.17
10:43
(14) Уверен что запрос работает?
Ну и намного проще и удобнее из 8-ки в 7.7 подключаться, а не наоборот.
17 silent person
 
06.03.17
10:43
(0)
по OLE перенести только простые типы данных: Строка, Число, Дата и т.п.

поэтому строка
Оклад     = ТЗ.Размер; переносится, т.к. ТЗ.Размер имеет тип "Число"
а строка
Сотрудник = ТЗ.Сотрудник; нет т.к. ТЗ.Сотрудник это тип объект базы 1С 8.3 СправочникСсылка.  

притом что база 7.7 ничего не значет про объекты базы 8.3
18 silent person
 
06.03.17
10:45
блин слова потерялись.

по OLE можно перенести только простые типы данных: Строка, Число, Дата и т.п.

поэтому строка
Оклад     = ТЗ.Размер; переносится, т.к. ТЗ.Размер имеет тип "Число"
а строка
Сотрудник = ТЗ.Сотрудник; нет т.к. ТЗ.Сотрудник это объект базы 1С 8.3 и имеет тип СправочникСсылка.  

притом что база 7.7 ничего не значет про объекты базы 8.3
19 Баха
 
06.03.17
10:48
(18) Сообщить("Размер - "+ТЗ.Размер+", Результат - "+ТЗ.Результат);
{Документ.ЗПВедУдерж1.Форма.Модуль(543)}: Поле агрегатного объекта не обнаружено (Размер)
20 Баха
 
06.03.17
10:50
(16) Знаю что так удобнее, но задачка такая(все через попу). Буху надо в 7ку загружать. Запрос работает, потому что цикл количества крутится
21 aka AMIGO
 
06.03.17
10:51
(19) Чаще всего отладчик помогает.
22 Баха
 
06.03.17
10:52
23 HawkEye
 
06.03.17
10:53
(20)
ТЗ.ВыбратьСтроки()
пока ТЗ.ПолучитьСТроку() = 1 Цикл
бла бла бла
24 silent person
 
06.03.17
10:53
ну ты строку ТЗ то по номеру получи, если цикл по количеству строк сделал.
25 HawkEye
 
06.03.17
10:53
+23 ты не позиционируешься на строке ТЗ
26 Баха
 
06.03.17
10:55
(23) ВыбратьСтроки и бла бла не канает, тут 8ка рулит в семерке(((
27 Баха
 
06.03.17
10:56
(24) щя попробую, а есть соображения как?)
28 Мимохожий Однако
 
06.03.17
10:58
ОЛЕ обязательно? выгрузи в файл и загрузи из файла
29 Баха
 
06.03.17
10:59
Сообщить("ТЗ.Количество - "+ТЗ.Количество);
{Документ.ЗПВедУдерж1.Форма.Модуль(543)}: Метод не найден

УПС
30 Баха
 
06.03.17
11:00
(28) 8ка закрытая, типовая, трону, обновлению капец
31 aka AMIGO
 
06.03.17
11:01
(29) Метод "Сообщить" случайно, не на Сервере?
32 aka AMIGO
 
06.03.17
11:03
(29) И таки что говорит отладчик?
33 HawkEye
 
06.03.17
11:05
(26) ты уже определись, то 7-ка, то 8-ка...
34 aka AMIGO
 
06.03.17
11:06
+32 в нём можно посмотреть, что в каком виде передается, в соответствии с (18)
35 HawkEye
 
06.03.17
11:06
(30) т.е. вот это у тебя в 8-ке написано:

V83=CreateObject("V83.COMConnector")//Application
        Попытка
            База = V83.Connect("File="+"\\Путь"+"; Usr="+"Юзер"+"; Pwd="+"пароль");    

??? )))
36 Баха
 
06.03.17
11:10
(35) Все это написано в 7ке, подключаюсь к 8ке, хоть и в в 7ке, команды все приходится 8ные писать, подключается же
37 HawkEye
 
06.03.17
11:11
(36) ну и с чего тогда: "ВыбратьСтроки и бла бла не канает," ???
38 Баха
 
06.03.17
11:15
(37) Неа, когда подключается он 8ке обращается на своем языке, забывая о своем)))
39 Баха
 
06.03.17
11:16
До этого пробовал циклом, документы выбрал на период, но табличную часть не смог
40 HawkEye
 
06.03.17
11:18
(38) может поэтому у тебя и не получается? )))
41 Баха
 
06.03.17
11:23
(40) но кое что начал получаться, например документы. Некоторые срабатывает, некоторые нет. Поэтому пост поднял, может кто столкнулся?
42 h-sp
 
06.03.17
11:30
строкаТЗ = ТЗ.Получить(Ном);
                  Сотрудник = СтрокаТЗ.Сотрудник;
                    Оклад     = СтрокаТЗ.Размер;
                    Аванс  = СтрокаТЗ.Результат;
43 silent person
 
06.03.17
11:33
когда я только начинал разбираться в 8-ке делал так.

БД=СоздатьОбъект("V81.Application");
    
Открытие = БД.Connect("File=""" + ПутьКБД + """;Usr=""Обмен"";pwd=""123"";");

    ОтгрСпецификация = БД.Документы.ОтгрузочнаяСпецификацияАвто.Выбрать(формат(НачДата,"ДГГГГММДД")+"000000",формат(КонДата,"ДГГГГММДД")+"235959");
    
Пока ОтгрСпецификация.Следующий() = -1 Цикл


    Сортность = ОтгрСпецификация.Сортность; // Сортность  - это табличная часть документа

    Для Сч = 1 По  Сортность.Количество() Цикл    
        Если Сортность.Получить(Сч-1).Объем=0 Тогда
            Продолжить;
        Конецесли;                    
КонецЦикла;
КонецЦикла;

и т.д.
44 Баха
 
06.03.17
11:40
(42) Крутится, данные есть, а вот сотрудник как OLE(
45 Баха
 
06.03.17
11:40
(43) Щя попробую и твой пример
46 silent person
 
06.03.17
11:44
сотрудник.
в 7.7 получай наименование и ищи по нему в справочнике сотрудников ссылку.
47 Баха
 
06.03.17
12:54
(46) Пока Выборка.следующий() = -1 Цикл
            Запрос=База.NewObject("Запрос");
            Запрос.Текст =        
            "ВЫБРАТЬ          
            | НачислениеЗарплатыРаботникамОрганизацийНачисления.Ссылка,
            | НачислениеЗарплатыРаботникамОрганизацийНачисления.НомерСтроки,
            | НачислениеЗарплатыРаботникамОрганизацийНачисления.Сотрудник,
            | НачислениеЗарплатыРаботникамОрганизацийНачисления.Сотрудник.Наименование КАК СотрудникНаименование,
            | НачислениеЗарплатыРаботникамОрганизацийНачисления.Размер,
            | НачислениеЗарплатыРаботникамОрганизацийНачисления.Результат,
            | НачислениеЗарплатыРаботникамОрганизацийНачисления.ДатаНачала,
            | НачислениеЗарплатыРаботникамОрганизацийНачисления.ДатаОкончания,
            | НачислениеЗарплатыРаботникамОрганизацийНачисления.Ссылка.Номер,
            | НачислениеЗарплатыРаботникамОрганизацийНачисления.Ссылка.Дата
            |ИЗ
            | Документ.НачислениеЗарплатыРаботникамОрганизаций.Начисления КАК НачислениеЗарплатыРаботникамОрганизацийНачисления";
            ТЗ = Запрос.Выполнить().Выгрузить();
            Если ТЗ.Количество() > 0 Тогда
                Для ном=0 По ТЗ.Количество()-1 Цикл                     
                    строкаТЗ = ТЗ.Получить(Ном);
                //    НоваяСтрока();
                    Сотрудник = СтрокаТЗ.СотрудникНаименование;
                    Оклад     = СтрокаТЗ.Размер;
                    Аванс  = СтрокаТЗ.Результат;
                    Сообщить("Сотрудник - "+СтрокаТЗ.СотрудникНаименование+", Размер - "+СтрокаТЗ.Размер+", Результат - "+СтрокаТЗ.Результат);
                Конеццикла;
            КонецЕсли;        
        КонецЦикла;        


Окончательный рабочий вид
48 Баха
 
06.03.17
12:57
Спасибо h-sp и silent person-у. Цикл обязательно попробую...
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс