m4dOFF позволяет автоматизировать создание машиночитаемых доверенностей (МЧД). Для автоматизации данного процесса создается специальный шаблон с расширением .py в котором прописывается логика обработки .docx файла. В m4dOFF можно передать сразу с десяток файлов .docx и он из всех них сформирует МЧД по выбранному вами шаблону.
Чтобы получить данные из таблицы .docx файла необходимо использовать данную функцию self.parser.get_value.
- название свойства в таблице (property)
- индекс таблицы (отсчет с 0) (index_table)
- номер строки (index_row, по умолчанию равен 0) - нужен в случаях когда в таблице есть одинаковые поля например ФИО, тогда если выставить index_row = 1, первое значение ФИО пропустит, а второе получит.
- номер столбца (отсчет с 0) (index_cell, по умолчанию равен -1 - последнему значению в строке)
- номер свойства в текущей строке (idex_property, по умолчанию равен 0 - первому столбцу в таблице)
self.parser.get_value(property, index_table, index_row = 0, index_cell = -1, idex_property = 0)
Позволяет вставить часть МЧД в XML формате.
self.__from_string(text)
Пример форматирования с помощью self.__from_string
document = ET.SubElement(self.root, 'Документ') trust = ET.SubElement(document, 'Довер') trust.append(self.__from_string(f''' <СвДов ВидДовер="1" ПрПередов="1" ВнНомДовер="{self.parser.get_value("Внутренний номер", 0)}" НомДовер="{self.uid}" ДатаВыдДовер="{self.parser.get_value("Дата выдачи", 0)}" СрокДейст="{self.parser.get_value("Срок действия", 0)}"> <СведСист>https://m4d.nalog.gov.ru/EMCHD/check-status?guid={self.uid}</СведСист> </СвДов>'''))
Добавляет аттрибут к тегу который вы укажите.
self.__add_attribute(path, property, value):
Пример
self.__add_attribute("./Документ/Довер", "Тест", "Значение") # результат ''' <Довер Тест="Значение"> </Довер> '''
Ищет тег по пути в XML файле.
self.__find_element(path)
Для обработки отчества нужно использовать данную функцию. Она позволяет определять есть ли у человека отчество или нет. В __get_patronymic можно передовать как массив так и обычную строку в формате "ФАМИЛИЯ ИМЯ ОТЧЕСТВО(по наличию)".
self.__get_patronymic(fio_parts)
ФИО можно обрабатывать с помощью __get_fio. Необходимо передать в формате "ФАМИЛИЯ ИМЯ ОТЧЕСТВО(по наличию)"
self.__get_fio(fio)
Пример
document = ET.SubElement(self.root, 'Документ') trust = ET.SubElement(document, 'Довер') trust.append(self.__from_string(f'''<ФИО {self.__get_fio(self.parser.get_value("ФИО", 0))}/>''')) # результат ''' <ФИО Фамилия="ИВАНОВ" Имя="ИВАН" Отчество="ИВАНОВИЧ"/> '''
Для обработки серии и номера паспорта можно использовать __get_passport_number. Данная функция форматирует строку в вид "00 00 000000"
self.__get_passport_number(number)
Вся логика обработки .docx файла пишется в функции custom.
def custom(self):
'''
данная часть модифицируется
:return:
'''