Имя: Пароль:
1C
1С v8
Работа по по OLE 7.7->8.3
0 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.ТекущийЭлемент();
    КонецЕсли;

выкидывай. это вам не это
2 MrStomak
 
24.10.16
14:37
ПолучитьОбъект()
3 Aldnepr
 
24.10.16
14:41
(2) Напиши пжлста в коде, я в 8 только разбираюсь
4 MrStomak
 
24.10.16
14:50
(3) Если в 8 разбираешься, то в чем проблема изменить 8шный справочник? То же самое всё. Как-то так должно быть:
Контр8 = Приемник.Справочники.контрагенты.НайтиПоКоду("блаблабла");
Если Контр8.Пустая()=1 Тогда
Контр8Объект = Приемник.Справочники.Контрагенты.СоздатьЭлемент();
Иначе
Контр8Объект = Контр8.ПолучитьОбъект();
КонецЕсли;
Контр8Объект.Записать();
5 Aldnepr
 
24.10.16
14:56
(4) Спасибо, добрый Человек! Может подскажете мануал по языку 8, чтобы без лишней воды можно было быстрее разобраться?
6 Aldnepr
 
24.10.16
15:00
(4) я v8 только начал вникать, и все накопленное от 7,7 теперь будет страшно мешать восприятию новой конструкции ( это я как то сразу понял)
7 mehfk
 
24.10.16
15:04
8 mehfk
 
24.10.16
15:05
9 Aldnepr
 
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);
>>>               Ед=выборка.СоздатьЭлемент();

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

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

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

пиши

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

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

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

пиши

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

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

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

вообще на грани абсурда. Ты элемент справочника со строкой сравниваешь.
15 Aldnepr
 
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 Как добраться туда, чтобы обработкой заполнить эти недостающие данные?
16 mehfk
 
05.11.16
06:16
Курни регистр сведений "КонтактнаяИнформация".
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.