Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Перенос документов посредством механизма OLE  (Прочитано 3437 раз)
0 Пользователей и 1 Гость смотрят эту тему.
annyz
Интересующийся

ua
Offline Offline

« : 21-11-2012 09:33 » 

Документ создает, но данные записывает только табличной части(контрагент, вид торговли,примечание - все пустое), подскажите,пожалуйста, что не так?



Код: (1C v8)
        ДокИсточник.SelectDocuments(Дата1,Дата2);
        Пока ДокИсточник.GetDocument() = 1 Цикл
                        Если ДокИсточник.проведен()=1 Тогда
                                 ДокПриемник.выбратьДокументы(ДокИсточник.датаДок,ДокИсточник.ДатаДок)  ;
                                 пока ДокПриемник.получитьДокумент()=1 цикл
                                         если (ДокПриемник.пометкаУдаления()=0) и
                                         (сокрлп(ДокПриемник.НомерДок)=сокрлп(ДокИсточник.номерДок)) ТОГДА
                                                документЕсть=1;
                                                СООБЩИТЬ("Документ " +ДокИсточник.номердок+" уже перенесен!") ;
                                                прервать;
                                        КонецЕсли;  
                                конецЦикла;    
                               
                            Если   документЕсть=0 тогда  
                                        Пока ДокПриемник.ПолучитьДокумент()=1 Цикл  
                                                ДокПриемник.Новый();
                                                СООБЩИТЬ("Создаем новый документ "+ДокПриемник.номердок) ;
                                                ДокПриемник.датаДок=ДокИсточник.ДатаДок;  
                                                ДокПриемник.НомерДок=сокрлп(ДокИсточник.номерДок);  
                                               
                                                        ДокПриемник.Фирма=константа.БазФирма;  
                                                        ДокПриемник.Контрагент=ПолучитьКонтрагент(докИсточник);
                                                        ДокПриемник.ВидТорговли=ДокИсточник.ВидТорговли;  
                                                        ДокПриемник.ВидНДС=ДокИсточник.ВидНДС;
                                                        ДокПриемник.Примечание=ДокИсточник.Примечание;
                                                        ДокИсточник.выбратьстроки();  
                                                        // табл.часть  
                                                        пока ДокИсточник.получитьСтроку()=1 Цикл
                                                                ДокПриемник.новаяСтрока();
                                                                ДокПриемник.кво=ДокИсточник.кво;
                                                                ДокПриемник.ценаБезНДС=ДокИсточник.ЦенаБезНДС;
                                                                ДокПриемник.СуммаСНДС=ДокИсточник.суммаСНДС;
                                                                ДокПриемник.СуммаБезНДС=ДокИсточник.суммаБезНДС;
                                                                ДокПриемник.НДС=ДокПриемник.СуммаСНДС-ДокПриемник.СуммаБезНДС;
                                                                ДокПриемник.Услуга=ПолучитьУслугу(докИсточник);
                                                                ДокПриемник.Коэффициент=ДокИсточник.Коэффициент;
                                                                ДокПриемник.СуммаБезСкидки=ДокИсточник.СуммаБезСкидки;
                                                                ДокПриемник.Скидка=ДокИсточник.Скидка;
                                                        конецЦикла;
                                                        ДокПриемник.записать();
                                        КонецЦикла;  
                                КонецЕсли;  
                               

                       
                        КонецЕсли;    
        КонецЦикла;
               
        Состояние("Завершение переноса документов ...");
« Последнее редактирование: 22-11-2012 08:54 от Kivals » Записан
Kivals
Модератор

us
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 22-11-2012 09:04 » 

1. Используй теги [code=e1cv8][/code] или [code][/code]
2. Отформатируй текст - и читать легче, и тебе легче искать в нем ошибки будет.
3. Не понял как вообще работает блок
Код: (1C v8)
Пока ДокПриемник.ПолучитьДокумент()=1 Цикл  
    ДокПриемник.Новый();
    ...
4. Не знаю что не так с примечанием (по идее это строка, так что все должно получатсья), но поскольку ДокИсточник в базе OLE (согласно названию темы), то:
4а. "ДокПриемник.ВидТорговли=ДокИсточник.ВидТорговли;" - так делать нельзя: ты объекту в этой базе присваиваешь значение из другой базы. Тебе нужно по некоему признаку (код, наименование, ...) найти аналогичный объект в рабочей базе и присвоить его значение в документ.
4б. Абсолютно неясно что делает "ПолучитьКонтрагент(докИсточник);" - есть подозрение, что тоже возвращает OLE объект, а значит - см. (4а)
« Последнее редактирование: 22-11-2012 09:06 от Kivals » Записан
annyz
Интересующийся

ua
Offline Offline

« Ответ #2 : 24-11-2012 19:47 » 

Kivals, Спасибо огромное!!!!

Все исправила, все работает!!! (на удивление)!!!  )))
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines