Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

Работа по по OLE 7.7->8.3

Работа по по OLE 7.7->8.3
Я
   Aldnepr
 
24.10.16 - 14:36
Необходимо синхронизировать некоторые данные из 7,7 в 8,3. (Подключаться именно в таком порядке, наоборот не подходит). К v8 я подключился, новый элемент тоже создал- разобрался. А вот как корректировать существующий??
Процедура Перенос()
    Контр7=СоздатьОбъект("Справочник.Контрагенты");
    Контр8=БазаИсточник.Справочники.Контрагенты; 
    Контр7.НайтиПоКоду("02608");
    Кинц7=Контр7.ТекущийЭлемент();
    
    Если Контр8.НайтиПоКоду(Кинц7.Код)=0    Тогда
         Кинц8=Контр8.СоздатьЭлемент();     
        Иначе 
             Кинц8=Контр8.ТекущийЭлемент();
    КонецЕсли;
    Кинц8.Код=Кинц7.Код;
    Кинц8.Наименование=Кинц7.Наименование;
    Кинц8.НаименованиеПолное=Кинц7.ПолнНаименование; 
    Кинц8.Записать();
    Сообщить("Записан"+" "+Кинц8.Код+" "+ Кинц8.Наименование);
КонецПроцедуры
 
 
   Господин ПЖ
 
1 - 24.10.16 - 14:37
Если Контр8.НайтиПоКоду(Кинц7.Код)=0    Тогда
         Кинц8=Контр8.СоздатьЭлемент();     
        Иначе 
             Кинц8=Контр8.ТекущийЭлемент();
    КонецЕсли;

выкидывай. это вам не это
   MrStomak
 
2 - 24.10.16 - 14:37
ПолучитьОбъект()
   Aldnepr
 
3 - 24.10.16 - 14:41
(2) Напиши пжлста в коде, я в 8 только разбираюсь
   MrStomak
 
4 - 24.10.16 - 14:50
(3) Если в 8 разбираешься, то в чем проблема изменить 8шный справочник? То же самое всё. Как-то так должно быть:
Контр8 = Приемник.Справочники.контрагенты.НайтиПоКоду("блаблабла");
Если Контр8.Пустая()=1 Тогда
Контр8Объект = Приемник.Справочники.Контрагенты.СоздатьЭлемент();
Иначе
Контр8Объект = Контр8.ПолучитьОбъект();
КонецЕсли;
Контр8Объект.Записать();
   Aldnepr
 
5 - 24.10.16 - 14:56
(4) Спасибо, добрый Человек! Может подскажете мануал по языку 8, чтобы без лишней воды можно было быстрее разобраться?
   Aldnepr
 
6 - 24.10.16 - 15:00
(4) я v8 только начал вникать, и все накопленное от 7,7 теперь будет страшно мешать восприятию новой конструкции ( это я как то сразу понял)
   mehfk
 
7 - 24.10.16 - 15:04
   mehfk
 
8 - 24.10.16 - 15:05
   Aldnepr
 
9 - 03.11.16 - 12:10
Чего то завис с подчиненными справочниками. Необходимо заполнить спр. ЕдиницыИзмерения через ОЛЕ, а он как известно подчинен Номенклатуре. Вот что наваял, но выскакивает ошибка "выборка = ЕдИзм8.Выбрать(,Т8); 
{D:\BASE2\8.3\1C8_ОБРАБОТКИ\ОЛЕ.ERT(242)}: 1C:Enterprise 8.3.9.1818: Несоответствие типов (параметр номер '2')"

Тов7=СоздатьОбъект("Справочник.ТМЦ");
Тов8=БазаИсточник.Справочники.Номенклатура;
ЕдИзм8= БазаИсточник.Справочники.ЕдиницыИзмерения;
КласЕдИзм8=БазаИсточник.Справочники.КлассификаторЕдиницИзмерения;
    Тов7.ВыбратьЭлементы();
    Пока Тов7.ПолучитьЭлемент()=1 Цикл
        Если Тов7.ЭтоГруппа()=1  Тогда
             Продолжить;
                Конецесли;
    Найден=Тов8.НайтиПоКоду("0000"+СокрЛП(Тов7.Код));
    
    Если Найден.Пустая()= 0    Тогда
        
          Т8 = Найден.ПолучитьОбъект();
               
               выборка = ЕдИзм8.Выбрать(,Т8); 
               Ед=выборка.СоздатьЭлемент();
               Ед.ЕдиницаПоКлассификатору=Т8.БазоваяЕдиницаИзмерения;
               Ед.Коэффициент=1;
               Если Т8.БазоваяЕдиницаИзмерения= "0301"  Тогда 
                       Ед.Вес=1;
               КонецЕсли;
              Ед.Записать();
              Т8.Записать();
   Ёпрст
 
10 - 03.11.16 - 12:17
>>> выборка = ЕдИзм8.Выбрать(,Т8); 
>>>               Ед=выборка.СоздатьЭлемент();

вот это всё в топку
 
 Рекламное место пустует
   Serginio1
 
11 - 03.11.16 - 12:35
Используй внешние отчеты.
Как через оле задать отбор?

Жизнь сразу милее будет. Премущества сначала предварительная отладка, затем получение данных из неё по COM
   Aldnepr
 
12 - 04.11.16 - 10:50
(11)я внешними обработками все и оформил. Перекинул уже правда не по COM а по OLE. Уж не знаю сильно ли отличаются эти методы,возможно в скорости обработки, но т.к. у меня базы на одном диске, то ОЛЕ обрабатывает мгновенно как 7,7-->8.3, так и наоборот
   Serginio1
 
13 - 04.11.16 - 12:05
(12) COM и OLE суть одна. Есть только внутренний сервер(dll) и внешний (exe)
Если весь код в обработке, то большой разницы нет, так как весь код выполняется на стороне сервера.
   h-sp
 
14 - 04.11.16 - 12:18
(12) 1. вот это бред
выборка = ЕдИзм8.Выбрать(,Т8); 

пиши 

выборка = ЕдИзм8.Выбрать(,Найден); 

2. вместо этого

Ед=выборка.СоздатьЭлемент();

пиши

Ед=ЕдИзм8.СоздатьЭлемент();

3. А эта строка 

      Если Т8.БазоваяЕдиницаИзмерения= "0301"  Тогда 

вообще на грани абсурда. Ты элемент справочника со строкой сравниваешь.
   Aldnepr
 
15 - 04.11.16 - 13:28
(14) Спасибо! Разобрался пункт 3. писал поздно вечером, то уже за гранью разума вышло)).
Могли бы помочь еще с закавыкой одной?- перенес с 7,7 контрагентов при помощи УниверсальнойОбработкиПереноса.epf и всё вроде ладно перенеслось, кроме одного- ЮрАдрес и телефон не прописался в "ВидКонтактнойИнформации" (см.рис. http://i013.radikal.ru/1611/94/a2413ac1f942.jpg ) . Эта информация выбирается из одноименного справочника, но в конфигураторе в форме Элемента спр.Контрагенты стоит "полеВвода" с типом строка. - http://s017.radikal.ru/i421/1611/c2/0dec89a2e36d.jpg Как добраться туда, чтобы обработкой заполнить эти недостающие данные?
   mehfk
 
16 - 05.11.16 - 06:16
Курни регистр сведений "КонтактнаяИнформация".

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует