Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

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

Михаил Колупаев Профи (614), открыт 2 недели назад
Столкнулся с проблемой, что при выгрузке из Excel файла не получается сверить, есть ли сотрудник в базе данных 1с? Сотрудников, которых нет следует выгружать в комментарии. Возможно кто-то сталкивался с похожей проблемой и смог её решить?

НаСервере
Функция ПолучитьДоговораНаСервере()

Данные=ПолучитьИзВременногоХранилища(ЭтаФорма.АдресВХ);
ИмяВФ=ПолучитьИмяВременногоФайла("xls");
Данные.Записать(ИмяВФ);

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

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

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ДоговорРаботыУслуги.Ссылка КАК Ссылка,
| ДоговорРаботыУслуги.Номер КАК Номер,
| ДоговорРаботыУслуги.Представление КАК Представление,
| ДоговорРаботыУслуги.Организация.Наименование КАК Организация
|ИЗ
| Документ.ДоговорРаботыУслуги КАК ДоговорРаботыУслуги";

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

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

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Для Стр=2 по ВысСтрок Цикл
Сумма=ТабДок.Область(Стр,5).Текст;
Если Сумма="" Тогда
Продолжить;
КонецЕсли;
СтрТз=ДанныеФайла.Добавить();

СтрТз.Дата=ТекущаяДата();
СтрТз.Номер=ВыборкаДетальныеЗаписи.Номер;
СтрТз.ТипДокумента=Лев(ВыборкаДетальныеЗаписи.Представление,24);
СтрТз.Организация=ВыборкаДетальныеЗаписи.Организация;
СтрТз.Сотрудник=ТабДок.Область(Стр,2).Текст;
СтрТз.Сумма=Сумма;
СтрТз.Начало=Объект.ДатаНачала;
СтрТз.Окончание=Объект.ДатаОкончания;
СтрТз.МесяцНачисления=Объект.Месяц;
СтрТз.Комментарий="";
КонецЦикла;
КонецЦикла;

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

&НаСервере
Функция НайтиЗначения(Сотрудник);

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ФизическиеЛица.Ссылка КАК Ссылка
|ИЗ
| Справочник.ФизическиеЛица КАК ФизическиеЛица
|ГДЕ
| ФизическиеЛица.ФИО = &ФИО";

Запрос.УстановитьПараметр("ФИО", Сотрудник);

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

Если ВыборкаДетальныеЗаписи.Следующий() Тогда
Возврат ВыборкаДетальныеЗаписи.Ссылка;
Иначе
Возврат Документы.ДоговорРаботыУслуги.ПустаяСсылка();
КонецЕсли;
КонецФункции
0 ответов
Похожие вопросы