Не забрасывать в файл данные, которые уже есть
Подскажите пожалуйста, 1с 8, УП, Тонкий клиент, серверная БД, есть обработка, которая выгружает всех сотрудников в файл .csv, есть функция, которая получает всех сотрудников, как мне ее сравнить с файлом .csv, что-бы не добавлять одинаковые значения? Вот функция для получения работников: Функция ПолучитьОстатки()
Запрос = Новый Запрос;
ТекстЗапроса = "ВЫБРАТЬ
| Сотрудники.Наименование КАК Наименование,
| Сотрудники.Код КАК Код,
| ТекущиеКадровыеДанныеСотрудников.ДатаПриема КАК ДатаПриема,
| ТекущиеКадровыеДанныеСотрудников.ДатаУвольнения КАК ДатаУвольнения
|ИЗ
| Справочник.Сотрудники КАК Сотрудники
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ТекущиеКадровыеДанныеСотрудников КАК ТекущиеКадровыеДанныеСотрудников
| ПО (ТекущиеКадровыеДанныеСотрудников.Сотрудник = Сотрудники.Ссылка)";
Запрос.Текст = ТекстЗапроса;
РезультатЗапроса = Запрос.Выполнить().Выбрать();
ТекстCSV = "";
Пока РезультатЗапроса.Следующий() Цикл
ТекстCSV = ТекстCSV + РезультатЗапроса.Код + ", " + РезультатЗапроса.Наименование + ", " + РезультатЗапроса.ДатаПриема + ", " + РезультатЗапроса.ДатаУвольнения + Символы.ВК;
КонецЦикла;
Возврат ТекстCSV;
Остальной код выполнения:
ТекстCSV = ПолучитьОстатки();
Текст = Новый ЗаписьТекста(ПутьКФайлу , КодировкаТекста.UTF8,,ложь);
Текст.ЗаписатьСтроку(ТекстCSV);
Текст.Закрыть();
Ответы (1 шт):
Автор решения: Sagittarius
→ Ссылка
- Сделать считывание *.csv файла, изучив примеры (например, раз, два, три);
- Добавить условие отбора в запрос (по требуемому полю), основываясь на считанных данных из файла, чтобы не получать те записи, которые уже в нём есть:
...
| Справочник.Сотрудники КАК Сотрудники
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ТекущиеКадровыеДанныеСотрудников КАК ТекущиеКадровыеДанныеСотрудников
| ПО (ТекущиеКадровыеДанныеСотрудников.Сотрудник = Сотрудники.Ссылка);
|
|ГДЕ
| НЕ Сотрудники.Код В (&СписокВыгруженныхКодов)