Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Не могу произвести импорт документов с одной базы в другую
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.3
burza
Пытаюсь втянуть документы из одной базы в УТ. обработку пишу сам, ну где-то не стыковка не могу рассмотреть где . помогите.

            // Создаём запрос для выборки всех исходящих платежей за период
            запр =  СоединениеБух.NewObject("Запрос");
            запр.Текст = "ВЫБРАТЬ
                    |    Платеж.Дата,
                    |    Платеж.Номер,
                    |    Платеж.Плательщик,
                    |    Платеж.Получатель,
                    |    Платеж.СтатьяДвиженияДенежныхСредств,
                    |    Платеж.СуммаВВалютеПлатежа
                    |ИЗ
                    |    Документ.Платеж КАК Платеж
                    |ГДЕ
                    |    Платеж.Дата МЕЖДУ &НачалоПериода И &КонецПериода
                    |    И Платеж.Проведен = ИСТИНА";
            запр.УстановитьПараметр("НачалоПериода",Объект.НачалоПериода);
            запр.УстановитьПараметр("КонецПериода",Объект.КонецПериода);

            Выборка = запр.Выполнить().Выбрать();
            Пока Выборка.Следующий() Цикл
                Сообщить("Импорт платежа №" + Выборка.Номер);
                Если ПроверитьСуществованиеДокумента(Перечисления.ТипыПлатежей.ПриходБезналичный, Выборка.Номер, НачалоГода(Выборка.Дата), КонецГода(Выборка.Дата)) тогда
                    Сообщить("Импорт платежа №" + Выборка.Номер + " невозможен, поскольку он уже был импортирован");
                Иначе
                    НачатьТранзакцию();
                    НовыйРасходныйКассовыйОрдер = Документы.РасходныйКассовыйОрдер.СоздатьДокумент();
                    НовыйРасходныйКассовыйОрдер.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПоступлениеОплатыОтКлиента;
                    НовыйРасходныйКассовыйОрдер.СуммаДокумента = Выборка.СуммаВВалютеПлатежа;
                    НовыйРасходныйКассовыйОрдер.СтатьяДвиженияДенежныхСредств = Выборка.СтатьяДвиженияДенежныхСредств;
                    //НовыйРасходныйКассовыйОрдер.Валюта = Справочники.Валюты.НайтиПоНаименованию(Выборка.ВалютаПлатежаНаименование);
                    //Если НовыйРасходныйКассовыйОрдер.Валюта = Константы.ОсновнаяВалютаСистемы.Получить() тогда
                    //    НовыйРасходныйКассовыйОрдер.Курс = 1;
                    //    НовыйПлатёж.СуммаВБазовойВалюте = НовыйПлатёж.СуммаВВалютеПлатежа;
                    //КонецЕсли;
                    НовыйРасходныйКассовыйОрдер.Дата = Выборка.Дата;
                    НовыйРасходныйКассовыйОрдер.СправочныйНомерДокумента = Выборка.Номер;
                    НовыйРасходныйКассовыйОрдер.Контрагент =Выборка.Плательщик;
                    НовыйРасходныйКассовыйОрдер.Касса = Выборка.Получатель;
                    НовыйРасходныйКассовыйОрдер.Кассир = ПараметрыСеанса.ТекущийПользователь;
                    НовыйРасходныйКассовыйОрдер.Записать();
                    ЗафиксироватьТранзакцию();
                КонецЕсли;
            КонецЦикла;


вот и сама ошибка
salton
Здравствуйте. А документ "Платеж" у Вас есть?
У насколько мне помниться - в типовой УТ 2.3 такого документа не было...
В любом случае ошибка указывает на то, что в базе с которой Вы тянете данные нет объекта "Документ.Платеж"
burza
salton @ Сегодня, 9:50 необходимо зарегистрироваться для просмотра ссылки ,
Я тяну с своей базы в УТ.Документ есть, на фото с ошибкой видно что он вытягивает его номер с другой базы УУ0132433 а дальше ошибка
salton
На фото явно видно, что обработка останавливается на моменте выполнения запроса, так как не находит "Документ.Платеж".
Например в УТ2.3 точно нет "Документ.Платеж"... есть Документ.ПлатежноеПоручениеВходящее/Исходящее.

burza
salton @ Сегодня, 10:02 необходимо зарегистрироваться для просмотра ссылки ,
вы не про то подумали, выгрузка идет с базы в Ут а не наоборот
Petre
burza @ Сегодня, 11:35 необходимо зарегистрироваться для просмотра ссылки ,
Снимок ошибки не соответствует снимку кода.
burza
Petre @ Сегодня, 11:58 необходимо зарегистрироваться для просмотра ссылки ,
Это вы что этим хотите сказать? что я дал код другой обработки?) код правильный и скрин верный.
salton
Цитата(burza @ 29.11.17, 11:35) необходимо зарегистрироваться для просмотра ссылки
вы не про то подумали, выгрузка идет с базы в Ут а не наоборот

я как раз про то и подумал... из какой базы выгрузка? Какая конфигурация? В этой конфигурации есть "Документ.Платеж"?
Можете сделать скрин конфига с развернутыми документами?
Petre
burza @ Сегодня, 12:15 необходимо зарегистрироваться для просмотра ссылки ,
Именно это я и хочу сказать. Ваш код:
Выборка = запр.Выполнить().Выбрать();

Код из текста ошибки:
Выборка = Запрос.Выполнить().Выбрать();
burza
Petre @ Сегодня, 12:44 необходимо зарегистрироваться для просмотра ссылки ,

Исключено. я не настолько маша растеряша
Vidocq05
burza @ Сегодня, 14:02 необходимо зарегистрироваться для просмотра ссылки ,
Цитата(Petre @ 29.11.17, 13:44) необходимо зарегистрироваться для просмотра ссылки
Именно это я и хочу сказать. Ваш код:
Выборка = запр.Выполнить().Выбрать();

Код из текста ошибки:
Выборка = Запрос.Выполнить().Выбрать();

Плюс к этому - судя по ошибке, Ваш запрос не выполняется. Тогда откуда взялось сообщение со скрина? Данное сообщение должно выводится после выполнения запроса.
Сообщить("Импорт платежа №" + Выборка.Номер);


Цитата(Petre @ 29.11.17, 12:58) необходимо зарегистрироваться для просмотра ссылки
Снимок ошибки не соответствует снимку кода.

Похоже на то. Что-то Вы намудрили.
Petre
Цитата(burza @ 29.11.17, 13:02) необходимо зарегистрироваться для просмотра ссылки
Исключено. я не настолько маша растеряша

Я же вам привел очевидное.
Если "код правильный и скрин верный", то явно ругается не на приведенный код, а на какой-то другой...
burza
Разобрался.Импорт проходит только не заполняются все поля не могу понять почему. Контрагенты одинаковые и кассы тоже.

        // Создаём запрос для выборки всех исходящих платежей за период
            запр =  СоединениеБух.NewObject("Запрос");
            запр.Текст = "ВЫБРАТЬ
                    |    Платеж.Дата,
                    |    Платеж.Номер,
                    |    Платеж.Плательщик.Наименование КАК ПлательщикНаименование,
                    |    Платеж.Получатель.Наименование КАК ПолучательНаименование,
                    |    Платеж.СтатьяДвиженияДенежныхСредств.Наименование КАК СтатьяДвиженияДенежныхСредств,
                    |    Платеж.СуммаВВалютеПлатежа КАК СуммаДокумента
                    |ИЗ
                    |    Документ.Платеж КАК Платеж
                    |ГДЕ
                    |    Платеж.Дата МЕЖДУ &НачалоПериода И &КонецПериода
                    |    И Платеж.Проведен = ИСТИНА";
            запр.УстановитьПараметр("НачалоПериода",Объект.НачалоПериода);
            запр.УстановитьПараметр("КонецПериода",Объект.КонецПериода);

            Выборка = запр.Выполнить().Выбрать();
            Пока Выборка.Следующий() Цикл
                Сообщить("Импорт платежа №" + Выборка.Номер);
                Если ПроверитьСуществованиеДокумента(Перечисления.ТипыПлатежей.ПриходБезналичный, Выборка.Номер, НачалоГода(Выборка.Дата), КонецГода(Выборка.Дата)) тогда
                    Сообщить("Импорт платежа №" + Выборка.Номер + " невозможен, поскольку он уже был импортирован");
                Иначе
                    НачатьТранзакцию();
                    НовыйПриходныйКассовыйОрдер = Документы.ПриходныйКассовыйОрдер.СоздатьДокумент();
                    НовыйПриходныйКассовыйОрдер.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПоступлениеОплатыОтКлиента;
                    НовыйПриходныйКассовыйОрдер.СуммаДокумента = Выборка.СуммаДокумента;
                    НовыйПриходныйКассовыйОрдер.СтатьяДвиженияДенежныхСредств = Выборка.СтатьяДвиженияДенежныхСредств;
                    НовыйПриходныйКассовыйОрдер.Дата = Выборка.Дата;
                    НовыйПриходныйКассовыйОрдер.Номер = Выборка.Номер;
                    НовыйПриходныйКассовыйОрдер.Контрагент = Выборка.ПлательщикНаименование;
                    НовыйПриходныйКассовыйОрдер.Касса = Выборка.ПолучательНаименование;
                    НовыйПриходныйКассовыйОрдер.Кассир = ПараметрыСеанса.ТекущийПользователь;
                    НовыйПриходныйКассовыйОрдер.Записать();
                    ЗафиксироватьТранзакцию();
                КонецЕсли;
            КонецЦикла;


logist
Цитата(burza @ 30.11.17, 15:40) необходимо зарегистрироваться для просмотра ссылки
Контрагенты одинаковые и кассы тоже.

Одинаковые это когда у них одинаковый внутренний идентификатор, а не то, что вы видите как пользователь.
И если вы из источника тянете наименование, то в приемнике оно само в СправчникСсылка никак не преобразуется. Для того что бы заполнить ссылочные типы вам надо понимать и реализовать их сопоставление в базах.
Petre
burza @ Сегодня, 15:40 необходимо зарегистрироваться для просмотра ссылки ,
Через COM "одинаковыми" могут быть только примитивы, все остальное - не просто разные, но и вообще другие (другой тип - "COMОбъект").
burza
logist @ Вчера, 15:59 необходимо зарегистрироваться для просмотра ссылки ,
Вы скажите как написать) пример дайте.
burza
burza @ Сегодня, 9:34 необходимо зарегистрироваться для просмотра ссылки ,
вот так это делается.
НовыйПриходныйКассовыйОрдер.Контрагент = ПодобратьКонтрагента(Выборка.ПлательщикНаименование, Выборка.ПлательщикКодПоЕДРПОУ, Выборка.ПлательщикИНН);

как тяжело было сказать, все хотят помоч.
Petre
faceoff.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.