Перезаписывать csv файл по дням недели.

1. user1260579 30.07.20 10:13 Сейчас в теме
Добрый день!

Из ЗУП каждый день ночью выгружается информация по сотрудникам.
Выгрузка идёт в csv файл, который каждую ночь создаётся новый.
Задача такова: файлов должно быть 7 (по дням недели) и каждый день должен перезаписываться файл относящийся к текущему дню недели (условно в понедельник "Employees_1", во вторник "Employees_2" и т.д...)

Друзья, подскажите, каким образом это можно реализовать?

Для инфо, текущей код в обработке:

Функция СведенияОВнешнейОбработке() Экспорт

ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.2.2.1");

ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительнаяОбработка();
ПараметрыРегистрации.Версия = "1.0";
ПараметрыРегистрации.БезопасныйРежим = Ложь;

НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();
НоваяКоманда.Представление = НСтр("ru = 'Выгрузка сотрудников в Лотус'");
НоваяКоманда.Идентификатор = "СотрудникиВЛотус";
НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
НоваяКоманда.ПоказыватьОповещение = Истина;
НоваяКоманда.Модификатор = "ПечатьMXL";

Возврат ПараметрыРегистрации;

КонецФункции

Процедура ВыполнитьКоманду(иии,ввв) Экспорт
ВыгрузитьДействующихСотрудников_В_CSV();
КонецПроцедуры

// Выполним запрос к регистру
// Результат Таблицазначений
Функция ПолучитьДанные()
Запрос = Новый Запрос;
Запрос.Текст =



"ВЫБРАТЬ
| КадроваяИсторияСотрудниковСрезПоследних.ФизическоеЛицо.Фамилия КАК ФизическоеЛицоФамилия,
| КадроваяИсторияСотрудниковСрезПоследних.ФизическоеЛицо.Имя КАК ФизическоеЛицоИмя,
| КадроваяИсторияСотрудниковСрезПоследних.ФизическоеЛицо.Отчество КАК ФизическоеЛицоОтчество,
| КадроваяИсторияСотрудниковСрезПоследних.Подразделение КАК Подразделение,
| КадроваяИсторияСотрудниковСрезПоследних.Должность КАК Должность,
| КадроваяИсторияСотрудниковСрезПоследних.Регистратор.ДатаУвольнения КАК РегистраторДата,
| КадроваяИсторияСотрудниковСрезПоследних.Сотрудник.Код КАК СотрудникКод,
| КадроваяИсторияСотрудниковСрезПоследних.Подразделение.Код КАК ПодразделениеКод,
| КадроваяИсторияСотрудниковСрезПоследних.ФизическоеЛицо.Код КАК ФизическоеЛицоКод,
| ВидыЗанятостиСотрудниковСрезПоследних.ВидЗанятости КАК ВидЗанятости,
| ГрафикРаботыСотрудниковСрезПоследних.ГрафикРаботы КАК ГрафикРаботы
|ИЗ
| РегистрСведений.КадроваяИсторияСотрудников.СрезПоследних КАК КадроваяИсторияСотрудниковСрезПоследних
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ВидыЗанятостиСотрудников.СрезПоследних КАК ВидыЗанятостиСотрудниковСрезПоследних
| ПО (ВидыЗанятостиСотрудниковСрезПоследних.Сотрудник.Код = КадроваяИсторияСотрудниковСрезПоследних.Сотрудник.Код)
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ГрафикРаботыСотрудников.СрезПоследних КАК ГрафикРаботыСотрудниковСрезПоследних
| ПО (ГрафикРаботыСотрудниковСрезПоследних.Сотрудник.Код = КадроваяИсторияСотрудниковСрезПоследних.Сотрудник.Код)
|
|
|
|ГДЕ
| (КадроваяИсторияСотрудниковСрезПоследних.Регистратор.ДатаУвольнения ЕСТЬ NULL
| ИЛИ КОНЕЦПЕРИОДА(КадроваяИсторияСотрудниковСрезПоследних.Регистратор.ДатаУвольнения, ДЕНЬ) >= &ТекДата)
|
|
| УПОРЯДОЧИТЬ ПО
| ВидыЗанятостиСотрудниковСрезПоследних.ВидЗанятости.Порядок УБЫВ";





// Если до полуночи регламентное задание, то КонецДня, если после полуночи - НачалоДня
Запрос.УстановитьПараметр("ТекДата", КонецДня(ТекущаяДата()));

Результат = Запрос.Выполнить();

ТаблицаЗначений = Результат.Выгрузить();
возврат ТаблицаЗначений;
КонецФункции //


// Создаем строку заголвков для CSV-файла.
// Цикл по колонкам таблицы значений
Функция СоздатьЗаголовкиCSV(ТаблицаЗначений,разделитель)
//разделитель = "|";
колонкиТЗ=ТаблицаЗначений.колонки;
Для каждого колонка Из колонкиТЗ Цикл
стрКолонки = "" + стрКолонки + колонка.Имя + разделитель ;
КонецЦикла;
Возврат стрКолонки;
КонецФункции

// Создаем строку записи ТаблицыЗначений для CSV-файла
Функция СоздатьСтрокуCSV(записьТаблицаЗначений,разделитель)
стрЗапись = "";
Для каждого поле Из записьТаблицаЗначений Цикл
стрЗапись = "" + стрЗапись + Строка(поле) + разделитель ;
КонецЦикла;
Возврат стрЗапись;
КонецФункции


// Создаем текст CSV:
// текст заголовков и
// текст данных
Функция СоздатьДанныеCSV(ТаблицаЗначений,разделитель)

текстЗапись="";
для каждого запись из ТаблицаЗначений Цикл

// начало цикла по строкам таблицы значений
// если не сформирована строка CSV с заголовками полей
// контактной информации - создаем
если текстЗапись="" тогда
текстЗапись=СоздатьЗаголовкиCSV(ТаблицаЗначений,разделитель) + Символы.ПС;
КонецЕсли;

// для каждой записи создаем строку CSV
стрЗапись = СоздатьСтрокуCSV(запись,разделитель);

// выводим сообщение в панель состояний
Сообщить(запись[0]);
//Состояние(стрЗапись);

текстЗапись = текстЗапись + стрЗапись + Символы.ПС;

КонецЦикла;

Возврат текстЗапись;

КонецФункции //

// Запишем данные в файл
Функция ЗаписатьCSV(текст,имяФайла)
//кодировка = КодировкаТекста.ANSI;
кодировка = КодировкаТекста.UTF8;

ТекстовыйФайлЗапись = Новый ЗаписьТекста(имяФайла,Кодировка);
ТекстовыйФайлЗапись.ЗаписатьСтроку(текст);
ТекстовыйФайлЗапись.Закрыть();
Возврат 0;

КонецФункции //

// Основная логика:
Процедура ВыгрузитьДействующихСотрудников_В_CSV() Экспорт
штампДаты = Формат(ТекущаяДата(),"ДФ=ddMMyyyy_hhmm");
имяФайлаCSV = "c:\temp\Employees_" + штампДаты + ".csv";
разделительCSV = ";";

сообщить("Выгрузить действующих сотрудников в формате CSV в " +
имяФайлаCSV + " с разделителем [" + разделительCSV + "]");

ТаблицаЗначений = ПолучитьДанные();
текст = СоздатьДанныеCSV(ТаблицаЗначений,разделительCSV);
ЗаписатьCSV(текст,имяФайлаCSV);
сообщить(имяФайлаCSV + " -[OK!]" );
КонецПроцедуры
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. nomad_irk 76 30.07.20 10:19 Сейчас в теме
(1)
имяФайлаCSV = "c:\temp\Employees_" + штампДаты + ".csv";

Поменять на:

имяФайлаCSV = "c:\temp\Employees_" + Формат(ДеньНедели(ТекущаяДата())) + ".csv";
3. user1260579 30.07.20 11:31 Сейчас в теме
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот