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

1. Reflection0504 04.11.24 02:01 Сейчас в теме
Столкнулся с проблемой, что при выгрузке из Excel файла не получается сверить, есть ли сотрудник в базе данных 1с? Сотрудников, которых нет следует выгружать в комментарии. Ниже прикладываю нужные участки кода.

ДанныеФайла=Новый ТаблицаЗначений;  
ДанныеФайла.Колонки.Добавить("Дата"); 
ДанныеФайла.Колонки.Добавить("Номер");    
ДанныеФайла.Колонки.Добавить("ТипДокумента");
ДанныеФайла.Колонки.Добавить("Организация");
ДанныеФайла.Колонки.Добавить("Сотрудник");
ДанныеФайла.Колонки.Добавить("Сумма");
ДанныеФайла.Колонки.Добавить("Начало");
ДанныеФайла.Колонки.Добавить("Окончание");
ДанныеФайла.Колонки.Добавить("МесяцНачисления");
ДанныеФайла.Колонки.Добавить("Комментарий");    

ДанныеФайла.Очистить(); 
ТабДок=Новый ТабличныйДокумент;
ТабДок.Прочитать(ИмяВФ,СпособЧтенияЗначенийТабличногоДокумента.Значение);
ВысСтрок=ТабДок.ВысотаТаблицы;  
	   	
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	ДоговорРаботыУслуги.Ссылка КАК Ссылка,
		|	ДоговорРаботыУслуги.Номер КАК Номер,
		|	ДоговорРаботыУслуги.Представление КАК Представление,
		|	ДоговорРаботыУслуги.Организация.Наименование КАК Организация
		|ИЗ
		|	Документ.ДоговорРаботыУслуги КАК ДоговорРаботыУслуги";
	
	РезультатЗапроса = Запрос.Выполнить();
	
	ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	
	Пока ВыборкаДетальныеЗаписи.Следующий() Цикл  
		Для Стр=2 по ВысСтрок  Цикл 
		Сумма=ТабДок.Область(Стр,5).Текст;
      Если Сумма="" Тогда 
      Продолжить; 
	  КонецЕсли;
	СтрТз=ДанныеФайла.Добавить();
	
	СтрТз.Дата=ТекущаяДата(); 
	СтрТз.Номер=ВыборкаДетальныеЗаписи.Номер;
	СтрТз.ТипДокумента=Лев(ВыборкаДетальныеЗаписи.Представление,24);   
	СтрТз.Организация=ВыборкаДетальныеЗаписи.Организация;
	СтрТз.Сотрудник=ТабДок.Область(Стр,2).Текст;
	СтрТз.Сумма=Сумма;
	СтрТз.Начало=Объект.ДатаНачала;
	СтрТз.Окончание=Объект.ДатаОкончания;
	СтрТз.МесяцНачисления=Объект.Месяц;
	СтрТз.Комментарий="";
КонецЦикла;  
КонецЦикла;   

Для Каждого Стр2 из ДанныеФайла Цикл  
	Значения=НайтиЗначения(Стр2.Сотрудник);  
	Если Значения.Пустая() Тогда     
	Значения=СтрТз.Комментарий;	
	КонецЕсли;
КонецЦикла;

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

&НаСервере		
Функция НайтиЗначения(Сотрудник);
	       		
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	ДоговорРаботыУслуги.Ссылка КАК Ссылка
		|ИЗ
		|	Документ.ДоговорРаботыУслуги КАК ДоговорРаботыУслуги
		|ГДЕ
		|	ДоговорРаботыУслуги.ФизическоеЛицо.ФИО = &ФИО";
	
	Запрос.УстановитьПараметр("ФИО", Сотрудник);
	
	РезультатЗапроса = Запрос.Выполнить();
	
	ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	
	Если ВыборкаДетальныеЗаписи.Следующий() Тогда 
		Возврат ВыборкаДетальныеЗаписи.Ссылка;
	
	КонецЕсли;
        КонецФункции
Показать
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. пользователь 04.11.24 08:33
Сообщение было скрыто модератором.
...
2. пользователь 04.11.24 02:03
Сообщение было скрыто модератором.
...
Оставьте свое сообщение

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