1С Приходная накладная (COM)
Last updated
Last updated
Рассмотрим пример робота, который создает приходную накладную в программе 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. Блок “Конец” (этим блоком завершается работа сценария или возврат диаграммы подпроцесса в основной процесс).