Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2, свеженьких 1
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Не могу произвести импорт документов с одной базы в другую , Пишу свою обработку по импорту документов с одной базы в УТ 3.0          
burza Подменю пользователя
сообщение 29.11.17, 9:42
Сообщение #1

Оратор
*****
Группа: Пользователи
Сообщений: 312
Спасибо сказали: 1 раз
Рейтинг: 1

Пытаюсь втянуть документы из одной базы в УТ. обработку пишу сам, ну где-то не стыковка не могу рассмотреть где . помогите.

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

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


вот и сама ошибка

salton Подменю пользователя
сообщение 29.11.17, 9:50
Сообщение #2

Говорящий
***
Группа: Пользователи
Сообщений: 92
Из: Полтава
Спасибо сказали: 24 раз
Рейтинг: 0

Здравствуйте. А документ "Платеж" у Вас есть?
У насколько мне помниться - в типовой УТ 2.3 такого документа не было...
В любом случае ошибка указывает на то, что в базе с которой Вы тянете данные нет объекта "Документ.Платеж"

burza Подменю пользователя
сообщение 29.11.17, 9:57
Сообщение #3

Оратор
*****
Группа: Пользователи
Сообщений: 312
Спасибо сказали: 1 раз
Рейтинг: 1

salton @ Сегодня, 9:50 * ,
Я тяну с своей базы в УТ.Документ есть, на фото с ошибкой видно что он вытягивает его номер с другой базы УУ0132433 а дальше ошибка

salton Подменю пользователя
сообщение 29.11.17, 10:02
Сообщение #4

Говорящий
***
Группа: Пользователи
Сообщений: 92
Из: Полтава
Спасибо сказали: 24 раз
Рейтинг: 0

На фото явно видно, что обработка останавливается на моменте выполнения запроса, так как не находит "Документ.Платеж".
Например в УТ2.3 точно нет "Документ.Платеж"... есть Документ.ПлатежноеПоручениеВходящее/Исходящее.


burza Подменю пользователя
сообщение 29.11.17, 11:35
Сообщение #5

Оратор
*****
Группа: Пользователи
Сообщений: 312
Спасибо сказали: 1 раз
Рейтинг: 1

salton @ Сегодня, 10:02 * ,
вы не про то подумали, выгрузка идет с базы в Ут а не наоборот

Petre Подменю пользователя
сообщение 29.11.17, 11:58
Сообщение #6

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2905
Из: Київ, Україна
Спасибо сказали: 1147 раз
Рейтинг: 1228.9

burza @ Сегодня, 11:35 * ,
Снимок ошибки не соответствует снимку кода.


Signature
Допрацьовую:
- "Бухгалтерія для України 2.1";
- "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія".

burza Подменю пользователя
сообщение 29.11.17, 12:15
Сообщение #7

Оратор
*****
Группа: Пользователи
Сообщений: 312
Спасибо сказали: 1 раз
Рейтинг: 1

Petre @ Сегодня, 11:58 * ,
Это вы что этим хотите сказать? что я дал код другой обработки?) код правильный и скрин верный.

salton Подменю пользователя
сообщение 29.11.17, 12:18
Сообщение #8

Говорящий
***
Группа: Пользователи
Сообщений: 92
Из: Полтава
Спасибо сказали: 24 раз
Рейтинг: 0

Цитата(burza @ 29.11.17, 11:35) *
вы не про то подумали, выгрузка идет с базы в Ут а не наоборот

я как раз про то и подумал... из какой базы выгрузка? Какая конфигурация? В этой конфигурации есть "Документ.Платеж"?
Можете сделать скрин конфига с развернутыми документами?

Petre Подменю пользователя
сообщение 29.11.17, 12:44
Сообщение #9

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2905
Из: Київ, Україна
Спасибо сказали: 1147 раз
Рейтинг: 1228.9

burza @ Сегодня, 12:15 * ,
Именно это я и хочу сказать. Ваш код:
Выборка = запр.Выполнить().Выбрать();

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


Signature
Допрацьовую:
- "Бухгалтерія для України 2.1";
- "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія".

burza Подменю пользователя
сообщение 29.11.17, 13:02
Сообщение #10

Оратор
*****
Группа: Пользователи
Сообщений: 312
Спасибо сказали: 1 раз
Рейтинг: 1

Petre @ Сегодня, 12:44 * ,

Исключено. я не настолько маша растеряша

Vidocq05 Подменю пользователя
сообщение 29.11.17, 13:35
Сообщение #11

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 214
Из: Сумы
Спасибо сказали: 38 раз
Рейтинг: 0

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

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

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


Цитата(Petre @ 29.11.17, 12:58) *
Снимок ошибки не соответствует снимку кода.

Похоже на то. Что-то Вы намудрили.

Petre Подменю пользователя
сообщение 29.11.17, 13:48
Сообщение #12

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2905
Из: Київ, Україна
Спасибо сказали: 1147 раз
Рейтинг: 1228.9

Цитата(burza @ 29.11.17, 13:02) *
Исключено. я не настолько маша растеряша

Я же вам привел очевидное.
Если "код правильный и скрин верный", то явно ругается не на приведенный код, а на какой-то другой...


Signature
Допрацьовую:
- "Бухгалтерія для України 2.1";
- "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія".

burza Подменю пользователя
сообщение 30.11.17, 15:40
Сообщение #13

Оратор
*****
Группа: Пользователи
Сообщений: 312
Спасибо сказали: 1 раз
Рейтинг: 1

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

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

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



logist Подменю пользователя
сообщение 30.11.17, 15:59
Сообщение #14

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Цитата(burza @ 30.11.17, 15:40) *
Контрагенты одинаковые и кассы тоже.

Одинаковые это когда у них одинаковый внутренний идентификатор, а не то, что вы видите как пользователь.
И если вы из источника тянете наименование, то в приемнике оно само в СправчникСсылка никак не преобразуется. Для того что бы заполнить ссылочные типы вам надо понимать и реализовать их сопоставление в базах.


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Petre Подменю пользователя
сообщение 30.11.17, 16:31
Сообщение #15

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2905
Из: Київ, Україна
Спасибо сказали: 1147 раз
Рейтинг: 1228.9

burza @ Сегодня, 15:40 * ,
Через COM "одинаковыми" могут быть только примитивы, все остальное - не просто разные, но и вообще другие (другой тип - "COMОбъект").


Signature
Допрацьовую:
- "Бухгалтерія для України 2.1";
- "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія".

burza Подменю пользователя
сообщение 01.12.17, 9:34
Сообщение #16

Оратор
*****
Группа: Пользователи
Сообщений: 312
Спасибо сказали: 1 раз
Рейтинг: 1

logist @ Вчера, 15:59 * ,
Вы скажите как написать) пример дайте.

burza Подменю пользователя
сообщение 01.12.17, 11:28
Сообщение #17

Оратор
*****
Группа: Пользователи
Сообщений: 312
Спасибо сказали: 1 раз
Рейтинг: 1

burza @ Сегодня, 9:34 * ,
вот так это делается.
НовыйПриходныйКассовыйОрдер.Контрагент = ПодобратьКонтрагента(Выборка.ПлательщикНаименование, Выборка.ПлательщикКодПоЕДРПОУ, Выборка.ПлательщикИНН);

как тяжело было сказать, все хотят помоч.

Petre Подменю пользователя
сообщение 01.12.17, 12:36
Сообщение #18

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2905
Из: Київ, Україна
Спасибо сказали: 1147 раз
Рейтинг: 1228.9

faceoff.gif


Signature
Допрацьовую:
- "Бухгалтерія для України 2.1";
- "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія".

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 18.04.24, 16:34
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!