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

1С:Предприятие ::

Метки:

Установить для реквизита типа неоперделенный

Я
   LOSS
 
13.01.05 - 07:11
//Ситуация следующая, есть местная база и база ОЛЕ, в местной базе есть ДОкумент.ПриходныйОрдер с  реквизитом Субконто1, котоорый в зависимости от выбираемого КоррСчет такого же дока в базе ОЛЕ, принимает значение какого либо справочника. Так вот как с базы ОЛЕ воткнуть выбираемого элемент справочника в документ ПриходныйОрдер местной базы. 


Док.КоррСчет=СчетПоКоду(ДокОЛЕ.Счет.Код); 
            Если Док.КоррСчет=СчетПоКоду("301") Тогда
                Док.УстановитьАтрибут("КоррСчет",СчетПоКоду("301.1"));
                Спр.ВыбратьЭлементы();
                СпрОле.ВыбратьЭлементы();
                Пока СпрОле.ПолучитьЭлемент()=1 Цикл 
                   //СпрОЛЕ.ТекущийЭлемент(); 

                    Если Спр.НайтиПоНаименованию(СпрОле.Наименование,0,0)=1 Тогда
Если (СокрЛП(СпрОЛЕ.РНН)=СокрЛП(Спр.РНН))  И
                        (СокрЛП(СпрОЛЕ.ПолнНаим)=СокрЛП(Спр.ПолнНаим)) Тогда
                            Сообщить("Найден идентичный элемент "+ СпрОЛЕ.Наименование+" РНН "+СпрОЛЕ.РНН+ " справочника в базе ");
                            Для А = 1 По 3 Цикл
                                Док.НазначитьТип("Субконто"+А,Док.КоррСчет.ВидСубконто(А));
                                Спр=СоздатьОбъект("Справочник.Контрагенты");
                                Спр.ВыбратьЭлементы();
                            Пока Спр.ПолучитьЭлемент()=1 Цикл
                            ;
                                Док.Субконто1=Спр.ТекущийЭлемент()//

                            КонецЦикла;
                            КонецЦикла;
                        Сообщить(Док.Субконто1);    
                        КонецЕсли;
                       // создаем объект справочника местной базы

                       //    Спр.найтиПоКоду(СпрОле.Код,0);

                       // Или  

                        Если ПустоеЗначение(СпрОЛЕ.РНН)=1 Тогда 
                            Если Число(СпрОЛЕ.РНН)<12 Тогда
                                Сообщить("РНН не заполнен или меньше 12 цифр!.Проверьте РНН "+СпрОЛЕ.Наименование+" в загружаемой базе.");
                            КонецЕсли;
                        КонецЕсли;
                        КонецЕсли;
 
  Рекламное место пустует
   mvgfirst
 
5 - 13.01.05 - 07:48
(0) Местная база не может использовать объект OLE никоим образом в реквизитах местных объектов. Т.к. через OLE можно получать только простые типы данных. Или вызывать методы объектов OLE-базы и получать как результат те же простые типы данных (число, строка, помоему еще дата неуверен)

Следовательно ковырять тебе надо в сторону поиска в местной базе объекта по значению ввиде простого типа данных полученного из OLE базы....

А дальше все ограничивается только полетом фантазии.... и вообще перенос между двумя базами можно написать один раз и забыть навсегда .... :) Как я и сделал. Теперь только правила переноса настраиваю для новых баз данных и все телемаркет
   LOSS
 
6 - 13.01.05 - 08:07
В том и дело, что я сначала ищу в местной базе совпадающий элемент справочника. А потом элемент местной базы пытаюсь присвоить этот элемент реквизиту документа приходный ордер местной базы. Вопрос по другому поставлю почемму

Док.НазначитьТип("Субконто1",КоррСчет.ВидСубконто(1));
                               Спр=СоздатьОбъект("Справочник.Контрагенты"); 
                               Спр.ВыбратьЭлементы(); 
                           Пока Спр.ПолучитьЭлемент()=1 Цикл 
                           
                               Док.Субконто1=Спр.ТекущийЭлемент()// здесь не присваивает реквизиту Субконто1 элемент справочника
   Шумелка-мышь
 
7 - 13.01.05 - 08:28
Например, потому что тип, назначенный для Субконто1, не является Справочник.Контрагенты
   LOSS
 
8 - 13.01.05 - 08:38
Док.НазначитьТип("Субконто1",КоррСчет.ВидСубконто(1)); 
//это справончик.контрагенты


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