1С Приходная накладная (COM)#
Рассмотрим пример робота, который создает приходную накладную в программе 1С. Исходными данными для данного проекта является файл “Заказ поставщику”. Работа основана на использовании COM-подключения к приложению 1C.
Данный проект показывает загрузку данных из PDF или из Excel. Чтобы посмотреть как происходит работа с PDF Вы должны соединить блоки "Запустить процесс" и левый блок "Получить путь к файлу".
Чтобы проверить работу с загрузкой из Excel файла, Вы должны соединить блоки "Запустить процесс" и правый блок "Получить путь к файлу".
Проект робота состоит из четырех диаграмм и четырех файлов: два txt, pdf и xlsx. В файле “QueryTemplate.txt” находится шаблон запроса, написанного на языке 1С. Для загрузки данных из pdf- и xlsx-файла – своя диаграмма.
Основная диаграмма выглядит так (для удобства блоки диаграммы пронумерованы):
- Блок “Старт” (с этого блока начинается любая диаграмма).
- Блок “Получить путь к файлу” получает полный путь к файлу с указанным именем. Для данных блоков указаны следующие свойства:
- Путь к папке (путь к папке, в которой находится необходимый файл, если свойство будет пустым, то будет взята папка, в которой располагается данный проект);
- Имя файла (имя файла вместе с его форматом).
В данном случае параллельно использованы два блока “Получить путь к файлу”: один для файл формата pdf, другой – для файла формата xlsx.
- Блок “Процесс” позволяет создавать сценарии, состоящие из нескольких диаграмм. Выполнение сценария продолжится с блока “Старт” указанной диаграммы проекта. Выполнение сценария вернется к текущему блоку и продолжится в текущей диаграмме, как только будет достигнут блок “Конец” во внешней диаграмме. Для блока “Процесс” указано свойство “Имя диаграммы” (имя файла диаграммы, в которой продолжится выполнение сценария).
В данном случае, как и выше, параллельно использованы два блока “Процесс”: один для загрузки данных из pdf-файла, второй – для загрузки данных из xlsx-файла.
- Блок “Процесс” расположенный ниже позволяет создать еще один сценарий, который является общим для двух сценариев описанных выше. Данный процесс отвечает за добавления накладной в 1С. Для блока “Процесс” здесь также указано свойство “Имя диаграммы” (имя файла диаграммы, в которой продолжится выполнение сценария).
Диаграмма "ЗагрузкаданныхИзPDF"
- Блок “Старт” (с этого блока начинается любая диаграмма).
- Блок “Лог” позволяет выводить в лог произвольные сообщения и/или значения переменных в процессе работы сценария робота. Для данного блока указано свойство “Значение”. В кавычках указана текстовая константа, а имя переменной начинается с символа $. Т.е., данный блок записывает в лог робота сообщение о загрузке выбранного файла, указанного с помощью переменной.
- Блок “Выполнить выражение” запускает выполнение одного или нескольких выражений на языке, совместимом с PowerShell. В данном случае используются два выражения.
- Блок “Извлечь таблицу” позволяет извлечь указанную таблицу из pdf-файла. Для данного блока указаны следующие свойства:
- Имя файла;
- Номер страницы (номер страницы, начиная с которого будет извлекаться текст из таблицы);
- Номер таблицы на странице (номер таблицы на странице, текст из которой необходимо извлечь).
- Блок “Цикл для каждого” циклично перебирает все строки таблицы данных.
- Блок “Получить текст со страницы” позволяет считать текст с указанной страницы pdf-файла. Для данного блока указаны следующие свойства:
- Имя файла;
- Номер страницы (номер страницы, начиная с которого будет извлекаться текст);
- Результат (возвращает извлеченный со страницы текст).
- Блок “Найти подстроку между двух подстрок” позволяет найти в тексте подстроку, которая находится между двух других подстрок. Таких блоков должно быть столько, сколько подстрок необходимо найти. В данном случае используется два блока “Найти подстроку между двух подстрок”: для подстроки “Исполнитель” и подстроки “Заказ”. В свойствах блоков указаны:
- Текст (входная строка);
- Левая часть (левая искомая подстрока);
- Правая часть (правая искомая подстрока).
- Блок “Условие” проверяет указанное условие на истинность, после чего выполнение сценария продолжается в сторону выхода “Да” (если условие выполняется) или в сторону выхода “Нет” (если условие не выполнилось).
Условие записывается в формате: “переменная” равна (==)/ больше (>)/ меньше (<) “значение”.
Например: $a == “Привет”, то есть, если значение переменной $a равно “Привет”, то выход “Да”, в противном случае – выход “Нет”.
$Result > 5, то есть, если значение переменной $Result меньше 5, то выход “Да”, в противном случае – выход “Нет”.
В данном случае, в качестве условия установлено: $Row [0] == $index, то есть, если значение ячейки 0 равна переменной $index, то выход “Да”, в противном случае – выход “Нет”.
- Блок “Добавить строку” позволяет добавить строку в таблицу данных. В данном случае указаны следующие свойства:
- Таблица (таблица данных, в которую добавляется строка);
- Номер строки (возвращает номер добавленной строки, нумерация начинается с 0).
- Блок “Записать в ячейку значение” позволяет записать значение в ячейку таблицы данных. В данном случае используется три таких блока для разных переменных: $Row[2], $Row[3] и $Row[5].
- Блок “Выполнить выражение” запускает выполнение одного или нескольких выражений на языке, совместимом с PowerShell. В данном случае используется одно выражение.
- Блок “Выполнить выражение” запускает выполнение одного или нескольких выражений на языке, совместимом с PowerShell. В данном случае используется одно выражение.
- Блок “Конец” (этим блоком завершается работа сценария или возврат диаграммы подпроцесса в основной процесс).
Диаграмма “ЗагрузкаДанныхИзXLSX”
- Блок “Старт” (с этого блока начинается любая диаграмма).
- Блок “Лог” позволяет выводить в лог произвольные сообщения и/или значения переменных в процессе работы сценария робота. Для данного блока указано свойство “Значение”. В кавычках указана текстовая константа, а имя переменной начинается с символа $. Т.е., данный блок записывает в лог робота сообщение о загрузке выбранного файла, указанного с помощью переменной.
- Блок “Открыть документ” позволяет открыть Excel-документ. Для данного блока указаны следующие свойства:
- Путь к файлу (путь к Excel-документу, который требуется открыть);
- Ссылка на Excel (возвращает ссылку на процесс обработки Excel-документа);
- Ссылка на документ (возвращает ссылку на открытый Excel-документ, в котором в данный момент происходит работа).
- Блок “Получить значение ячейки” позволяет считать значение из ячейки Excel-документа. В данном случае используется два блока “Получить значение ячейки” для разных строк и столбцов. Для данного блока указаны следующие свойства:
- Ссылка на документ (возвращает ссылку на открытый Excel-документ, в котором в данный момент происходит работа);
- Лист (порядковый номер или название листа, на котором расположена требуемая ячейка);
- Строка (номер строки, на которой расположена требуемая ячейка);
- Столбец (номер столбца, в котором расположена требуемая ячейка);
- Результат (возвращает содержимое ячейки того же типа данных, что и в Excel-документе).
- Блок “Найти подстроку между двух подстрок” позволяет найти в тексте подстроку, которая находится между двух других подстрок. Таких блоков должно быть столько, сколько подстрок необходимо найти. В данном случае используется два блока “Найти подстроку между двух подстрок”: для подстроки “Исполнитель” и подстроки “Заказ”. В свойствах блоков указаны:
- Текст (входная строка);
- Левая часть (левая искомая подстрока);
- Правая часть (правая искомая подстрока).
- Блок “Выполнить выражение” запускает выполнение одного или нескольких выражений на языке, совместимом с PowerShell. В данном случае используется одно выражение.
- Блок “Получить значение ячейки” позволяет считать значение из ячейки Excel-документа. Для данного блока указаны следующие свойства:
- Ссылка на документ (возвращает ссылку на открытый Excel-документ, в котором в данный момент происходит работа);
- Лист (порядковый номер или название листа, на котором расположена требуемая ячейка);
- Строка (номер строки, на которой расположена требуемая ячейка);
- Столбец (номер столбца, в котором расположена требуемая ячейка);
- Результат (возвращает содержимое ячейки того же типа данных, что и в Excel-документе).
- Блок “Условие” проверяет указанное условие на истинность, после чего выполнение сценария продолжается в сторону выхода “Да” (если условие выполняется) или в сторону выхода “Нет” (если условие не выполнилось).
Условие записывается в формате: “переменная” равна (==)/ больше (>)/ меньше (<) “значение”.
Например: $a == “Привет”, то есть, если значение переменной $a равно “Привет”, то выход “Да”, в противном случае – выход “Нет”.
$Result > 5, то есть, если значение переменной $Result меньше 5, то выход “Да”, в противном случае – выход “Нет”.
- Блок “Закрыть документ” позволяет закрыть Excel-документ. Для данного блока указаны следующие свойства:
- Ссылка на Excel (возвращает ссылку на процесс обработки Excel-документа);
- Ссылка на документ (возвращает ссылку на открытый Excel-документ, в котором в данный момент происходит работа).
- Блоки “Получить значение ячейки” позволяет считать значение из ячейки Excel-документа. В данном случае используется два блока “Получить значение ячейки” для разных строк и столбцов. Для данного блока указаны следующие свойства:
- Ссылка на документ (возвращает ссылку на открытый Excel-документ, в котором в данный момент происходит работа);
- Лист (порядковый номер или название листа, на котором расположена требуемая ячейка);
- Строка (номер строки, на которой расположена требуемая ячейка);
- Столбец (номер столбца, в котором расположена требуемая ячейка);
- Результат (возвращает содержимое ячейки того же типа данных, что и в Excel-документе).
- Блок “Добавить строку” позволяет добавить строку в таблицу данных. Для данного блока указаны следующие свойства:
- Таблица (таблица данных, в которую добавляется строка);
- Номер строки (возвращает номер добавленной строки).
- Блок “Записать в ячейку значение” позволяет записать значение в ячейке таблице данных. В данном случае используется три таких блока для разных столбцов и значений. Для данного блока указаны следующие свойства:
- Таблица (таблица данных, в которую необходимо записать значение);
- Строка (номер строки);
- Столбец (номер столбца, нумерация начинается с 0);
- Значение (значение, которое необходимо записать).
- Блок “Выполнить выражение” запускает выполнение одного или нескольких выражений на языке, совместимом с PowerShell. В данном случае используются В данном случае используется одно выражение.
- Блок “Конец” (этим блоком завершается работа сценария или возврат диаграммы подпроцесса в основной процесс).
Диаграмма “ДобавлениеНакладной”
- Блок “Старт” (с этого блока начинается любая диаграмма).
- Блок “Лог” позволяет выводить в лог произвольные сообщения и/или значения переменных в процессе работы сценария робота. Для данного блока указано свойство “Значение”. Здесь данный блок записывает в лог робота сообщение “Добавляем накладную”.
- Блок “Считать файл” позволяет считать содержимое текстового файла в переменную. Для данного блока указаны следующие свойства:
- Имя файла (имя текстового файла, содержимое которого необходимо считать);
- Кодировка (кодировка файла);
- Результат (возвращает содержимое файла).
- Блок “Замена подстроки” позволяет заменить в тексте одну подстроку другой. В данном случае используется два блока “Замена подстроки”: для “Заказчика” и для “Поставщика”. Для данных блоков указаны следующие свойства:
- Текст (входная строка);
- Искомая подстрока (строка, которую требуется заменить);
- Вставляемая подстрока (строка для замены всех вхождений искомой подстроки);
- Результат (новая строка,в которой все вхождения заданной строки заменены другой заданной строкой).
- Блок “Цикл для каждого” циклично перебирает все строки таблицы данных.
- Блок “Соединить текст” позволяет соединить все элементы строк, помещая между ними заданный разделитель. Для данного блока указаны следующие свойства:
- Список частей текста (список строк, которые необходимо соединить в текстовую строку);
- Разделитель (текст, используемый в качестве разделителя);
- Новая строка (установленный флаг, включает функцию, при которой в качестве разделителя будет использоваться новая строка);
- Результат (результирующая строка).
- Блок “Замена подстроки” позволяет заменить в тексте одну подстроку другой. Для данного блока указаны следующие свойства:
- Текст (входная строка);
- Искомая подстрока (строка, которую требуется заменить);
- Вставляемая подстрока (строка для замены всех вхождений искомой подстроки);
- Результат (новая строка, в которой все вхождения заданной строки заменены другой заданной строкой).
- Блок “Подключиться” позволяет создать подключение. Для данного блока указаны следующие свойства:
- Строка подключения (строка подключения к 1C);
- Пользователь (имя пользователя для авторизации);
- Пароль (пароль для авторизации);
- Видимость (установленный флаг включает видимость окна 1C пользователя);
- Соединение (возвращает объект подключения к 1C).
- Блок “Выполнить код” позволяет запустить на исполнение код на сервере. Для данного блока указаны следующие свойства:
- Соединение (объект подключения к 1C);
- Запрос (выполняемый запрос на языке 1C).
- Блок “Закрыть соединение” позволяет закрыть соединение с сервером 1C. Для данного блока указано свойство “Соединение” (объект подключения к 1C).
- Блок “Лог” позволяет выводить в лог произвольные сообщения и/или значения переменных в процессе работы сценария робота. Для данного блока указано свойство “Значение": $ErrorMassage. Т. е., в лог робота выводится сообщение об ошибке.
- Блок “Выполнить выражение” запускает выполнение одного или нескольких выражений на языке, совместимом с PowerShell. В данном случае используются два выражения.
- Блок “Добавить элемент в список” позволяет добавить в конец списка указанный элемент. Для данного блока указаны следующие свойства:
- Список (список, в который необходимо добавить новый элемент);
- Элемент (константа, переменная или результат вычислений, которые необходимо добавить в список).
- Блок “Выполнить выражение” запускает выполнение одного или нескольких выражений на языке, совместимом с PowerShell. В данном случае используются два выражения.
- Блок “Добавить элемент в список” позволяет добавить в конец списка указанный элемент. Для данного блока указаны следующие свойства:
- Список (список, в который необходимо добавить новый элемент);
- Элемент (константа, переменная или результат вычислений, которые необходимо добавить в список).
- Блок “Выполнить выражение” запускает выполнение одного или нескольких выражений на языке, совместимом с PowerShell. В данном случае используются два выражения.
- Блок “Добавить элемент в список” позволяет добавить в конец списка указанный элемент. Для данного блока указаны следующие свойства:
- Список (список, в который необходимо добавить новый элемент);
- Элемент (константа, переменная или результат вычислений, которые необходимо добавить в список).
18. и 19. Блок “Конец” (этим блоком завершается работа сценария или возврат диаграммы подпроцесса в основной процесс).