Пытаюсь втянуть документы из одной базы в УТ. обработку пишу сам, ну где-то не стыковка не могу рассмотреть где . помогите.
// Создаём запрос для выборки всех исходящих платежей за период
запр = СоединениеБух.NewObject("Запрос");
запр.Текст = "ВЫБРАТЬ
| Платеж.Дата,
| Платеж.Номер,
| Платеж.Плательщик,
| Платеж.Получатель,
| Платеж.СтатьяДвиженияДенежныхСредств,
| Платеж.СуммаВВалютеПлатежа
|ИЗ
| Документ.Платеж КАК Платеж
|ГДЕ
| Платеж.Дата МЕЖДУ &НачалоПериода И &КонецПериода
| И Платеж.Проведен = ИСТИНА";
запр.УстановитьПараметр("НачалоПериода",Объект.НачалоПериода);
запр.УстановитьПараметр("КонецПериода",Объект.КонецПериода);
Выборка = запр.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Сообщить("Импорт платежа №" + Выборка.Номер);
Если ПроверитьСуществованиеДокумента(Перечисления.ТипыПлатежей.ПриходБезналичный, Выборка.Номер, НачалоГода(Выборка.Дата), КонецГода(Выборка.Дата)) тогда
Сообщить("Импорт платежа №" + Выборка.Номер + " невозможен, поскольку он уже был импортирован");
Иначе
НачатьТранзакцию();
НовыйРасходныйКассовыйОрдер = Документы.РасходныйКассовыйОрдер.СоздатьДокумент();
НовыйРасходныйКассовыйОрдер.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПоступлениеОплатыОтКлиента;
НовыйРасходныйКассовыйОрдер.СуммаДокумента = Выборка.СуммаВВалютеПлатежа;
НовыйРасходныйКассовыйОрдер.СтатьяДвиженияДенежныхСредств = Выборка.СтатьяДвиженияДенежныхСредств;
//НовыйРасходныйКассовыйОрдер.Валюта = Справочники.Валюты.НайтиПоНаименованию(Выборка.ВалютаПлатежаНаименование);
//Если НовыйРасходныйКассовыйОрдер.Валюта = Константы.ОсновнаяВалютаСистемы.Получить() тогда
// НовыйРасходныйКассовыйОрдер.Курс = 1;
// НовыйПлатёж.СуммаВБазовойВалюте = НовыйПлатёж.СуммаВВалютеПлатежа;
//КонецЕсли;
НовыйРасходныйКассовыйОрдер.Дата = Выборка.Дата;
НовыйРасходныйКассовыйОрдер.СправочныйНомерДокумента = Выборка.Номер;
НовыйРасходныйКассовыйОрдер.Контрагент =Выборка.Плательщик;
НовыйРасходныйКассовыйОрдер.Касса = Выборка.Получатель;
НовыйРасходныйКассовыйОрдер.Кассир = ПараметрыСеанса.ТекущийПользователь;
НовыйРасходныйКассовыйОрдер.Записать();
ЗафиксироватьТранзакцию();
КонецЕсли;
КонецЦикла;
вот и сама ошибка
Здравствуйте. А документ "Платеж" у Вас есть?
У насколько мне помниться - в типовой УТ 2.3 такого документа не было...
В любом случае ошибка указывает на то, что в базе с которой Вы тянете данные нет объекта "Документ.Платеж"
salton @ Сегодня, 9:50
необходимо зарегистрироваться для просмотра ссылки
,
Я тяну с своей базы в УТ.Документ есть, на фото с ошибкой видно что он вытягивает его номер с другой базы УУ0132433 а дальше ошибка
На фото явно видно, что обработка останавливается на моменте выполнения запроса, так как не находит "Документ.Платеж".
Например в УТ2.3 точно нет "Документ.Платеж"... есть Документ.ПлатежноеПоручениеВходящее/Исходящее.
salton @ Сегодня, 10:02 необходимо зарегистрироваться для просмотра ссылки
,
вы не про то подумали, выгрузка идет с базы в Ут а не наоборот
burza @ Сегодня, 11:35 необходимо зарегистрироваться для просмотра ссылки
,
Снимок ошибки не соответствует снимку кода.
Petre @ Сегодня, 11:58 необходимо зарегистрироваться для просмотра ссылки
,
Это вы что этим хотите сказать? что я дал код другой обработки?) код правильный и скрин верный.
Цитата(burza @ 29.11.17, 11:35) необходимо зарегистрироваться для просмотра ссылки
вы не про то подумали, выгрузка идет с базы в Ут а не наоборот
я как раз про то и подумал... из какой базы выгрузка? Какая конфигурация? В этой конфигурации есть "Документ.Платеж"?
Можете сделать скрин конфига с развернутыми документами?
burza @ Сегодня, 12:15
необходимо зарегистрироваться для просмотра ссылки
,
Именно это я и хочу сказать. Ваш код:
Выборка = запр.Выполнить().Выбрать();
Код из текста ошибки:
Выборка = Запрос.Выполнить().Выбрать();
Petre @ Сегодня, 12:44 необходимо зарегистрироваться для просмотра ссылки
,
Исключено. я не настолько маша растеряша
burza @ Сегодня, 14:02
необходимо зарегистрироваться для просмотра ссылки
,
Цитата(Petre @ 29.11.17, 13:44) необходимо зарегистрироваться для просмотра ссылки
Именно это я и хочу сказать. Ваш код:
Выборка = запр.Выполнить().Выбрать();
Код из текста ошибки:
Выборка = Запрос.Выполнить().Выбрать();
Плюс к этому - судя по ошибке, Ваш запрос не выполняется. Тогда откуда взялось сообщение со скрина? Данное сообщение должно выводится после выполнения запроса.
Сообщить("Импорт платежа №" + Выборка.Номер);
Цитата(Petre @ 29.11.17, 12:58) необходимо зарегистрироваться для просмотра ссылки
Снимок ошибки не соответствует снимку кода.
Похоже на то. Что-то Вы намудрили.
Цитата(burza @ 29.11.17, 13:02) необходимо зарегистрироваться для просмотра ссылки
Исключено. я не настолько маша растеряша
Я же вам привел очевидное.
Если "код правильный и скрин верный", то явно ругается не на приведенный код, а на какой-то другой...
Разобрался.Импорт проходит только не заполняются все поля не могу понять почему. Контрагенты одинаковые и кассы тоже.
// Создаём запрос для выборки всех исходящих платежей за период
запр = СоединениеБух.NewObject("Запрос");
запр.Текст = "ВЫБРАТЬ
| Платеж.Дата,
| Платеж.Номер,
| Платеж.Плательщик.Наименование КАК ПлательщикНаименование,
| Платеж.Получатель.Наименование КАК ПолучательНаименование,
| Платеж.СтатьяДвиженияДенежныхСредств.Наименование КАК СтатьяДвиженияДенежныхСредств,
| Платеж.СуммаВВалютеПлатежа КАК СуммаДокумента
|ИЗ
| Документ.Платеж КАК Платеж
|ГДЕ
| Платеж.Дата МЕЖДУ &НачалоПериода И &КонецПериода
| И Платеж.Проведен = ИСТИНА";
запр.УстановитьПараметр("НачалоПериода",Объект.НачалоПериода);
запр.УстановитьПараметр("КонецПериода",Объект.КонецПериода);
Выборка = запр.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Сообщить("Импорт платежа №" + Выборка.Номер);
Если ПроверитьСуществованиеДокумента(Перечисления.ТипыПлатежей.ПриходБезналичный, Выборка.Номер, НачалоГода(Выборка.Дата), КонецГода(Выборка.Дата)) тогда
Сообщить("Импорт платежа №" + Выборка.Номер + " невозможен, поскольку он уже был импортирован");
Иначе
НачатьТранзакцию();
НовыйПриходныйКассовыйОрдер = Документы.ПриходныйКассовыйОрдер.СоздатьДокумент();
НовыйПриходныйКассовыйОрдер.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ПоступлениеОплатыОтКлиента;
НовыйПриходныйКассовыйОрдер.СуммаДокумента = Выборка.СуммаДокумента;
НовыйПриходныйКассовыйОрдер.СтатьяДвиженияДенежныхСредств = Выборка.СтатьяДвиженияДенежныхСредств;
НовыйПриходныйКассовыйОрдер.Дата = Выборка.Дата;
НовыйПриходныйКассовыйОрдер.Номер = Выборка.Номер;
НовыйПриходныйКассовыйОрдер.Контрагент = Выборка.ПлательщикНаименование;
НовыйПриходныйКассовыйОрдер.Касса = Выборка.ПолучательНаименование;
НовыйПриходныйКассовыйОрдер.Кассир = ПараметрыСеанса.ТекущийПользователь;
НовыйПриходныйКассовыйОрдер.Записать();
ЗафиксироватьТранзакцию();
КонецЕсли;
КонецЦикла;
Цитата(burza @ 30.11.17, 15:40) необходимо зарегистрироваться для просмотра ссылки
Контрагенты одинаковые и кассы тоже.
Одинаковые это когда у них одинаковый внутренний идентификатор, а не то, что вы видите как пользователь.
И если вы из источника тянете наименование, то в приемнике оно само в СправчникСсылка никак не преобразуется. Для того что бы заполнить ссылочные типы вам надо понимать и реализовать их сопоставление в базах.
burza @ Сегодня, 15:40 необходимо зарегистрироваться для просмотра ссылки
,
Через COM "одинаковыми" могут быть только примитивы, все остальное - не просто разные, но и вообще другие (другой тип - "COMОбъект").
logist @ Вчера, 15:59 необходимо зарегистрироваться для просмотра ссылки
,
Вы скажите как написать) пример дайте.
burza @ Сегодня, 9:34
необходимо зарегистрироваться для просмотра ссылки
,
вот так это делается.
НовыйПриходныйКассовыйОрдер.Контрагент = ПодобратьКонтрагента(Выборка.ПлательщикНаименование, Выборка.ПлательщикКодПоЕДРПОУ, Выборка.ПлательщикИНН);
как тяжело было сказать, все хотят помоч.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.