Большинство людей умеют работать с таким форматом документов, как Microsoft Excel или по-простому Excel таблицы, в которых можно заполнять сведения об обучении по охране труда, а затем передавать их в электронном виде.
Однако, напрямую в реестр передать сведения об обучении по охране труда из Excel таблицы без специальных программ не получится - такой функции в ЕИСОТ попросту не предусмотрено. При этом, данные из Excel таблицы можно экспортировать в XML-файл, который уже можно загрузить в ЕИСОТ.
Как отправить в сведения в реестр Минтруда мы рассматриваем в следующей статье, в этой же рассмотрим основные способы создания xml-файлов из Excel таблиц от простого - к сложному.
Способ 1: Использование программ и онлайн-конверторов
Самый простой способ формирования xml-файла – это использовать различные программы и онлайн-конверторы, через которые по установленным шаблонам Excel таблиц можно формировать валидные xml-файлы, соответствующие XSD-схеме Минтруда России.
Например, бесплатно сформировать xml-файл можно с помощью нашего сервиса Реестр-протокол. О том, как это сделать, мы рассказываем в инструкции по созданию xml-файлов в АС Реестр-протокол.
Способ 2. Сопоставление с XSD-схемой
Для работы этим способом нужно скачать с официального сайта Минтруда России XSD-схему, сопоставить элементы схемы с ячейками таблицы, заполнить её сведениями об обучении по охране труда и экспортировать данные в xml-файл.
Рассмотрим пошагово этот способ.
Шаг 1: Скачиваем XSD-схему с портала ФГИС СОУТ из раздела «Справочная информация» - «Обучение по ОТ».
Шаг 2: Создаём новую Excel таблицу и если в ленте отсутствует вкладка «Разработчик», то открываем её, нажав в меню ленты вкладку «Файл» - «Параметры» - «Настроить ленту».
В открывшемся окне в правой колонке будут основные вкладки, отображаемые в ленте Excel таблицы. Для отображения вкладки «Разработчик» нужно напротив неё проставить знак галочки и сохранить, нажав кнопку «ОК».
Шаг 3: Открываем вкладку «Разработчик» - «Источник» и справа в открывшемся окне нажимаем на кнопку «Карты XML». Далее нажимаем кнопку «Добавить», находим скачанную на компьютер XSD-схему и открываем её.
Шаг 4: На этом этапе происходит непосредственное сопоставление тегов XSD-схемы с ячейками таблицы. Для этого берем каждый тег из расположенного справа окна «Источник XML» и перетаскиваем его в первую строку таблицы - это будут её заголовки.
Шаг 5: Построчно заполняем сведения об обученных по охране труда лицах
Шаг 6: Для составления xml-файла нажимаем кнопку «Экспорт» на вкладке «Разработчик», после чего уже в открывшемся окне нажимаем кнопку «Экспорт», предварительно выбрав имя и место для сохранения xml-файла.
Готово, xml-файл создан в указанной директории и может быть передан в реестр. Также подробно о возможности сопоставления элементов XSD-схемы с ячейками таблицы и экспорте данных в xml-файл рассказано в статье «Общие сведения о XML-файлах в Excel» на странице официального сайта Microsoft.
- Дата проверки знаний должна быть указана не через знак «.» (дд.мм.гггг), а через знак дефиса «-» в обратном порядке (гггг-мм-дд).
- Результат проверки знаний указывается словом
true, если оценка «удовлетворительно» иfalse, если оценка «неудовлетворительно». - Идентификатор программы обучения указывается цифрами от 1 до 29, которые соответствуют одной из программ обучения, передаваемых в реестр.
Нажмите, чтобы раскрыть номера программ обучения
- 1 – Оказание первой помощи пострадавшим
- 2 – Использование (применение) средств индивидуальной защиты
- 3 – Общие вопросы охраны труда и функционирования системы управления охраной труда
- 4 – Безопасные методы и приемы выполнения работ при воздействии вредных и (или) опасных производственных факторов, источников опасности, идентифицированных в рамках специальной оценки условий труда и оценки профессиональных рисков
- 6 – Безопасные методы и приемы выполнения работ повышенной опасности, к которым предъявляются дополнительные требования в соответствии с нормативными правовыми актами, содержащими государственные нормативные требования охраны труда
- 6 – Безопасные методы и приемы выполнения земляных работ
- 7 – Безопасные методы и приемы выполнения ремонтных, монтажных и демонтажных работ зданий и сооружений
- 8 – Безопасные методы и приемы выполнения работ при размещении, монтаже, техническом обслуживании и ремонте технологического оборудования (включая технологическое оборудование)
- 9 – Безопасные методы и приемы выполнения работ на высоте
- 10 – Безопасные методы и приемы выполнения пожароопасных работ
- 11 – Безопасные методы и приемы выполнения работ в ограниченных и замкнутых пространствах (ОЗП)
- 12 – Безопасные методы и приемы выполнения строительных работ, в том числе: - окрасочные работы - электросварочные и газосварочные работы
- 13 – Безопасные методы и приемы выполнения работ, связанных с опасностью воздействия сильнодействующих и ядовитых веществ
- 14 – Безопасные методы и приемы выполнения газоопасных работ
- 15 – Безопасные методы и приемы выполнения огневых работ
- 16 – Безопасные методы и приемы выполнения работ, связанные с эксплуатацией подъемных сооружений
- 17 – Безопасные методы и приемы выполнения работ, связанные с эксплуатацией тепловых энергоустановок
- 18 – Безопасные методы и приемы выполнения работ в электроустановках
- 19 – Безопасные методы и приемы выполнения работ, связанные с эксплуатацией сосудов, работающих под избыточным давлением
- 20 – Безопасные методы и приемы обращения с животными
- 21 – Безопасные методы и приемы при выполнении водолазных работ
- 22 – Безопасные методы и приемы работ по поиску, идентификации, обезвреживанию и уничтожению взрывоопасных предметов
- 23 – Безопасные методы и приемы работ в непосредственной близости от полотна или проезжей части эксплуатируемых автомобильных и железных дорог
- 24 – Безопасные методы и приемы работ, на участках с патогенным заражением почвы
- 25 – Безопасные методы и приемы работ по валке леса в особо опасных условиях
- 26 – Безопасные методы и приемы работ по перемещению тяжеловесных и крупногабаритных грузов при отсутствии машин соответствующей грузоподъемности и разборке покосившихся и опасных (неправильно уложенных) штабелей круглых лесоматериалов
- 27 – Безопасные методы и приемы работ с радиоактивными веществами и источниками ионизирующих излучений
- 28 – Безопасные методы и приемы работ с ручным инструментом, в том числе с пиротехническим
- 29 – Безопасные методы и приемы работ в театрах
Скачать Excel таблицу
Скачать xml-файл
Способ 3. Автоматизация через макросы (VBA)
Что такое макросы? Макросы - это записанные или написанные программы внутри Excel, которые автоматически выполняют действия.
Представьте, что вы способом 2 выполняете определённые действия в Excel, например: взять данные из одной таблицы, вставить в другую, обработать их, а затем экспортировать в xml-файл и закрыть таблицу. В данном случае макрос будет выполнять все основные ваши действия за вас, автоматически.
Для работы с макросами необходимо:
- Excel таблицу сохранить с разрешением «.xlsm» (с поддержкой макросов).
- Открыть меню «Разработчик».
- Нажать на кнопку «Записать макрос».
- Выполнить действия, которые хотите автоматизировать.
- Закончить запись макроса.
- При необходимости откорректировать код макроса в меню «Visual Basic».
Для запуска макроса требуется нажать кнопку «Макросы» и выбрать записанную команду в открывшемся окне.
Способ 4. Написание скрипта на Python
Python - это современный язык программирования, который стал стандартом для обработки данных, анализа и автоматизации.
Для написания кода на Python вам потребуется скачать Python с официального сайта и установить его на персональный компьютер.
Важно: При установке Python обязательно отметьте галочку "Add Python to PATH" - это позволит использовать pip из командной строки.
Pip (менеджер пакетов Python) уже входит в состав Python, начиная с версии 3.4, поэтому дополнительная установка не требуется.
После установки Python необходимо установить дополнительные библиотеки, которые используются в скрипте. Откройте командную строку (Windows) или терминал (Mac/Linux) и выполните следующие команды:
pip install openpyxl
pip install lxml
Эти библиотеки необходимы для работы с Excel файлами и генерации XML данных соответственно.
Основной скрипт состоит из двух частей - импорта необходимых модулей и основной логики программы:
Импорт библиотек
import os
import warnings
from lxml import etree
from datetime import datetime
Основная логика программы
Далее следует основной код, который можно развернуть для просмотра:
# Отключаем предупреждения openpyxl
warnings.filterwarnings('ignore', category=UserWarning, module='openpyxl')
def excel_to_xml_educated_person(excel_file, xml_file):
"""
Преобразует данные из Excel в XML по схеме educated_person_import_v1.0.9.xsd
"""
try:
# Загружаем Excel файл
workbook = openpyxl.load_workbook(excel_file)
sheet = workbook.active
# Создаем корневой элемент
root = etree.Element('RegistrySet')
# Пропускаем заголовки (первая строка)
for row in sheet.iter_rows(min_row=2, values_only=True):
# Пропускаем пустые строки
if all(cell is None for cell in row):
continue
# Создаем запись RegistryRecord
record = etree.SubElement(root, 'RegistryRecord')
# Блок Worker
worker = etree.SubElement(record, 'Worker')
etree.SubElement(worker, 'LastName').text = str(row[0]) # Фамилия
etree.SubElement(worker, 'FirstName').text = str(row[1]) # Имя
etree.SubElement(worker, 'MiddleName').text = str(row[2]) # Отчество
etree.SubElement(worker, 'Snils').text = str(row[3]) # СНИЛC
etree.SubElement(worker, 'Position').text = str(row[4]) # Должность
# Работодатель
etree.SubElement(worker, 'EmployerInn').text = str(row[10])
etree.SubElement(worker, 'EmployerTitle').text = str(row[5])
# Блок Organization
organization = etree.SubElement(record, 'Organization')
etree.SubElement(organization, 'Inn').text = str(row[11])
etree.SubElement(organization, 'Title').text = str(row[12])
# Блок Test
test = etree.SubElement(record, 'Test') # Оценка
if str(row[6]) == "Удовлетворительно":
test.set('isPassed', "true")
if str(row[6]) == "Неудовлетворительно":
test.set('isPassed', "false")
test.set('learnProgramId', str(int(row[13]))) # ID программы обучения
# Дата теста (преобразуем в правильный формат)
if isinstance(row[7], datetime):
etree.SubElement(test, 'Date').text = row[7].strftime('%Y-%m-%d')
else:
etree.SubElement(test, 'Date').text = str(row[7])
etree.SubElement(test, 'ProtocolNumber').text = str(row[8])
etree.SubElement(test, 'LearnProgramTitle').text = str(row[9])
# Создаем XML дерево
tree = etree.ElementTree(root)
# Сохраняем с форматированием
tree.write(xml_file,
pretty_print=True,
encoding='utf-8',
xml_declaration=True)
print(f"XML файл успешно создан: {xml_file}")
print(f"Обработано записей: {len(root)}")
except FileNotFoundError:
print(f"Ошибка: Файл {excel_file} не найден!")
except Exception as e:
print(f"Ошибка при обработке: {e}")
# Определяем путь к директории скрипта
def get_script_directory():
"""Возвращает абсолютный путь к директории, где находится скрипт"""
path = os.path.dirname(os.path.realpath(__file__))
my_path, base_name = os.path.split(path)
print(f"Путь к скрипту: {path}")
return path
# Основная программа
if __name__ == "__main__":
# Получаем путь к директории скрипта
script_dir = get_script_directory()
# Формируем полные пути к файлам
excel_file_path = os.path.join(script_dir, 'Python_reestr-protocol.xlsx')
xml_file_path = os.path.join(script_dir, 'XML_reestr-protocol.xml')
# Проверяем существование Excel файла
if os.path.exists(excel_file_path):
print("Запускаем конвертацию...")
excel_to_xml_educated_person(excel_file_path, xml_file_path)
else:
print("Файл Python_reestr-protocol.xlsx не найден в директории скрипта!")
print("Доступные файлы:")
for file in os.listdir(script_dir):
if file.endswith('.xlsx'):
print(f" - {file}")
Порядок запуска скрипта
- Скачайте
Python-файл
reestr-protocol_skript.py - Скачайте и заполните Excel файл с данными об обучении в том же каталоге, что и скрипт
- Убедитесь, что Excel файл называется
Python_reestr-protocol.xlsx - Откройте терминал/командную строку и перейдите в каталог со скриптом:
- Запустите скрипт командой:
- После выполнения скрипта в той же папке появится файл
XML_reestr-protocol.xmlс результатом
cd путь/к/вашей/папке
reestr-protocol_skript.py
Бесплатно в АС Реестр-протокол: Ваш универсальный инструмент
Мы рассмотрели четыре разных подхода к преобразованию Excel-данных в XML - от онлайн-решений до мощной автоматизации на Python.
Варианты с написанием команд на языках программирования дают возможность сформировать xml-файл, но требуют технических знаний. Можно сопоставлять ячейки каждой таблицы с XSD-схемой или заносить вручную каждого работника по отдельности в личном кабинете, что очень долго.
Возникает резонный вопрос: как получить всю мощь Excel таблиц без необходимости вникать в технические тонкости? Ответом на этот вопрос и стал наш сервис, который позволяет бесплатно формировать xml-файл из нескольких Excel таблиц в один клик.
Формирование xml-файла в АС Реестр-протокол (бесплатная функция)
Что дальше?
После успешного формирования xml-файла:
- отправьте его в реестр или добавьте в набор ожидающих записей прямо из сервиса, как это сделать рассказано в следующей инструкции;
- либо авторизуйтесь в личном кабинете работодателя по охране труда, перейдите в Реестр обученных по охране труда лиц и загрузите вручную на странице «Записи, ожидающие добавления в реестр».