Форум программистов, компьютерный форум, киберфорум
Наши страницы

1С: Собственные программы

Войти
Регистрация
Восстановить пароль
 
emkaa
0 / 0 / 2
Регистрация: 30.09.2013
Сообщений: 79
#1

Выгрузка данных в dbf файл: обработка выборки запроса на сервере, запись файла - на клиенте. - 1С

09.03.2017, 13:55. Просмотров 496. Ответов 5
Метки нет (Все метки)

Добрый день. Пишу процедуру выгрузки данных в dbf файл. Запрос выполняется НаСервере, а остальной код должен выполняться НаКлиенте. Подскажите как это описать в коде, не пойму никак

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
&НаСервере
Процедура ВыгрузитьДБФ(Команда)
    
    ДБФ = Новый xbase;
    ДБФ.поля.Добавить("SBK_NUM","S",20);
    ДБФ.поля.Добавить("SBK_PAN","S",16);
    ДБФ.поля.Добавить("SBK_PAS","S",20);
    ДБФ.поля.Добавить("SBK_FIO","S",60);
    ДБФ.поля.Добавить("SBK_SUM","F",20,2);
    
    ИмяБазы = "D:" + "zarp_"+СокрЛП(Формат(ТекущаяДата(),"ДФ=MM.YYYY"));
    ДБФ.СоздатьФайл(ИмяБазы);
    
    Запрос = Новый Запрос;
    
    Запрос.Текст = "ВЫБРАТЬ ВедомостьНаВыплатуЗарплатыВБанкЗарплата.ФизическоеЛицо КАК ФизЛицо
                         | ВедомостьНаВыплатуЗарплатыВБанкЗарплата.НомерЛицевогоСчета КАК НомерЛицевогоСчета
                         | ВедомостьНаВыплатуЗарплатыВБанкЗарплата.КВыплате КАК КВыплате
                         |
                         |ИЗ 
                         | Документ.ВедомостьНаВыплатуЗарплатыВБанк.Зарплата КАК ВедомостьНаВыплатуЗарплатыВБанкЗарплата 
                         |ГДЕ ВедомостьНаВыплатуЗарплатыВБанкЗарплата.Ссылка = &СсылкаНаЭтотДокумент"; 
 //                      |
 //                      |
    Запрос.УстановитьПараметр("СсылкаНаЭтотДокумент",Объект.Ссылка);    
    Результат = Запрос.Выполнить().Выбрать();   
    
    Пока Результат.Следующий() Цикл
        ДБФ.Добавить();
        ДБФ.SBK_FIO = Результат.ФизЛицо;
        ДБФ.SBK_NUM = Результат.НомерЛицевогоСчета;
        ДБФ.SBK_SUM = Результат.КВыплате;
        ДБФ.Записать();
    КонецЦикла; 
    
    ДБФ.ЗакрытьФайл();
    
    
КонецПроцедуры
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.03.2017, 13:55
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Выгрузка данных в dbf файл: обработка выборки запроса на сервере, запись файла - на клиенте. (1С):

1C 8.x Выгрузка данных из Документа в DBF файл - 1С
Здравствуйте! Вот у меня следующий вопрос. Я делаю выгрузку данных из документа "ЗарплатаКВыплатеОрганизаций" в DBF файл. Мне необходимо...

Загрузка из Blob на сервере Excel файла и выгрузка его в память с целью вывода на клиенте для просмотра - Delphi БД
Здравствуйте, есть следующая функция //Загрузка файла из таблицы BLOBS function GetBLOBSFile(id : Integer; FilePath : String = '')...

Запись данных в файл с расширение *.dbf - C#
Задача есть форма на ней текст бокс с него надо занести данные в файл с расширение dbf. Помогите не могу не как настроить OleDbConnection...

Синхронизация баз данных на клиенте и сервере - Программирование Android
Здравствуйте, подскажите как реализовать простенькое клиент-серверное приложение в котором при редактировании бд сервера автоматически...

1C 8.x 1С Коммунальщик: выгрузка в файл dbf начислений по определенным адресам - 1С
Возник вопрос не совсем по моему профилю, поэтому сразу приношу извинения если буду писать глупости. Итак постановка задачи. Имеется...

Шифрование данных на клиенте и дешифровка на сервере реализация SSL - PHP
Здравствуйте друзья. Зашел вопрос о том, как можно реализовать принцип обертывания данных шифрованием используемый в SSL. Вот вся суть...

5
GreenkA
(◉‿◉)
Эксперт 1С
1964 / 1502 / 474
Регистрация: 25.06.2009
Сообщений: 5,401
09.03.2017, 14:25 #2
emkaa, если это команда формы обработки, например, можно создать таблицу, как реквизит формы. Заполнить её выборкой запроса на сервере и работать с ней дальше на клиенте.
0
emkaa
0 / 0 / 2
Регистрация: 30.09.2013
Сообщений: 79
09.03.2017, 15:36  [ТС] #3
GreenkA. Создал табличную часть "ВремТаб" с реквизитами ФизЛицо, НомерЛицевогоСчета, КВыплате. Подскажите пожалуйста, как теперь записать значения запроса в созданную табличную часть?
0
GreenkA
(◉‿◉)
Эксперт 1С
1964 / 1502 / 474
Регистрация: 25.06.2009
Сообщений: 5,401
09.03.2017, 15:48 #4
emkaa, это реквизит формы или объекта?
1C
1
2
3
4
Пока Результат.Следующий() Цикл
  ЗаполнитьЗначенияСвойств(ВремТаб.Добавить(), Результат);
//если ВремТаб - реквизит объекта, то ЗаполнитьЗначенияСвойств(Объект.ВремТаб.Добавить(), Результат);
КонецЦикла;
1
emkaa
0 / 0 / 2
Регистрация: 30.09.2013
Сообщений: 79
10.03.2017, 14:54  [ТС] #5
GreenkA, спасибо большое. Сделал так, вроде работает.
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
&НаСервере
Процедура ВыгрузитьДБФНаСервере()
    // Вставить содержимое обработчика.
    Запрос = Новый Запрос;
    
    Запрос.Текст = "ВЫБРАТЬ 
                    |   ВедомостьНаВыплатуЗарплатыВБанкЗарплата.ФизическоеЛицо КАК ФизЛицо,
                    |   ВедомостьНаВыплатуЗарплатыВБанкЗарплата.НомерЛицевогоСчета КАК НомерЛицевогоСчета,
                    |   ЛицевыеСчетаСотрудниковПоЗарплатнымПроектам.НомерКарты,
                    |   ДокументыФизическихЛиц.Номер КАК НомерПас,
                    |   ДокументыФизическихЛиц.Серия КАК СерияПас,
                    |   СУММА(ВедомостьНаВыплатуЗарплатыВБанкЗарплата.КВыплате) КАК КВыплате
                    |ИЗ 
                    |   Документ.ВедомостьНаВыплатуЗарплатыВБанк.Зарплата КАК ВедомостьНаВыплатуЗарплатыВБанкЗарплата 
                    |ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЛицевыеСчетаСотрудниковПоЗарплатнымПроектам.СрезПоследних(&ПараметрДата1, ) КАК ЛицевыеСчетаСотрудниковПоЗарплатнымПроектам
                    |   ПО ВедомостьНаВыплатуЗарплатыВБанкЗарплата.ФизическоеЛицо = ЛицевыеСчетаСотрудниковПоЗарплатнымПроектам.ФизическоеЛицо
                    |ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДокументыФизическихЛиц.СрезПоследних(&ПараметрДата2) КАК ДокументыФизическихЛиц
                    |ПО ВедомостьНаВыплатуЗарплатыВБанкЗарплата.ФизическоеЛицо = ДокументыФизическихЛиц.Физлицо
                    |И ВедомостьНаВыплатуЗарплатыВБанкЗарплата.ФизическоеЛицо.ДатаРождения = ДокументыФизическихЛиц.Физлицо.ДатаРождения
                    |ГДЕ ВедомостьНаВыплатуЗарплатыВБанкЗарплата.Ссылка = &СсылкаНаЭтотДокумент 
                    |СГРУППИРОВАТЬ ПО 
                    |ВедомостьНаВыплатуЗарплатыВБанкЗарплата.ФизическоеЛицо, ВедомостьНаВыплатуЗарплатыВБанкЗарплата.НомерЛицевогоСчета, ЛицевыеСчетаСотрудниковПоЗарплатнымПроектам.НомерКарты, ДокументыФизическихЛиц.Номер, ДокументыФизическихЛиц.Серия     "; 
 
    Запрос.УстановитьПараметр("СсылкаНаЭтотДокумент",Объект.Ссылка);
    Запрос.УстановитьПараметр("ПараметрДата1",Объект.Дата);
    Запрос.УстановитьПараметр("ПараметрДата2",Объект.Дата);
    
    
    Результат = Запрос.Выполнить().Выбрать();
    
    Объект.ВремТаб.Очистить();
    
    
    Пока Результат.Следующий() Цикл
        ЗаполнитьЗначенияСвойств(Объект.ВремТаб.Добавить(), Результат);
    КонецЦикла;
    
КонецПроцедуры
 
&НаКлиенте
Процедура ВыгрузитьДБФ(Команда)
    ВыгрузитьДБФНаСервере();
    
    ДБФ = Новый xbase;
    ДБФ.поля.Добавить("SBK_NUM","S",20);
    ДБФ.поля.Добавить("SBK_PAN","S",16);
    ДБФ.поля.Добавить("SBK_PAS","S",20);
    ДБФ.поля.Добавить("SBK_FIO","S",60);
    ДБФ.поля.Добавить("SBK_SUM","F",20,2);
 
    ИмяБазы = "D:" + СокрЛП(Формат(ТекущаяДата(),"ДФ=MM"))+СокрЛП(Формат(ТекущаяДата(),"ДФ=гггг"));
 
    ДБФ.СоздатьФайл(ИмяБазы);
    
 
     Для каждого ТекСтрокаТЧ ИЗ Объект.ВремТаб Цикл
        ДБФ.Добавить();
        ДБФ.SBK_FIO = ТекСтрокаТЧ.ФизЛицо;
        ДБФ.SBK_NUM = ТекСтрокаТЧ.НомерЛицевогоСчета;
        ДБФ.SBK_SUM = ТекСтрокаТЧ.КВыплате;
        ДБФ.SBK_PAN = ТекСтрокаТЧ.НомерКарты;
        ДБФ.SBK_PAS = СокрЛП(ТекСтрокаТЧ.СерияПас) + " " + СокрЛП(ТекСтрокаТЧ.НомерПас);
        ДБФ.Записать();
    КонецЦикла; 
    
    ДБФ.ЗакрытьФайл();
    
    Предупреждение("Выгруженный файл находится в корневом каталоге диска D:");
    
КонецПроцедуры
Подскажите еще пожалуйста, можно ли сделать так, чтобы путь сохранения файла задавался из всплывающего диалога?
0
GreenkA
(◉‿◉)
Эксперт 1С
1964 / 1502 / 474
Регистрация: 25.06.2009
Сообщений: 5,401
10.03.2017, 14:58 #6
emkaa, смотрите в синтакс-помощнике описание ДиалогОткрытияФайла() с режимом ВыборКаталога, там и пример есть.
0
10.03.2017, 14:58
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.03.2017, 14:58
Привет! Вот еще темы с ответами:

Разбивка DBF на 2 файла путем выборки поиском. Макрос Excel - VBA
Доброго времени суток! Есть файл-таблица в формате .dbf (DBF-4), нужно этот файл разбить на 2 файла, произведя выборку по колонке A с...

Как подключиться к базе данных MySQL на сервере из скрипта на клиенте? - Python
Доброй ночи, у меня при изучений Python 'а 3 возник такой вопрос, можно ли как то подлключиться к базе MySQL, которая находится на сервере...

Обработка текстового файла и запись в бинарный файл - C (СИ)
Задача: Создать бинарный файл f и записать в него действительные числа. Организовать просмотр бинарного файла и его обработку: найти...

Чтение значений из файла, обработка и запись в новый файл - Turbo Pascal
Program yravnenie(input,output); Var x,a:longint; Begin Assign(input,'input.txt'); Reset(input); ...


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

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

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