База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как найти инфу о сотрудниках из Excel в 1С через служебный список? › Ответ в теме: Как найти инфу о сотрудниках из Excel в 1С через служебный список?
Если у вас есть список сотрудников в Excel, и вы хотите найти информацию по ним в базе 1С (например, в справочнике «Сотрудники»), то можно использовать служебный список для поиска и отбора.
Вот как это сделать:
1. Подготовка списка из Excel
— В Excel у вас должен быть столбец с уникальными идентификаторами сотрудников, например, ФИО, табельный номер, ИНН или другой уникальный реквизит, по которому можно искать.
2. Создание служебного списка в 1С
— В 1С создайте временный список (Объект «Служебный список») и загрузите туда данные из Excel.
— Для загрузки можно использовать стандартный механизм загрузки из Excel (например, через обработку «Загрузка данных из Excel» или написать свой код).
3. Пример кода загрузки из Excel в служебный список (упрощённо):
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
// Создаем служебный список СлужебныйСписок = Новый СлужебныйСписок; // Открываем Excel-файл Excel = Новый COMОбъект("Excel.Application"); Книга = Excel.Workbooks.Open("C:Путькфайлу.xlsx"); Лист = Книга.Sheets(1); // Предположим, что данные в столбце A, начиная со второй строки Строка = 2; Пока Истина Цикл Значение = Лист.Cells(Строка, 1).Value; Если Значение = Неопределено Тогда Прервать; КонецЕсли; // Добавляем строку в служебный список НоваяСтрока = СлужебныйСписок.Добавить(); НоваяСтрока.Вставить("ФИО", Значение); Строка = Строка + 1; КонецЦикла; Книга.Close(); Excel.Quit(); |
4. Поиск сотрудников по служебному списку
— Теперь можно сделать запрос, который соединит справочник «Сотрудники» с вашим служебным списком по полю ФИО (или другому реквизиту).
— Пример запроса:
|ВЫБРАТЬ
| Сотрудники.Ссылка,
| Сотрудники.Фамилия,
| Сотрудники.Имя,
| Сотрудники.Отчество,
| Сотрудники.Должность
|ИЗ
| Справочник.Сотрудники КАК Сотрудники
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ &СлужебныйСписок КАК Список
| ПО Сотрудники.Фамилия = Список.ФИО
(Здесь &СлужебныйСписок — параметр запроса, в который передаётся служебный список)
5. Передача служебного списка в запрос
— В коде 1С передайте служебный список как параметр запроса:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Сотрудники.Ссылка, | Сотрудники.Фамилия, | Сотрудники.Имя, | Сотрудники.Отчество, | Сотрудники.Должность |ИЗ | Справочник.Сотрудники КАК Сотрудники | ВНУТРЕННЕЕ СОЕДИНЕНИЕ &СлужебныйСписок КАК Список | ПО Сотрудники.Фамилия = Список.ФИО"; Запрос.УстановитьПараметр("СлужебныйСписок", СлужебныйСписок); Результат = Запрос.Выполнить(); |
6. Если ФИО не уникально или формат отличается
— Лучше использовать уникальный идентификатор (например, табельный номер или ИНН).
— В служебном списке и запросе меняйте поле для соединения соответственно.
7. Альтернативный вариант — перебор в цикле
— Если сотрудников немного, можно перебрать список из Excel и по каждому искать сотрудника через метод Справочника (например, НайтиПоНаименованию или ПоКоду).
—
Рекомендую посмотреть здесь:
https://infostart.ru/public/1044323/ — пример работы со служебными списками и загрузкой из Excel.
https://infostart.ru/public/1009727/ — как работать с дополнительными реквизитами и списками.
Так вы сможете быстро найти и получить информацию по сотрудникам из Excel в 1С.