Версия для печати темы (http://pro1c.org.ua/index.php?s=c0d9be00777dd97c20d1189322856eb1&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 года, если чтоwink.gif

Автор: burza 07.02.19, 13:54

Володька @ Сегодня, 13:47 * ,
Да вы правы, такое банальное и я пропустил, там даты за прошлый год)))

как сюда дописать проверку по данным, для того чтобы получать обьект и писать изменения если сменяться изменения в оригинале?)

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
http://pro1c.org.ua