Форум программистов, компьютерный форум, киберфорум
Наши страницы
1С: Собственные программы
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
Shadowbobr2121
0 / 0 / 1
Регистрация: 15.07.2017
Сообщений: 26
#1

Удвоение записей, при данных выгрузке в BDF

11.09.2017, 10:49. Просмотров 829. Ответов 2
Метки нет (Все метки)

День добрый. Написал небольшую выгрузку, которая перегружает данные из запроса, в BataBase файл, с нужными мне полями. Но при выгрузке записи удваиваются и утраиваются. Не пойму из за чего именно. Логику проверил, вроде все верно. ниже пример кода

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
        Результат = Запрос.Выполнить();
 
        Connection = Новый COMОбъект("ADODB.Connection");
    Command = Новый COMОбъект("ADODB.Command");
    
    Попытка
        Connection.Open(_СЭПО_MetaSQL.ПолучитьСтрокуПодключенияКТаблицамVisualFoxPro(ВыборКаталога))
    Исключение
        ВызватьИсключение "Не удалось установить соединение с источником данных!"
    КонецПопытки;
    
    Command.CommandType = 1;
    Command.ActiveConnection = Connection;  
    
    Connection.BeginTrans();
    
    ВыборкаСотрудник = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    
    Попытка
        
        Пока ВыборкаСотрудник.Следующий() Цикл
            
            ВыборкаДетальныеЗаписи = ВыборкаСотрудник.Выбрать();
            
            ДатаНачала = Неопределено;
            ДатаКонца  = Неопределено;
            ПредыдущийПериод = Неопределено;
            
            Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
                
                ДатаНачала = ?(ДатаНачала = Неопределено,ВыборкаДетальныеЗаписи.Период,ДатаНачала);
                ДатаКонца  = ?(ДатаКонца = Неопределено,ВыборкаДетальныеЗаписи.Период,ДатаКонца);
                
                Если ПредыдущийПериод = Неопределено Тогда
                    
                    ПредыдущийПериод = ВыборкаДетальныеЗаписи.Период;
                    
                ИначеЕсли ВыборкаДетальныеЗаписи.Период = ПредыдущийПериод + 86400 Тогда
                    
                    ДатаКонца = ВыборкаДетальныеЗаписи.Период;
                    ПредыдущийПериод = ВыборкаДетальныеЗаписи.Период;
                    
                Иначе   
                    
                    Command.CommandText = "INSERT INTO DEPENS "
                    + "(NGOD, MES, IN, CEX, TABN, VOP, DATN, DATOK, SROK) VALUES ("
                    + "2017, "                                              //NGOD
                    + Месяц(Период) + ", "                                  //MES
                    + ВыборкаСотрудник.ИдентификационныйНомер + ", "        //IN
                    + ВыборкаСотрудник.ПодразделениеОрганизации + ", "      //CEX
                    + Формат(ВыборкаСотрудник.ТабНомер, "ЧН=0; ЧГ=0") + ", "//TABN
                    + "109, {"                                              //VOP
                    + Формат(ДатаНачала, "ДФ=ММ/дд/гггг") + "}, {"          //DATN
                    + Формат(ДатаКонца, "ДФ=ММ/дд/гггг") + "}, "            //DATK
                    + "3)";                                                 //SROK
                    
                    Command.Execute();
                    
                    ДатаНачала = ВыборкаДетальныеЗаписи.Период;
                    ДатаКонца  = ВыборкаДетальныеЗаписи.Период;
                    ПредыдущийПериод = ВыборкаДетальныеЗаписи.Период;
                    
                КонецЕсли;
                
            КонецЦикла;
            
            Command.CommandText = "INSERT INTO DEPENS "
            + "(NGOD, MES, IN, CEX, TABN, VOP, DATN, DATOK, SROK) VALUES ("
            + "2017, "                                              //NGOD
            + Месяц(Период) + ", "                                  //MES
            + ВыборкаСотрудник.ИдентификационныйНомер + ", "        //IN
            + ВыборкаСотрудник.ПодразделениеОрганизации + ", "      //CEX
            + Формат(ВыборкаСотрудник.ТабНомер, "ЧН=0; ЧГ=0") + ", "//TABN
            + "109, {"                                              //VOP
            + Формат(ДатаНачала, "ДФ=ММ/дд/гггг") + "}, {"          //DATN
            + Формат(ДатаКонца, "ДФ=ММ/дд/гггг") + "}, "            //DATK
            + "3)";                                                 //SROK
            
            Command.Execute();
            
        КонецЦикла; 
        
        Connection.CommitTrans();
        Connection.Close()
        
    Исключение
        
        Connection.RollbackTrans();
        Connection.Close();
        ВызватьИсключение ОписаниеОшибки()
        
    КонецПопытки;
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.09.2017, 10:49
Ответы с готовыми решениями:

Ошибки при выгрузке данных. Правила написаны через Конвертацию данных редакции 2
Добрый день. Подскажите, пожалуйста, в чем может быть дело. Через конвертацию...

Ошибки При Выгрузке Данных Через Конвертацию Данных
Добрый день. Подскажите, пожалуйста, в чем может быть дело. Через конвертацию...

Обрезать длинну имени файла при выгрузке в Dbf
Всем прив. и удачи, задам глупый вопрос--- как сокр длинну имени получаемого...

1c7.7 ЗиК ошибка при выгрузке проводок в восьерку
Пользовали зик 284 и через сервис/обмен данными/обмен с конфигурацией...

Перейти к полю объекта при выгрузке запроса в таблицу значений
Приветствую. У меня тут капельку глупый вопрос вот есть что-то такое ...

2
GreenkA
(◉‿◉)
Эксперт 1С
1965 / 1518 / 474
Регистрация: 25.06.2009
Сообщений: 5,440
11.09.2017, 12:04 #2
Shadowbobr2121, не понимаю, где здесь правильная логика: вы обходите выборку запроса по группировкам - хорошо.
ВыборкаСотрудник - верхний уровень, внутри обхода этой группировки - цикл с обходом ВыборкаДетальныеЗаписи. И в этом вложенном цикле вы пишете данные в файл, но используя данные ВыборкаСотрудник и полученные из ВыборкаДетальныеЗаписи значения переменных ДатаНачала и ДатаКонца - ок, ладно.
Зачем после цикла обхода ВыборкаДетальныеЗаписи снова запись в файл с теми же значениями? Какие у вас будут значения переменных ДатаНачала и ДатаКонца после цикла? Вот подумайте, а лучше отладчиком пройдитесь.
0
Shadowbobr2121
0 / 0 / 1
Регистрация: 15.07.2017
Сообщений: 26
12.09.2017, 10:45  [ТС] #3
Лучший ответ Сообщение было отмечено GreenkA как решение

Решение

GreenkA, прошу прощения. Но ошибка была в CDX файле. А с циклом выборки все в порядке. Спасибо что откликнулись на помощь!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.09.2017, 10:45

УТ 10.3: удвоение суммы в регистр
Здравствуйте. Столкнулся с такой проблемой: создаем документ...

Ошибка при выгрузке данных в Excel
Ребят, подскажи в чем ошибка. Выгружается только одна запись из запроса, хотя...

При выгрузке данных в Excel ошибка 103
Доброго времени суток. Есть программа СЛС-Склад, написанная, на Pascal (код...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru