Версия для печати темы (https://pro1c.org.ua/index.php?s=a290a48875d2c8aec63fcc9ff5c9b154&showtopic=50339)
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 8.3 _ При выгрузки табличной части не вытягиваються все данные
Автор: burza 07.02.19, 13:17
Есть 2 базы с одной делаю импорт через com в другую, тяну данные с таблицы, короче должно быть идентично в обеих базах, но у меня не все данные затягивает, помогите)
КодПока Выборка.Следующий() Цикл
Сообщить("Загрузка документа" + Выборка.ДатаПлатежа);
Док = Документы.ПланПриходовУТ.НайтиПоНомеру(Выборка.Номер);
Если НЕ Док.Пустая() Тогда
Если Док.СуммаПлатежа = Выборка.СуммаПлатежа И Док.ВариантОплаты = Выборка.ВариантОплаты Тогда
Сообщить("Загрузка №" + Выборка.Номер + " невозможна, поскольку документ уже был загружен");
Продолжить;
КонецЕсли;
НачатьТранзакцию();
Док = Док.ПолучитьОбъект();
Иначе
НачатьТранзакцию();
Док = Документы.ПланПриходовУТ.СоздатьДокумент();
КонецЕсли;
НовСтрока = Док.ЭтапыГрафикаОплаты.Добавить();
НовСтрока.СуммаПлатежа = Выборка.СуммаПлатежа;
НовСтрока.ВариантОплаты = ПодобратьВариантОплаты(Выборка.ВариантОплаты);
НовСтрока.ПроцентПлатежа = Выборка.ПроцентПлатежа;
НовСтрока.Санаторий = ПодобратьСанаторий(Выборка.Санаторий);
НовСтрока.Контрагент = Выборка.Контрагент;
НовСтрока.Партнер = Выборка.Партнер;
НовСтрока.Организация = Выборка.Организация;
НовСтрока.ДатаПлатежа = Выборка.ДатаПлатежа;
НовСтрока.Оплачено = Выборка.Оплачено;
Док.Дата = Выборка.Дата;
Док.Номер= Выборка.Номер;
Док.Записать();
ЗафиксироватьТранзакцию();
КонецЦикла;
Это оригинал
А это что затягивает
Автор: Володька 07.02.19, 13:31
burza @ Сегодня, 14:17
,
Ну у Вас представлен только код обработки того, как Вы заполняете ТЧ, а сама Выборка не показана, смотрите запрос, что у Вас туда попадает, а вообще информативность ТЧ просто зашкаливает "Процент оплаты Z=120", Т.е. может в этом и дело, может запросом переплаты, Вы отсекаете.
Автор: burza 07.02.19, 13:34
Володька @ Сегодня, 13:31
,
КодПроцедура ПровестиИмпортВходящихПлатежей()
ВыборкаБазДляИмпорта = РегистрыСведений.СоединенияСБазамиДанныхУТ.Выбрать();
Пока ВыборкаБазДляИмпорта.Следующий() Цикл
Если (ВыборкаБазДляИмпорта.ЗагружатьПриходБезналичный) Тогда
Сообщить(ВыборкаБазДляИмпорта.СтрокаСоединения);
СоединениеБух = СоединитьсяСБазой(ВыборкаБазДляИмпорта.СтрокаСоединения);
Если СоединениеБух = неопределено тогда
Сообщить("Произошла ошибка при соединении с базой предприятия " + ВыборкаБазДляИмпорта.СтрокаСоединения, СтатусСообщения.Внимание);
Продолжить;
иначе
Сообщить("Успешно соединились с базой предприятия " + ВыборкаБазДляИмпорта.СтрокаСоединения, СтатусСообщения.Информация);
конецЕсли;
// Создаём запрос для выборки всех исходящих платежей за период
запр = СоединениеБух.NewObject("Запрос");
запр.Текст = "ВЫБРАТЬ
| РегистрСчетовЭтапыГрафикаОплаты.ВариантОплаты.Порядок КАК ВариантОплаты,
| РегистрСчетовЭтапыГрафикаОплаты.Ссылка.Номер КАК Номер,
| РегистрСчетовЭтапыГрафикаОплаты.Ссылка.Дата КАК Дата,
| РегистрСчетовЭтапыГрафикаОплаты.ДатаПлатежа КАК ДатаПлатежа,
| РегистрСчетовЭтапыГрафикаОплаты.ПроцентПлатежа,
| РегистрСчетовЭтапыГрафикаОплаты.СуммаПлатежа КАК СуммаПлатежа,
| РегистрСчетовЭтапыГрафикаОплаты.Оплачено,
| РегистрСчетовЭтапыГрафикаОплаты.Ссылка.Санаторий.Наименование КАК Санаторий,
| РегистрСчетовЭтапыГрафикаОплаты.Ссылка.Плательщик.Наименование КАК Контрагент,
| РегистрСчетовЭтапыГрафикаОплаты.Ссылка.Получатель.Наименование КАК Организация,
| РегистрСчетовЭтапыГрафикаОплаты.Ссылка.СсылкаНаЗаявки.Партнер.Наименование КАК Партнер,
| РегистрСчетовЭтапыГрафикаОплаты.Ссылка.СсылкаНаЗаявки
|ИЗ
| Документ.РегистрСчетов.ЭтапыГрафикаОплаты КАК РегистрСчетовЭтапыГрафикаОплаты
|ГДЕ
| РегистрСчетовЭтапыГрафикаОплаты.ДатаПлатежа МЕЖДУ &НачалоПериода И &КонецПериода
| И РегистрСчетовЭтапыГрафикаОплаты.Ссылка.Проведен = ИСТИНА
| И РегистрСчетовЭтапыГрафикаОплаты.Ссылка.ПометкаУдаления = ЛОЖЬ";
запр.УстановитьПараметр("НачалоПериода", Объект.НачалоПериода);
запр.УстановитьПараметр("КонецПериода", Объект.КонецПериода);
Выборка = запр.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Сообщить("Загрузка документа" + Выборка.ДатаПлатежа);
Док = Документы.ПланПриходовУТ.НайтиПоНомеру(Выборка.Номер);
Если НЕ Док.Пустая() Тогда
Если Док.СуммаПлатежа = Выборка.СуммаПлатежа И Док.ВариантОплаты = Выборка.ВариантОплаты Тогда
Сообщить("Загрузка №" + Выборка.Номер + " невозможна, поскольку документ уже был загружен");
Продолжить;
КонецЕсли;
НачатьТранзакцию();
Док = Док.ПолучитьОбъект();
Иначе
НачатьТранзакцию();
Док = Документы.ПланПриходовУТ.СоздатьДокумент();
КонецЕсли;
НовСтрока = Док.ЭтапыГрафикаОплаты.Добавить();
НовСтрока.СуммаПлатежа = Выборка.СуммаПлатежа;
НовСтрока.ВариантОплаты = ПодобратьВариантОплаты(Выборка.ВариантОплаты);
НовСтрока.ПроцентПлатежа = Выборка.ПроцентПлатежа;
НовСтрока.Санаторий = ПодобратьСанаторий(Выборка.Санаторий);
НовСтрока.Контрагент = Выборка.Контрагент;
НовСтрока.Партнер = Выборка.Партнер;
НовСтрока.Организация = Выборка.Организация;
НовСтрока.ДатаПлатежа = Выборка.ДатаПлатежа;
НовСтрока.Оплачено = Выборка.Оплачено;
Док.Дата = Выборка.Дата;
Док.Номер= Выборка.Номер;
Док.Записать();
ЗафиксироватьТранзакцию();
КонецЦикла;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Володька @ Сегодня, 13:31
,
Если в поле 2 строки то вытягивает только одну.
Автор: Vidocq05 07.02.19, 13:39
Цитата(burza @ 07.02.19, 13:33)
запр.УстановитьПараметр("НачалоПериода", Объект.НачалоПериода);
запр.УстановитьПараметр("КонецПериода", Объект.КонецПериода);
А сюда Вы что передаете?
Автор: burza 07.02.19, 13:44
Vidocq05 @ Сегодня, 13:39
,
НачалоГода КонецГода
Автор: Vofka 07.02.19, 13:45
И проверьте все ли документы проведены.
ПС. и если вы проверяете, что Проведен = ИСТИНА, то проверку на ПометкаУдаления = ЛОЖЬ можно не выполнять.
Автор: Володька 07.02.19, 13:46
| И РегистрСчетовЭтапыГрафикаОплаты.Ссылка.Проведен = ИСТИНА
| И РегистрСчетовЭтапыГрафикаОплаты.Ссылка.ПометкаУдаления = ЛОЖЬ";
Зачем делать отборы, если можно создать РС и сделать Регистратором Ваш документ? И в будущем все запросы делать к РС?
В самом запросе:
| РегистрСчетовЭтапыГрафикаОплаты.ДатаПлатежа МЕЖДУ &НачалоПериода И &КонецПериода
запр.УстановитьПараметр("НачалоПериода", Объект.НачалоПериода);
запр.УстановитьПараметр("КонецПериода", Объект.КонецПериода);
Я так понимаю Объект.НачалоПериода <= 21.11.2018 и Объект.КонецПериода <= 06.01.2019, так ли это?
Автор: burza 07.02.19, 13:47
Vofka @ Сегодня, 13:45
,
Документы проведены, на фото видно что в оригинале 3 строки а при обработки втягивает 2 одну пропускает. если что-то было не так с документом е те 2 строки не тянуло бы.
Автор: Володька 07.02.19, 13:47
burza @ Сегодня, 14:44
,
Вот и ошибка, гляньте, даты Ваших оплат, они не войдут в диапазон запроса.
Автор: burza 07.02.19, 13:47
Володька @ Сегодня, 13:46
,
НачалоГода КонецГода
Автор: Володька 07.02.19, 13:49
burza @ Сегодня, 14:47
,
Вы хотите получить документ 2018 года, если что
Автор: burza 07.02.19, 13:54
Володька @ Сегодня, 13:47
,
Да вы правы, такое банальное и я пропустил, там даты за прошлый год)))
как сюда дописать проверку по данным, для того чтобы получать обьект и писать изменения если сменяться изменения в оригинале?)
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua